Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: stm32: add sdmmc1 support on stm32h743i eval board

This patch adds sdmmc1 support on stm32h743i eval board.
This board has an external driver to control signal direction polarity.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com>

authored by

Ludovic Barre and committed by
Alexandre Torgue
90f16fea 61c0f6b8

+90 -1
+68
arch/arm/boot/dts/stm32h743-pinctrl.dtsi
··· 188 188 }; 189 189 }; 190 190 191 + sdmmc1_b4_pins_a: sdmmc1-b4-0 { 192 + pins { 193 + pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */ 194 + <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */ 195 + <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */ 196 + <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */ 197 + <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1_CK */ 198 + <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */ 199 + slew-rate = <3>; 200 + drive-push-pull; 201 + bias-disable; 202 + }; 203 + }; 204 + 205 + sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 { 206 + pins1 { 207 + pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */ 208 + <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */ 209 + <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */ 210 + <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */ 211 + <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */ 212 + slew-rate = <3>; 213 + drive-push-pull; 214 + bias-disable; 215 + }; 216 + pins2{ 217 + pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */ 218 + slew-rate = <3>; 219 + drive-open-drain; 220 + bias-disable; 221 + }; 222 + }; 223 + 224 + sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 { 225 + pins { 226 + pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */ 227 + <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1_D1 */ 228 + <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1_D2 */ 229 + <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1_D3 */ 230 + <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1_CK */ 231 + <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1_CMD */ 232 + }; 233 + }; 234 + 235 + sdmmc1_dir_pins_a: sdmmc1-dir-0 { 236 + pins1 { 237 + pinmux = <STM32_PINMUX('C', 6, AF8)>, /* SDMMC1_D0DIR */ 238 + <STM32_PINMUX('C', 7, AF8)>, /* SDMMC1_D123DIR */ 239 + <STM32_PINMUX('B', 9, AF7)>; /* SDMMC1_CDIR */ 240 + slew-rate = <3>; 241 + drive-push-pull; 242 + bias-pull-up; 243 + }; 244 + pins2{ 245 + pinmux = <STM32_PINMUX('B', 8, AF7)>; /* SDMMC1_CKIN */ 246 + bias-pull-up; 247 + }; 248 + }; 249 + 250 + sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 { 251 + pins { 252 + pinmux = <STM32_PINMUX('C', 6, ANALOG)>, /* SDMMC1_D0DIR */ 253 + <STM32_PINMUX('C', 7, ANALOG)>, /* SDMMC1_D123DIR */ 254 + <STM32_PINMUX('B', 9, ANALOG)>, /* SDMMC1_CDIR */ 255 + <STM32_PINMUX('B', 8, ANALOG)>; /* SDMMC1_CKIN */ 256 + }; 257 + }; 258 + 191 259 usart1_pins: usart1@0 { 192 260 pins1 { 193 261 pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */
+22 -1
arch/arm/boot/dts/stm32h743i-eval.dts
··· 70 70 regulator-always-on; 71 71 }; 72 72 73 + v2v9_sd: regulator-v2v9_sd { 74 + compatible = "regulator-fixed"; 75 + regulator-name = "v2v9_sd"; 76 + regulator-min-microvolt = <2900000>; 77 + regulator-max-microvolt = <2900000>; 78 + regulator-always-on; 79 + }; 80 + 73 81 usbotg_hs_phy: usb-phy { 74 82 #phy-cells = <0>; 75 83 compatible = "usb-nop-xceiv"; 76 84 clocks = <&rcc USB1ULPI_CK>; 77 85 clock-names = "main_clk"; 78 86 }; 79 - 80 87 }; 81 88 82 89 &adc_12 { ··· 127 120 reg = <0>; 128 121 }; 129 122 }; 123 + }; 124 + 125 + &sdmmc1 { 126 + pinctrl-names = "default", "opendrain", "sleep"; 127 + pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>; 128 + pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>; 129 + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>; 130 + broken-cd; 131 + st,sig-dir; 132 + st,neg-edge; 133 + st,use-ckin; 134 + bus-width = <4>; 135 + vmmc-supply = <&v2v9_sd>; 136 + status = "okay"; 130 137 }; 131 138 132 139 &usart1 {