[PATCH 2/3] arm64: dts: qcom: monaco-evk: Enable SDHCI for SD Card via overlay

Monish Chunara posted 3 patches 1 month, 1 week ago
[PATCH 2/3] arm64: dts: qcom: monaco-evk: Enable SDHCI for SD Card via overlay
Posted by Monish Chunara 1 month, 1 week ago
The monaco EVK board supports either eMMC or SD-card, but only one
can be active at a time.

Enable the SD Host Controller Interface (SDHCI) on the monaco EVK board
to support SD Card for storage via a device tree overlay. This allows
eMMC support to be enabled through a separate overlay when required.

Signed-off-by: Monish Chunara <monish.chunara@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/Makefile             |  4 ++
 .../boot/dts/qcom/monaco-evk-sd-card.dtso     | 72 +++++++++++++++++++
 2 files changed, 76 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 317af937d038..c86242a1631d 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -46,6 +46,10 @@ lemans-evk-el2-dtbs := lemans-evk.dtb lemans-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-el2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= milos-fairphone-fp6.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= monaco-evk.dtb
+
+monaco-evk-sd-card-dtbs := monaco-evk.dtb monaco-evk-sd-card.dtbo
+dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-sd-card.dtb
+
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8216-samsung-fortuna3g.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-acer-a1-724.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-alcatel-idol347.dtb
diff --git a/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
new file mode 100644
index 000000000000..a0bc5c47d40b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+        vmmc_sdc: regulator-dummy {
+                compatible = "regulator-fixed";
+
+                regulator-name = "vmmc_sdc";
+                regulator-min-microvolt = <2950000>;
+                regulator-max-microvolt = <2950000>;
+        };
+
+        vreg_sdc: regulator-sdc {
+		compatible = "regulator-gpio";
+
+		regulator-name = "vreg_sdc";
+		regulator-type = "voltage";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <2950000>;
+
+		gpios = <&expander1 7 GPIO_ACTIVE_HIGH>;
+		states = <1800000 1>, <2950000 0>;
+
+		startup-delay-us = <100>;
+        };
+};
+
+&sdhc_1 {
+	vmmc-supply = <&vmmc_sdc>;
+	vqmmc-supply = <&vreg_sdc>;
+
+	pinctrl-0 = <&sdc1_state_on>, <&sd_cd>;
+	pinctrl-1 = <&sdc1_state_off>, <&sd_cd>;
+	pinctrl-names = "default", "sleep";
+
+	cap-sd-highspeed;
+	no-1-8-v;
+
+	bus-width = <4>;
+	cd-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
+	no-mmc;
+	no-sdio;
+
+	status = "okay";
+};
+
+&sdhc1_opp_table {
+	opp-100000000 {
+		opp-hz = /bits/ 64 <100000000>;
+		required-opps = <&rpmhpd_opp_low_svs>;
+	};
+
+	opp-202000000 {
+		opp-hz = /bits/ 64 <202000000>;
+		required-opps = <&rpmhpd_opp_svs_l1>;
+	};
+};
+
+&tlmm {
+        sd_cd: sd-cd-state {
+                pins = "gpio11";
+                function = "gpio";
+                bias-pull-up;
+        };
+};
-- 
2.34.1
Re: [PATCH 2/3] arm64: dts: qcom: monaco-evk: Enable SDHCI for SD Card via overlay
Posted by Dmitry Baryshkov 1 month, 1 week ago
On Fri, Feb 27, 2026 at 04:20:54PM +0530, Monish Chunara wrote:
> The monaco EVK board supports either eMMC or SD-card, but only one
> can be active at a time.
> 
> Enable the SD Host Controller Interface (SDHCI) on the monaco EVK board
> to support SD Card for storage via a device tree overlay. This allows
> eMMC support to be enabled through a separate overlay when required.
> 
> Signed-off-by: Monish Chunara <monish.chunara@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |  4 ++
>  .../boot/dts/qcom/monaco-evk-sd-card.dtso     | 72 +++++++++++++++++++
>  2 files changed, 76 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 317af937d038..c86242a1631d 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -46,6 +46,10 @@ lemans-evk-el2-dtbs := lemans-evk.dtb lemans-el2.dtbo
>  dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-el2.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= milos-fairphone-fp6.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= monaco-evk.dtb
> +
> +monaco-evk-sd-card-dtbs := monaco-evk.dtb monaco-evk-sd-card.dtbo
> +dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-sd-card.dtb
> +
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8216-samsung-fortuna3g.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-acer-a1-724.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-alcatel-idol347.dtb
> diff --git a/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> new file mode 100644
> index 000000000000..a0bc5c47d40b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> @@ -0,0 +1,72 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +        vmmc_sdc: regulator-dummy {

No dummy regulators, please.

> +                compatible = "regulator-fixed";
> +
> +                regulator-name = "vmmc_sdc";
> +                regulator-min-microvolt = <2950000>;
> +                regulator-max-microvolt = <2950000>;
> +        };
> +
> +        vreg_sdc: regulator-sdc {
> +		compatible = "regulator-gpio";
> +
> +		regulator-name = "vreg_sdc";
> +		regulator-type = "voltage";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <2950000>;
> +
> +		gpios = <&expander1 7 GPIO_ACTIVE_HIGH>;
> +		states = <1800000 1>, <2950000 0>;
> +
> +		startup-delay-us = <100>;
> +        };
> +};
> +
> +&sdhc_1 {
> +	vmmc-supply = <&vmmc_sdc>;
> +	vqmmc-supply = <&vreg_sdc>;
> +
> +	pinctrl-0 = <&sdc1_state_on>, <&sd_cd>;
> +	pinctrl-1 = <&sdc1_state_off>, <&sd_cd>;
> +	pinctrl-names = "default", "sleep";
> +
> +	cap-sd-highspeed;
> +	no-1-8-v;
> +
> +	bus-width = <4>;
> +	cd-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
> +	no-mmc;
> +	no-sdio;
> +
> +	status = "okay";
> +};
> +
> +&sdhc1_opp_table {

Why? Is it specific to the device or to the chip? In the latter case,
please define a separate table in the monaco.dtsi and switch to it here.

> +	opp-100000000 {
> +		opp-hz = /bits/ 64 <100000000>;
> +		required-opps = <&rpmhpd_opp_low_svs>;
> +	};
> +
> +	opp-202000000 {
> +		opp-hz = /bits/ 64 <202000000>;
> +		required-opps = <&rpmhpd_opp_svs_l1>;
> +	};
> +};
> +
> +&tlmm {
> +        sd_cd: sd-cd-state {
> +                pins = "gpio11";
> +                function = "gpio";
> +                bias-pull-up;
> +        };
> +};
> -- 
> 2.34.1
> 

