[PATCH V1 2/2] arm64: dts: qcom: lemans-evk: Add SDHCI support for eMMC via overlay

From: Monish Chunara

Date: Fri Feb 27 2026 - 05:25:13 EST


Enable the SDHCI controller for eMMC functionality on the lemans EVK
using a device tree overlay. Configure the corresponding addresse space
and resources for eMMC.

Signed-off-by: Monish Chunara <monish.chunara@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/Makefile | 3 +
arch/arm64/boot/dts/qcom/lemans-evk-emmc.dtso | 64 +++++++++++++++++++
arch/arm64/boot/dts/qcom/lemans.dtsi | 10 ++-
3 files changed, 74 insertions(+), 3 deletions(-)
create mode 100644 arch/arm64/boot/dts/qcom/lemans-evk-emmc.dtso

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index e5ea8de55df7..5f5fcbef81d4 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -35,6 +35,9 @@ dtb-$(CONFIG_ARCH_QCOM) += kaanapali-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += kaanapali-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += lemans-evk.dtb

+lemans-evk-emmc-dtbs := lemans-evk.dtb lemans-evk-emmc.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-emmc.dtb
+
lemans-evk-sd-card-dtbs := lemans-evk.dtb lemans-evk-sd-card.dtbo
dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-sd-card.dtb

diff --git a/arch/arm64/boot/dts/qcom/lemans-evk-emmc.dtso b/arch/arm64/boot/dts/qcom/lemans-evk-emmc.dtso
new file mode 100644
index 000000000000..52739d39a1ff
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/lemans-evk-emmc.dtso
@@ -0,0 +1,64 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/qcom,rpmh.h>
+#include <dt-bindings/clock/qcom,sa8775p-gcc.h>
+
+/ {
+ vmmc_sdc1: regulator-l8c {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg-sdc1";
+
+ regulator-min-microvolt = <2960000>;
+ regulator-max-microvolt = <2960000>;
+ };
+
+ vqmmc_sdc1: regulator-s4a {
+ compatible = "regulator-fixed";
+ regulator-name = "vqmmc-sdc1";
+
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+};
+
+&sdhc {
+ vmmc-supply = <&vmmc_sdc1>;
+ vqmmc-supply = <&vqmmc_sdc1>;
+
+ pinctrl-0 = <&sdc_default>, <&sdc_rclk>;
+ pinctrl-1 = <&sdc_sleep>, <&sdc_rclk_sleep>;
+
+ pinctrl-names = "default", "sleep";
+
+ supports-cqe;
+ non-removable;
+
+ qcom,dll-config = <0x000F64EC>;
+ max-frequency = <50000000>;
+
+ bus-width = <8>;
+ no-sd;
+ no-sdio;
+
+ status = "okay";
+};
+
+&tlmm {
+ sdc_rclk: sdc1-rclk-state {
+ pins = "sdc1_rclk";
+ bias-pull-down;
+ };
+
+ sdc_rclk_sleep: sdc1-rclk-sleep-state {
+ pins = "sdc1_rclk";
+ drive-strength = <2>;
+ bias-bus-hold;
+ };
+};
diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi
index 808827b83553..23d48f901e08 100644
--- a/arch/arm64/boot/dts/qcom/lemans.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans.dtsi
@@ -3953,7 +3953,9 @@ apss_tpdm2_out: endpoint {

sdhc: mmc@87c4000 {
compatible = "qcom,sa8775p-sdhci", "qcom,sdhci-msm-v5";
- reg = <0x0 0x087c4000 0x0 0x1000>;
+ reg = <0x0 0x87C4000 0x0 0x1000>,
+ <0x0 0x87C5000 0x0 0x1000>;
+ reg-names = "hc", "cqhci";

interrupts = <GIC_SPI 383 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 521 IRQ_TYPE_LEVEL_HIGH>;
@@ -3961,9 +3963,11 @@ sdhc: mmc@87c4000 {
"pwr_irq";

clocks = <&gcc GCC_SDCC1_AHB_CLK>,
- <&gcc GCC_SDCC1_APPS_CLK>;
+ <&gcc GCC_SDCC1_APPS_CLK>,
+ <&rpmhcc RPMH_CXO_CLK>;
clock-names = "iface",
- "core";
+ "core",
+ "xo";

interconnects = <&aggre1_noc MASTER_SDC QCOM_ICC_TAG_ALWAYS
&mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
--
2.34.1