xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/stm32f7-pinctrl.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
4*4882a593Smuzhiyun * Author: Alexandre Torgue  <alexandre.torgue@st.com> for STMicroelectronics.
5*4882a593Smuzhiyun */
6*4882a593Smuzhiyun
7*4882a593Smuzhiyun#include <dt-bindings/pinctrl/stm32-pinfunc.h>
8*4882a593Smuzhiyun#include <dt-bindings/mfd/stm32f7-rcc.h>
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun/ {
11*4882a593Smuzhiyun	soc {
12*4882a593Smuzhiyun		pinctrl: pin-controller {
13*4882a593Smuzhiyun			#address-cells = <1>;
14*4882a593Smuzhiyun			#size-cells = <1>;
15*4882a593Smuzhiyun			ranges = <0 0x40020000 0x3000>;
16*4882a593Smuzhiyun			interrupt-parent = <&exti>;
17*4882a593Smuzhiyun			st,syscfg = <&syscfg 0x8>;
18*4882a593Smuzhiyun			pins-are-numbered;
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun			gpioa: gpio@40020000 {
21*4882a593Smuzhiyun				gpio-controller;
22*4882a593Smuzhiyun				#gpio-cells = <2>;
23*4882a593Smuzhiyun				interrupt-controller;
24*4882a593Smuzhiyun				#interrupt-cells = <2>;
25*4882a593Smuzhiyun				reg = <0x0 0x400>;
26*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>;
27*4882a593Smuzhiyun				st,bank-name = "GPIOA";
28*4882a593Smuzhiyun			};
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun			gpiob: gpio@40020400 {
31*4882a593Smuzhiyun				gpio-controller;
32*4882a593Smuzhiyun				#gpio-cells = <2>;
33*4882a593Smuzhiyun				interrupt-controller;
34*4882a593Smuzhiyun				#interrupt-cells = <2>;
35*4882a593Smuzhiyun				reg = <0x400 0x400>;
36*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>;
37*4882a593Smuzhiyun				st,bank-name = "GPIOB";
38*4882a593Smuzhiyun			};
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun			gpioc: gpio@40020800 {
41*4882a593Smuzhiyun				gpio-controller;
42*4882a593Smuzhiyun				#gpio-cells = <2>;
43*4882a593Smuzhiyun				interrupt-controller;
44*4882a593Smuzhiyun				#interrupt-cells = <2>;
45*4882a593Smuzhiyun				reg = <0x800 0x400>;
46*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>;
47*4882a593Smuzhiyun				st,bank-name = "GPIOC";
48*4882a593Smuzhiyun			};
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun			gpiod: gpio@40020c00 {
51*4882a593Smuzhiyun				gpio-controller;
52*4882a593Smuzhiyun				#gpio-cells = <2>;
53*4882a593Smuzhiyun				interrupt-controller;
54*4882a593Smuzhiyun				#interrupt-cells = <2>;
55*4882a593Smuzhiyun				reg = <0xc00 0x400>;
56*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>;
57*4882a593Smuzhiyun				st,bank-name = "GPIOD";
58*4882a593Smuzhiyun			};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun			gpioe: gpio@40021000 {
61*4882a593Smuzhiyun				gpio-controller;
62*4882a593Smuzhiyun				#gpio-cells = <2>;
63*4882a593Smuzhiyun				interrupt-controller;
64*4882a593Smuzhiyun				#interrupt-cells = <2>;
65*4882a593Smuzhiyun				reg = <0x1000 0x400>;
66*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>;
67*4882a593Smuzhiyun				st,bank-name = "GPIOE";
68*4882a593Smuzhiyun			};
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun			gpiof: gpio@40021400 {
71*4882a593Smuzhiyun				gpio-controller;
72*4882a593Smuzhiyun				#gpio-cells = <2>;
73*4882a593Smuzhiyun				interrupt-controller;
74*4882a593Smuzhiyun				#interrupt-cells = <2>;
75*4882a593Smuzhiyun				reg = <0x1400 0x400>;
76*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>;
77*4882a593Smuzhiyun				st,bank-name = "GPIOF";
78*4882a593Smuzhiyun			};
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun			gpiog: gpio@40021800 {
81*4882a593Smuzhiyun				gpio-controller;
82*4882a593Smuzhiyun				#gpio-cells = <2>;
83*4882a593Smuzhiyun				interrupt-controller;
84*4882a593Smuzhiyun				#interrupt-cells = <2>;
85*4882a593Smuzhiyun				reg = <0x1800 0x400>;
86*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>;
87*4882a593Smuzhiyun				st,bank-name = "GPIOG";
88*4882a593Smuzhiyun			};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun			gpioh: gpio@40021c00 {
91*4882a593Smuzhiyun				gpio-controller;
92*4882a593Smuzhiyun				#gpio-cells = <2>;
93*4882a593Smuzhiyun				interrupt-controller;
94*4882a593Smuzhiyun				#interrupt-cells = <2>;
95*4882a593Smuzhiyun				reg = <0x1c00 0x400>;
96*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>;
97*4882a593Smuzhiyun				st,bank-name = "GPIOH";
98*4882a593Smuzhiyun			};
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun			gpioi: gpio@40022000 {
101*4882a593Smuzhiyun				gpio-controller;
102*4882a593Smuzhiyun				#gpio-cells = <2>;
103*4882a593Smuzhiyun				interrupt-controller;
104*4882a593Smuzhiyun				#interrupt-cells = <2>;
105*4882a593Smuzhiyun				reg = <0x2000 0x400>;
106*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>;
107*4882a593Smuzhiyun				st,bank-name = "GPIOI";
108*4882a593Smuzhiyun			};
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun			gpioj: gpio@40022400 {
111*4882a593Smuzhiyun				gpio-controller;
112*4882a593Smuzhiyun				#gpio-cells = <2>;
113*4882a593Smuzhiyun				interrupt-controller;
114*4882a593Smuzhiyun				#interrupt-cells = <2>;
115*4882a593Smuzhiyun				reg = <0x2400 0x400>;
116*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>;
117*4882a593Smuzhiyun				st,bank-name = "GPIOJ";
118*4882a593Smuzhiyun			};
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun			gpiok: gpio@40022800 {
121*4882a593Smuzhiyun				gpio-controller;
122*4882a593Smuzhiyun				#gpio-cells = <2>;
123*4882a593Smuzhiyun				interrupt-controller;
124*4882a593Smuzhiyun				#interrupt-cells = <2>;
125*4882a593Smuzhiyun				reg = <0x2800 0x400>;
126*4882a593Smuzhiyun				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>;
127*4882a593Smuzhiyun				st,bank-name = "GPIOK";
128*4882a593Smuzhiyun			};
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun			cec_pins_a: cec-0 {
131*4882a593Smuzhiyun				pins {
132*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('A', 15, AF4)>; /* HDMI CEC */
133*4882a593Smuzhiyun					slew-rate = <0>;
134*4882a593Smuzhiyun					drive-open-drain;
135*4882a593Smuzhiyun					bias-disable;
136*4882a593Smuzhiyun				};
137*4882a593Smuzhiyun			};
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun			usart1_pins_a: usart1-0 {
140*4882a593Smuzhiyun				pins1 {
141*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
142*4882a593Smuzhiyun					bias-disable;
143*4882a593Smuzhiyun					drive-push-pull;
144*4882a593Smuzhiyun					slew-rate = <0>;
145*4882a593Smuzhiyun				};
146*4882a593Smuzhiyun				pins2 {
147*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
148*4882a593Smuzhiyun					bias-disable;
149*4882a593Smuzhiyun				};
150*4882a593Smuzhiyun			};
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun			usart1_pins_b: usart1-1 {
153*4882a593Smuzhiyun				pins1 {
154*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
155*4882a593Smuzhiyun					bias-disable;
156*4882a593Smuzhiyun					drive-push-pull;
157*4882a593Smuzhiyun					slew-rate = <0>;
158*4882a593Smuzhiyun				};
159*4882a593Smuzhiyun				pins2 {
160*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 7, AF7)>; /* USART1_RX */
161*4882a593Smuzhiyun					bias-disable;
162*4882a593Smuzhiyun				};
163*4882a593Smuzhiyun			};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun			i2c1_pins_b: i2c1-0 {
166*4882a593Smuzhiyun				pins {
167*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1 SDA */
168*4882a593Smuzhiyun						 <STM32_PINMUX('B', 8, AF4)>; /* I2C1 SCL */
169*4882a593Smuzhiyun					bias-disable;
170*4882a593Smuzhiyun					drive-open-drain;
171*4882a593Smuzhiyun					slew-rate = <0>;
172*4882a593Smuzhiyun				};
173*4882a593Smuzhiyun			};
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun			usbotg_hs_pins_a: usbotg-hs-0 {
176*4882a593Smuzhiyun				pins {
177*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
178*4882a593Smuzhiyun						 <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */
179*4882a593Smuzhiyun						 <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
180*4882a593Smuzhiyun						 <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
181*4882a593Smuzhiyun						 <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
182*4882a593Smuzhiyun						 <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
183*4882a593Smuzhiyun						 <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
184*4882a593Smuzhiyun						 <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
185*4882a593Smuzhiyun						 <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
186*4882a593Smuzhiyun						 <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
187*4882a593Smuzhiyun						 <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
188*4882a593Smuzhiyun						 <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
189*4882a593Smuzhiyun					bias-disable;
190*4882a593Smuzhiyun					drive-push-pull;
191*4882a593Smuzhiyun					slew-rate = <2>;
192*4882a593Smuzhiyun				};
193*4882a593Smuzhiyun			};
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun			usbotg_hs_pins_b: usbotg-hs-1 {
196*4882a593Smuzhiyun				pins {
197*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
198*4882a593Smuzhiyun						 <STM32_PINMUX('C', 2, AF10)>, /* OTG_HS_ULPI_DIR */
199*4882a593Smuzhiyun						 <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
200*4882a593Smuzhiyun						 <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
201*4882a593Smuzhiyun						 <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
202*4882a593Smuzhiyun						 <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
203*4882a593Smuzhiyun						 <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
204*4882a593Smuzhiyun						 <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
205*4882a593Smuzhiyun						 <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
206*4882a593Smuzhiyun						 <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
207*4882a593Smuzhiyun						 <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
208*4882a593Smuzhiyun						 <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
209*4882a593Smuzhiyun					bias-disable;
210*4882a593Smuzhiyun					drive-push-pull;
211*4882a593Smuzhiyun					slew-rate = <2>;
212*4882a593Smuzhiyun				};
213*4882a593Smuzhiyun			};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun			usbotg_fs_pins_a: usbotg-fs-0 {
216*4882a593Smuzhiyun				pins {
217*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */
218*4882a593Smuzhiyun						 <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */
219*4882a593Smuzhiyun						 <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */
220*4882a593Smuzhiyun					bias-disable;
221*4882a593Smuzhiyun					drive-push-pull;
222*4882a593Smuzhiyun					slew-rate = <2>;
223*4882a593Smuzhiyun				};
224*4882a593Smuzhiyun			};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun			sdio_pins_a: sdio-pins-a-0 {
227*4882a593Smuzhiyun				pins {
228*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
229*4882a593Smuzhiyun						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
230*4882a593Smuzhiyun						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
231*4882a593Smuzhiyun						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
232*4882a593Smuzhiyun						 <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1 CLK */
233*4882a593Smuzhiyun						 <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
234*4882a593Smuzhiyun					drive-push-pull;
235*4882a593Smuzhiyun					slew-rate = <2>;
236*4882a593Smuzhiyun				};
237*4882a593Smuzhiyun			};
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun			sdio_pins_od_a: sdio-pins-od-a-0 {
240*4882a593Smuzhiyun				pins1 {
241*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
242*4882a593Smuzhiyun						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
243*4882a593Smuzhiyun						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
244*4882a593Smuzhiyun						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
245*4882a593Smuzhiyun						 <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1 CLK */
246*4882a593Smuzhiyun					drive-push-pull;
247*4882a593Smuzhiyun					slew-rate = <2>;
248*4882a593Smuzhiyun				};
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun				pins2 {
251*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
252*4882a593Smuzhiyun					drive-open-drain;
253*4882a593Smuzhiyun					slew-rate = <2>;
254*4882a593Smuzhiyun				};
255*4882a593Smuzhiyun			};
256*4882a593Smuzhiyun
257*4882a593Smuzhiyun			sdio_pins_b: sdio-pins-b-0 {
258*4882a593Smuzhiyun				pins {
259*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
260*4882a593Smuzhiyun						 <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
261*4882a593Smuzhiyun						 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
262*4882a593Smuzhiyun						 <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
263*4882a593Smuzhiyun						 <STM32_PINMUX('D', 6, AF11)>, /* SDMMC2 CLK */
264*4882a593Smuzhiyun						 <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
265*4882a593Smuzhiyun					drive-push-pull;
266*4882a593Smuzhiyun					slew-rate = <2>;
267*4882a593Smuzhiyun				};
268*4882a593Smuzhiyun			};
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun			sdio_pins_od_b: sdio-pins-od-b-0 {
271*4882a593Smuzhiyun				pins1 {
272*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
273*4882a593Smuzhiyun						 <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
274*4882a593Smuzhiyun						 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
275*4882a593Smuzhiyun						 <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
276*4882a593Smuzhiyun						 <STM32_PINMUX('D', 6, AF11)>; /* SDMMC2 CLK */
277*4882a593Smuzhiyun					drive-push-pull;
278*4882a593Smuzhiyun					slew-rate = <2>;
279*4882a593Smuzhiyun				};
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun				pins2 {
282*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
283*4882a593Smuzhiyun					drive-open-drain;
284*4882a593Smuzhiyun					slew-rate = <2>;
285*4882a593Smuzhiyun				};
286*4882a593Smuzhiyun			};
287*4882a593Smuzhiyun		};
288*4882a593Smuzhiyun	};
289*4882a593Smuzhiyun};
290