-- 
With best wishes
Dmitry
Re: [PATCH 2/3] arm64: dts: qcom: monaco-evk: Enable SDHCI for SD Card via overlay
Posted by Monish Chunara 1 month ago
On Fri, Feb 27, 2026 at 10:03:10PM +0200, Dmitry Baryshkov wrote:
> On Fri, Feb 27, 2026 at 04:20:54PM +0530, Monish Chunara wrote:
> > The monaco EVK board supports either eMMC or SD-card, but only one
> > can be active at a time.
> > 
> > Enable the SD Host Controller Interface (SDHCI) on the monaco EVK board
> > to support SD Card for storage via a device tree overlay. This allows
> > eMMC support to be enabled through a separate overlay when required.
> > 
> > Signed-off-by: Monish Chunara <monish.chunara@oss.qualcomm.com>
> > ---
> >  arch/arm64/boot/dts/qcom/Makefile             |  4 ++
> >  .../boot/dts/qcom/monaco-evk-sd-card.dtso     | 72 +++++++++++++++++++
> >  2 files changed, 76 insertions(+)
> >  create mode 100644 arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> > 
> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> > index 317af937d038..c86242a1631d 100644
> > --- a/arch/arm64/boot/dts/qcom/Makefile
> > +++ b/arch/arm64/boot/dts/qcom/Makefile
> > @@ -46,6 +46,10 @@ lemans-evk-el2-dtbs := lemans-evk.dtb lemans-el2.dtbo
> >  dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-el2.dtb
> >  dtb-$(CONFIG_ARCH_QCOM)	+= milos-fairphone-fp6.dtb
> >  dtb-$(CONFIG_ARCH_QCOM)	+= monaco-evk.dtb
> > +
> > +monaco-evk-sd-card-dtbs := monaco-evk.dtb monaco-evk-sd-card.dtbo
> > +dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-sd-card.dtb
> > +
> >  dtb-$(CONFIG_ARCH_QCOM)	+= msm8216-samsung-fortuna3g.dtb
> >  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-acer-a1-724.dtb
> >  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-alcatel-idol347.dtb
> > diff --git a/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> > new file mode 100644
> > index 000000000000..a0bc5c47d40b
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
> > @@ -0,0 +1,72 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> > + */
> > +
> > +/dts-v1/;
> > +/plugin/;
> > +
> > +#include <dt-bindings/gpio/gpio.h>
> > +
> > +/ {
> > +        vmmc_sdc: regulator-dummy {
> 
> No dummy regulators, please.

ACK, these will be renamed as per the schematic. Since these are direct supplies
on hardware, used fixed-regulator configuration.

> 
> > +                compatible = "regulator-fixed";
> > +
> > +                regulator-name = "vmmc_sdc";
> > +                regulator-min-microvolt = <2950000>;
> > +                regulator-max-microvolt = <2950000>;
> > +        };
> > +
> > +        vreg_sdc: regulator-sdc {
> > +		compatible = "regulator-gpio";
> > +
> > +		regulator-name = "vreg_sdc";
> > +		regulator-type = "voltage";
> > +		regulator-min-microvolt = <1800000>;
> > +		regulator-max-microvolt = <2950000>;
> > +
> > +		gpios = <&expander1 7 GPIO_ACTIVE_HIGH>;
> > +		states = <1800000 1>, <2950000 0>;
> > +
> > +		startup-delay-us = <100>;
> > +        };
> > +};
> > +
> > +&sdhc_1 {
> > +	vmmc-supply = <&vmmc_sdc>;
> > +	vqmmc-supply = <&vreg_sdc>;
> > +
> > +	pinctrl-0 = <&sdc1_state_on>, <&sd_cd>;
> > +	pinctrl-1 = <&sdc1_state_off>, <&sd_cd>;
> > +	pinctrl-names = "default", "sleep";
> > +
> > +	cap-sd-highspeed;
> > +	no-1-8-v;
> > +
> > +	bus-width = <4>;
> > +	cd-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
> > +	no-mmc;
> > +	no-sdio;
> > +
> > +	status = "okay";
> > +};
> > +
> > +&sdhc1_opp_table {
> 
> Why? Is it specific to the device or to the chip? In the latter case,
> please define a separate table in the monaco.dtsi and switch to it here.
> 

As per the previous review, it was suggested to use an existing table. But yes,
this is specific to the Host controller and the corresponding voltage corners on
the chip and can be defined as a separate entity for SD card use-case.

> > +	opp-100000000 {
> > +		opp-hz = /bits/ 64 <100000000>;
> > +		required-opps = <&rpmhpd_opp_low_svs>;
> > +	};
> > +
> > +	opp-202000000 {
> > +		opp-hz = /bits/ 64 <202000000>;
> > +		required-opps = <&rpmhpd_opp_svs_l1>;
> > +	};
> > +};
> > +
> > +&tlmm {
> > +        sd_cd: sd-cd-state {
> > +                pins = "gpio11";
> > +                function = "gpio";
> > +                bias-pull-up;
> > +        };
> > +};
> > -- 
> > 2.34.1
> > 
> 
> -- 
> With best wishes
> Dmitry

