From 872575cb4c542418f32b752cd7e20cd2818197d0 Mon Sep 17 00:00:00 2001 From: zjzhao Date: Wed, 1 Jul 2026 18:23:21 +0800 Subject: [PATCH] overlays: sdhost: Add gpios_22_27 parameter Add a new optional parameter to the sdhost overlay: - gpios_22_27: Routes the SD0 interface to GPIO 22-27 (CLK, CMD, DAT0-3) using ALT0 function, with appropriate pull configuration (CLK: no pull, CMD/DAT: pull-up). This allows custom CM4 carrier boards to use a secondary SD card slot wired to these pins. The parameter is implemented as dormant fragments and has no effect unless explicitly activated, preserving full backward compatibility with existing configurations. Tested on CM4 carrier board (EDATEC IPC2100) with: dtoverlay=sdhost,gpios_22_27=on,pio_limit=1 Signed-off-by: zjzhao --- arch/arm/boot/dts/overlays/README | 5 +++++ arch/arm/boot/dts/overlays/sdhost-overlay.dts | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README index 17c608e1e9cf59..fd2c2e65d1ce57 100644 --- a/arch/arm/boot/dts/overlays/README +++ b/arch/arm/boot/dts/overlays/README @@ -4737,6 +4737,11 @@ Params: overclock_50 Clock (in MHz) to use when the MMC framework debug Enable debug output (default off) + gpios_22_27 Route SD0 to GPIO 22-27 (CLK, CMD, DAT0-3) + for use with a secondary SD card slot on + custom carrier boards (e.g. CM4 baseboard). + Applies ALT0 function and appropriate pulls. + Name: sdio Info: Selects the bcm2835-sdhost SD/MMC driver, optionally with overclock, diff --git a/arch/arm/boot/dts/overlays/sdhost-overlay.dts b/arch/arm/boot/dts/overlays/sdhost-overlay.dts index 0b72b4eeac8877..8a539dc92c0422 100644 --- a/arch/arm/boot/dts/overlays/sdhost-overlay.dts +++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts @@ -29,10 +29,30 @@ }; }; + fragment@3 { + target = <&gpio>; + __dormant__ { + sdhost_gpio_22_27: sdhost_gpio_22_27 { + brcm,pins = <22 23 24 25 26 27>; + brcm,function = <4>; + brcm,pull = <0 2 2 2 2 2>; + }; + }; + }; + + fragment@4 { + target = <&sdhost>; + __dormant__ { + pinctrl-names = "default"; + pinctrl-0 = <&sdhost_gpio_22_27>; + }; + }; + __overrides__ { overclock_50 = <&frag0>,"brcm,overclock-50:0"; force_pio = <&frag0>,"brcm,force-pio?"; pio_limit = <&frag0>,"brcm,pio-limit:0"; debug = <&frag0>,"brcm,debug?"; + gpios_22_27 = <0>,"+3+4"; }; };