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

From: Dmitry Baryshkov

Date: Fri Feb 27 2026 - 15:03:22 EST


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@xxxxxxxxxxxxxxxx>
> ---
> 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