Regards,
Monish
Re: [PATCH 2/3] arm64: dts: qcom: monaco-evk: Enable SDHCI for SD Card via overlay
Posted by Konrad Dybcio 2 weeks, 1 day ago
On 3/2/26 3:24 PM, Monish Chunara wrote:
> On Fri, Feb 27, 2026 at 10:03:10PM +0200, Dmitry Baryshkov wrote:
>> On Fri, Feb 27, 2026 at 04:20:54PM +0530, Monish Chunara wrote:
>>> The monaco EVK board supports either eMMC or SD-card, but only one
>>> can be active at a time.
>>>
>>> Enable the SD Host Controller Interface (SDHCI) on the monaco EVK board
>>> to support SD Card for storage via a device tree overlay. This allows
>>> eMMC support to be enabled through a separate overlay when required.
>>>
>>> Signed-off-by: Monish Chunara <monish.chunara@oss.qualcomm.com>
>>> ---
>>>  arch/arm64/boot/dts/qcom/Makefile             |  4 ++
>>>  .../boot/dts/qcom/monaco-evk-sd-card.dtso     | 72 +++++++++++++++++++
>>>  2 files changed, 76 insertions(+)
>>>  create mode 100644 arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
>>> index 317af937d038..c86242a1631d 100644
>>> --- a/arch/arm64/boot/dts/qcom/Makefile
>>> +++ b/arch/arm64/boot/dts/qcom/Makefile
>>> @@ -46,6 +46,10 @@ lemans-evk-el2-dtbs := lemans-evk.dtb lemans-el2.dtbo
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= lemans-evk-el2.dtb
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= milos-fairphone-fp6.dtb
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= monaco-evk.dtb
>>> +
>>> +monaco-evk-sd-card-dtbs := monaco-evk.dtb monaco-evk-sd-card.dtbo
>>> +dtb-$(CONFIG_ARCH_QCOM) += monaco-evk-sd-card.dtb
>>> +
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8216-samsung-fortuna3g.dtb
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-acer-a1-724.dtb
>>>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-alcatel-idol347.dtb
>>> diff --git a/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
>>> new file mode 100644
>>> index 000000000000..a0bc5c47d40b
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/qcom/monaco-evk-sd-card.dtso
>>> @@ -0,0 +1,72 @@
>>> +// SPDX-License-Identifier: BSD-3-Clause
>>> +/*
>>> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +/plugin/;
>>> +
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +
>>> +/ {
>>> +        vmmc_sdc: regulator-dummy {
>>
>> No dummy regulators, please.
> 
> ACK, these will be renamed as per the schematic. Since these are direct supplies
> on hardware, used fixed-regulator configuration.
> 
>>
>>> +                compatible = "regulator-fixed";
>>> +
>>> +                regulator-name = "vmmc_sdc";
>>> +                regulator-min-microvolt = <2950000>;
>>> +                regulator-max-microvolt = <2950000>;
>>> +        };
>>> +
>>> +        vreg_sdc: regulator-sdc {
>>> +		compatible = "regulator-gpio";
>>> +
>>> +		regulator-name = "vreg_sdc";
>>> +		regulator-type = "voltage";
>>> +		regulator-min-microvolt = <1800000>;
>>> +		regulator-max-microvolt = <2950000>;
>>> +
>>> +		gpios = <&expander1 7 GPIO_ACTIVE_HIGH>;
>>> +		states = <1800000 1>, <2950000 0>;
>>> +
>>> +		startup-delay-us = <100>;
>>> +        };
>>> +};
>>> +
>>> +&sdhc_1 {
>>> +	vmmc-supply = <&vmmc_sdc>;
>>> +	vqmmc-supply = <&vreg_sdc>;
>>> +
>>> +	pinctrl-0 = <&sdc1_state_on>, <&sd_cd>;
>>> +	pinctrl-1 = <&sdc1_state_off>, <&sd_cd>;
>>> +	pinctrl-names = "default", "sleep";
>>> +
>>> +	cap-sd-highspeed;
>>> +	no-1-8-v;
>>> +
>>> +	bus-width = <4>;
>>> +	cd-gpios = <&tlmm 11 GPIO_ACTIVE_LOW>;
>>> +	no-mmc;
>>> +	no-sdio;
>>> +
>>> +	status = "okay";
>>> +};
>>> +
>>> +&sdhc1_opp_table {
>>
>> Why? Is it specific to the device or to the chip? In the latter case,
>> please define a separate table in the monaco.dtsi and switch to it here.
>>
> 
> As per the previous review, it was suggested to use an existing table. But yes,
> this is specific to the Host controller and the corresponding voltage corners on
> the chip and can be defined as a separate entity for SD card use-case.

The SDC programming guide I have access to does not seem to have bene
updated for any recent chips. Are you sure these different corners are
*actually* valid? The clock-side documentation doesn't mention that

Konrad