xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/stm32h743-pinctrl.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms
5*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual
6*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a
7*4882a593Smuzhiyun * whole.
8*4882a593Smuzhiyun *
9*4882a593Smuzhiyun *  a) This file is free software; you can redistribute it and/or
10*4882a593Smuzhiyun *     modify it under the terms of the GNU General Public License as
11*4882a593Smuzhiyun *     published by the Free Software Foundation; either version 2 of the
12*4882a593Smuzhiyun *     License, or (at your option) any later version.
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun *     This file is distributed in the hope that it will be useful,
15*4882a593Smuzhiyun *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16*4882a593Smuzhiyun *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17*4882a593Smuzhiyun *     GNU General Public License for more details.
18*4882a593Smuzhiyun *
19*4882a593Smuzhiyun * Or, alternatively,
20*4882a593Smuzhiyun *
21*4882a593Smuzhiyun *  b) Permission is hereby granted, free of charge, to any person
22*4882a593Smuzhiyun *     obtaining a copy of this software and associated documentation
23*4882a593Smuzhiyun *     files (the "Software"), to deal in the Software without
24*4882a593Smuzhiyun *     restriction, including without limitation the rights to use,
25*4882a593Smuzhiyun *     copy, modify, merge, publish, distribute, sublicense, and/or
26*4882a593Smuzhiyun *     sell copies of the Software, and to permit persons to whom the
27*4882a593Smuzhiyun *     Software is furnished to do so, subject to the following
28*4882a593Smuzhiyun *     conditions:
29*4882a593Smuzhiyun *
30*4882a593Smuzhiyun *     The above copyright notice and this permission notice shall be
31*4882a593Smuzhiyun *     included in all copies or substantial portions of the Software.
32*4882a593Smuzhiyun *
33*4882a593Smuzhiyun *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34*4882a593Smuzhiyun *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35*4882a593Smuzhiyun *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36*4882a593Smuzhiyun *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37*4882a593Smuzhiyun *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38*4882a593Smuzhiyun *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39*4882a593Smuzhiyun *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40*4882a593Smuzhiyun *     OTHER DEALINGS IN THE SOFTWARE.
41*4882a593Smuzhiyun */
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun#include <dt-bindings/pinctrl/stm32-pinfunc.h>
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun/ {
46*4882a593Smuzhiyun	soc {
47*4882a593Smuzhiyun		pin-controller {
48*4882a593Smuzhiyun			#address-cells = <1>;
49*4882a593Smuzhiyun			#size-cells = <1>;
50*4882a593Smuzhiyun			compatible = "st,stm32h743-pinctrl";
51*4882a593Smuzhiyun			ranges = <0 0x58020000 0x3000>;
52*4882a593Smuzhiyun			interrupt-parent = <&exti>;
53*4882a593Smuzhiyun			st,syscfg = <&syscfg 0x8>;
54*4882a593Smuzhiyun			pins-are-numbered;
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun			gpioa: gpio@58020000 {
57*4882a593Smuzhiyun				gpio-controller;
58*4882a593Smuzhiyun				#gpio-cells = <2>;
59*4882a593Smuzhiyun				reg = <0x0 0x400>;
60*4882a593Smuzhiyun				clocks = <&rcc GPIOA_CK>;
61*4882a593Smuzhiyun				st,bank-name = "GPIOA";
62*4882a593Smuzhiyun				interrupt-controller;
63*4882a593Smuzhiyun				#interrupt-cells = <2>;
64*4882a593Smuzhiyun			};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun			gpiob: gpio@58020400 {
67*4882a593Smuzhiyun				gpio-controller;
68*4882a593Smuzhiyun				#gpio-cells = <2>;
69*4882a593Smuzhiyun				reg = <0x400 0x400>;
70*4882a593Smuzhiyun				clocks = <&rcc GPIOB_CK>;
71*4882a593Smuzhiyun				st,bank-name = "GPIOB";
72*4882a593Smuzhiyun				interrupt-controller;
73*4882a593Smuzhiyun				#interrupt-cells = <2>;
74*4882a593Smuzhiyun			};
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun			gpioc: gpio@58020800 {
77*4882a593Smuzhiyun				gpio-controller;
78*4882a593Smuzhiyun				#gpio-cells = <2>;
79*4882a593Smuzhiyun				reg = <0x800 0x400>;
80*4882a593Smuzhiyun				clocks = <&rcc GPIOC_CK>;
81*4882a593Smuzhiyun				st,bank-name = "GPIOC";
82*4882a593Smuzhiyun				interrupt-controller;
83*4882a593Smuzhiyun				#interrupt-cells = <2>;
84*4882a593Smuzhiyun			};
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun			gpiod: gpio@58020c00 {
87*4882a593Smuzhiyun				gpio-controller;
88*4882a593Smuzhiyun				#gpio-cells = <2>;
89*4882a593Smuzhiyun				reg = <0xc00 0x400>;
90*4882a593Smuzhiyun				clocks = <&rcc GPIOD_CK>;
91*4882a593Smuzhiyun				st,bank-name = "GPIOD";
92*4882a593Smuzhiyun				interrupt-controller;
93*4882a593Smuzhiyun				#interrupt-cells = <2>;
94*4882a593Smuzhiyun			};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun			gpioe: gpio@58021000 {
97*4882a593Smuzhiyun				gpio-controller;
98*4882a593Smuzhiyun				#gpio-cells = <2>;
99*4882a593Smuzhiyun				reg = <0x1000 0x400>;
100*4882a593Smuzhiyun				clocks = <&rcc GPIOE_CK>;
101*4882a593Smuzhiyun				st,bank-name = "GPIOE";
102*4882a593Smuzhiyun				interrupt-controller;
103*4882a593Smuzhiyun				#interrupt-cells = <2>;
104*4882a593Smuzhiyun			};
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun			gpiof: gpio@58021400 {
107*4882a593Smuzhiyun				gpio-controller;
108*4882a593Smuzhiyun				#gpio-cells = <2>;
109*4882a593Smuzhiyun				reg = <0x1400 0x400>;
110*4882a593Smuzhiyun				clocks = <&rcc GPIOF_CK>;
111*4882a593Smuzhiyun				st,bank-name = "GPIOF";
112*4882a593Smuzhiyun				interrupt-controller;
113*4882a593Smuzhiyun				#interrupt-cells = <2>;
114*4882a593Smuzhiyun			};
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun			gpiog: gpio@58021800 {
117*4882a593Smuzhiyun				gpio-controller;
118*4882a593Smuzhiyun				#gpio-cells = <2>;
119*4882a593Smuzhiyun				reg = <0x1800 0x400>;
120*4882a593Smuzhiyun				clocks = <&rcc GPIOG_CK>;
121*4882a593Smuzhiyun				st,bank-name = "GPIOG";
122*4882a593Smuzhiyun				interrupt-controller;
123*4882a593Smuzhiyun				#interrupt-cells = <2>;
124*4882a593Smuzhiyun			};
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun			gpioh: gpio@58021c00 {
127*4882a593Smuzhiyun				gpio-controller;
128*4882a593Smuzhiyun				#gpio-cells = <2>;
129*4882a593Smuzhiyun				reg = <0x1c00 0x400>;
130*4882a593Smuzhiyun				clocks = <&rcc GPIOH_CK>;
131*4882a593Smuzhiyun				st,bank-name = "GPIOH";
132*4882a593Smuzhiyun				interrupt-controller;
133*4882a593Smuzhiyun				#interrupt-cells = <2>;
134*4882a593Smuzhiyun			};
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun			gpioi: gpio@58022000 {
137*4882a593Smuzhiyun				gpio-controller;
138*4882a593Smuzhiyun				#gpio-cells = <2>;
139*4882a593Smuzhiyun				reg = <0x2000 0x400>;
140*4882a593Smuzhiyun				clocks = <&rcc GPIOI_CK>;
141*4882a593Smuzhiyun				st,bank-name = "GPIOI";
142*4882a593Smuzhiyun				interrupt-controller;
143*4882a593Smuzhiyun				#interrupt-cells = <2>;
144*4882a593Smuzhiyun			};
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun			gpioj: gpio@58022400 {
147*4882a593Smuzhiyun				gpio-controller;
148*4882a593Smuzhiyun				#gpio-cells = <2>;
149*4882a593Smuzhiyun				reg = <0x2400 0x400>;
150*4882a593Smuzhiyun				clocks = <&rcc GPIOJ_CK>;
151*4882a593Smuzhiyun				st,bank-name = "GPIOJ";
152*4882a593Smuzhiyun				interrupt-controller;
153*4882a593Smuzhiyun				#interrupt-cells = <2>;
154*4882a593Smuzhiyun			};
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun			gpiok: gpio@58022800 {
157*4882a593Smuzhiyun				gpio-controller;
158*4882a593Smuzhiyun				#gpio-cells = <2>;
159*4882a593Smuzhiyun				reg = <0x2800 0x400>;
160*4882a593Smuzhiyun				clocks = <&rcc GPIOK_CK>;
161*4882a593Smuzhiyun				st,bank-name = "GPIOK";
162*4882a593Smuzhiyun				interrupt-controller;
163*4882a593Smuzhiyun				#interrupt-cells = <2>;
164*4882a593Smuzhiyun			};
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun			i2c1_pins_a: i2c1-0 {
167*4882a593Smuzhiyun				pins {
168*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 6, AF4)>, /* I2C1_SCL */
169*4882a593Smuzhiyun						 <STM32_PINMUX('B', 7, AF4)>; /* I2C1_SDA */
170*4882a593Smuzhiyun					bias-disable;
171*4882a593Smuzhiyun					drive-open-drain;
172*4882a593Smuzhiyun					slew-rate = <0>;
173*4882a593Smuzhiyun				};
174*4882a593Smuzhiyun			};
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun			ethernet_rmii: rmii-0 {
177*4882a593Smuzhiyun				pins {
178*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('G', 11, AF11)>,
179*4882a593Smuzhiyun						 <STM32_PINMUX('G', 13, AF11)>,
180*4882a593Smuzhiyun						 <STM32_PINMUX('G', 12, AF11)>,
181*4882a593Smuzhiyun						 <STM32_PINMUX('C', 4, AF11)>,
182*4882a593Smuzhiyun						 <STM32_PINMUX('C', 5, AF11)>,
183*4882a593Smuzhiyun						 <STM32_PINMUX('A', 7, AF11)>,
184*4882a593Smuzhiyun						 <STM32_PINMUX('C', 1, AF11)>,
185*4882a593Smuzhiyun						 <STM32_PINMUX('A', 2, AF11)>,
186*4882a593Smuzhiyun						 <STM32_PINMUX('A', 1, AF11)>;
187*4882a593Smuzhiyun					slew-rate = <2>;
188*4882a593Smuzhiyun				};
189*4882a593Smuzhiyun			};
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun			sdmmc1_b4_pins_a: sdmmc1-b4-0 {
192*4882a593Smuzhiyun				pins {
193*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
194*4882a593Smuzhiyun						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
195*4882a593Smuzhiyun						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
196*4882a593Smuzhiyun						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
197*4882a593Smuzhiyun						 <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1_CK */
198*4882a593Smuzhiyun						 <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
199*4882a593Smuzhiyun					slew-rate = <3>;
200*4882a593Smuzhiyun					drive-push-pull;
201*4882a593Smuzhiyun					bias-disable;
202*4882a593Smuzhiyun				};
203*4882a593Smuzhiyun			};
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun			sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 {
206*4882a593Smuzhiyun				pins1 {
207*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
208*4882a593Smuzhiyun						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
209*4882a593Smuzhiyun						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
210*4882a593Smuzhiyun						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
211*4882a593Smuzhiyun						 <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
212*4882a593Smuzhiyun					slew-rate = <3>;
213*4882a593Smuzhiyun					drive-push-pull;
214*4882a593Smuzhiyun					bias-disable;
215*4882a593Smuzhiyun				};
216*4882a593Smuzhiyun				pins2{
217*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
218*4882a593Smuzhiyun					slew-rate = <3>;
219*4882a593Smuzhiyun					drive-open-drain;
220*4882a593Smuzhiyun					bias-disable;
221*4882a593Smuzhiyun				};
222*4882a593Smuzhiyun			};
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun			sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
225*4882a593Smuzhiyun				pins {
226*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */
227*4882a593Smuzhiyun						 <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1_D1 */
228*4882a593Smuzhiyun						 <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1_D2 */
229*4882a593Smuzhiyun						 <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1_D3 */
230*4882a593Smuzhiyun						 <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1_CK */
231*4882a593Smuzhiyun						 <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1_CMD */
232*4882a593Smuzhiyun				};
233*4882a593Smuzhiyun			};
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun			sdmmc1_dir_pins_a: sdmmc1-dir-0 {
236*4882a593Smuzhiyun				pins1 {
237*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 6, AF8)>, /* SDMMC1_D0DIR */
238*4882a593Smuzhiyun						 <STM32_PINMUX('C', 7, AF8)>, /* SDMMC1_D123DIR */
239*4882a593Smuzhiyun						 <STM32_PINMUX('B', 9, AF7)>; /* SDMMC1_CDIR */
240*4882a593Smuzhiyun					slew-rate = <3>;
241*4882a593Smuzhiyun					drive-push-pull;
242*4882a593Smuzhiyun					bias-pull-up;
243*4882a593Smuzhiyun				};
244*4882a593Smuzhiyun				pins2{
245*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 8, AF7)>; /* SDMMC1_CKIN */
246*4882a593Smuzhiyun					bias-pull-up;
247*4882a593Smuzhiyun				};
248*4882a593Smuzhiyun			};
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun			sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 {
251*4882a593Smuzhiyun				pins {
252*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('C', 6, ANALOG)>, /* SDMMC1_D0DIR */
253*4882a593Smuzhiyun						 <STM32_PINMUX('C', 7, ANALOG)>, /* SDMMC1_D123DIR */
254*4882a593Smuzhiyun						 <STM32_PINMUX('B', 9, ANALOG)>, /* SDMMC1_CDIR */
255*4882a593Smuzhiyun						 <STM32_PINMUX('B', 8, ANALOG)>; /* SDMMC1_CKIN */
256*4882a593Smuzhiyun				};
257*4882a593Smuzhiyun			};
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun			usart1_pins: usart1-0 {
260*4882a593Smuzhiyun				pins1 {
261*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */
262*4882a593Smuzhiyun					bias-disable;
263*4882a593Smuzhiyun					drive-push-pull;
264*4882a593Smuzhiyun					slew-rate = <0>;
265*4882a593Smuzhiyun				};
266*4882a593Smuzhiyun				pins2 {
267*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('B', 15, AF4)>; /* USART1_RX */
268*4882a593Smuzhiyun					bias-disable;
269*4882a593Smuzhiyun				};
270*4882a593Smuzhiyun			};
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun			usart2_pins: usart2-0 {
273*4882a593Smuzhiyun				pins1 {
274*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('D', 5, AF7)>; /* USART2_TX */
275*4882a593Smuzhiyun					bias-disable;
276*4882a593Smuzhiyun					drive-push-pull;
277*4882a593Smuzhiyun					slew-rate = <0>;
278*4882a593Smuzhiyun				};
279*4882a593Smuzhiyun				pins2 {
280*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('D', 6, AF7)>; /* USART2_RX */
281*4882a593Smuzhiyun					bias-disable;
282*4882a593Smuzhiyun				};
283*4882a593Smuzhiyun			};
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun			usbotg_hs_pins_a: usbotg-hs-0 {
286*4882a593Smuzhiyun				pins {
287*4882a593Smuzhiyun					pinmux = <STM32_PINMUX('H', 4, AF10)>,	/* ULPI_NXT */
288*4882a593Smuzhiyun							 <STM32_PINMUX('I', 11, AF10)>, /* ULPI_DIR> */
289*4882a593Smuzhiyun							 <STM32_PINMUX('C', 0, AF10)>,	/* ULPI_STP> */
290*4882a593Smuzhiyun							 <STM32_PINMUX('A', 5, AF10)>,	/* ULPI_CK> */
291*4882a593Smuzhiyun							 <STM32_PINMUX('A', 3, AF10)>,	/* ULPI_D0> */
292*4882a593Smuzhiyun							 <STM32_PINMUX('B', 0, AF10)>,	/* ULPI_D1> */
293*4882a593Smuzhiyun							 <STM32_PINMUX('B', 1, AF10)>,	/* ULPI_D2> */
294*4882a593Smuzhiyun							 <STM32_PINMUX('B', 10, AF10)>, /* ULPI_D3> */
295*4882a593Smuzhiyun							 <STM32_PINMUX('B', 11, AF10)>, /* ULPI_D4> */
296*4882a593Smuzhiyun							 <STM32_PINMUX('B', 12, AF10)>, /* ULPI_D5> */
297*4882a593Smuzhiyun							 <STM32_PINMUX('B', 13, AF10)>, /* ULPI_D6> */
298*4882a593Smuzhiyun							 <STM32_PINMUX('B', 5, AF10)>;	/* ULPI_D7> */
299*4882a593Smuzhiyun					bias-disable;
300*4882a593Smuzhiyun					drive-push-pull;
301*4882a593Smuzhiyun					slew-rate = <2>;
302*4882a593Smuzhiyun				};
303*4882a593Smuzhiyun			};
304*4882a593Smuzhiyun		};
305*4882a593Smuzhiyun	};
306*4882a593Smuzhiyun};
307