blob: a1264cc8660dcd59070395ceaf93b83058886c0e [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001Nuvoton NPCM7XX Pin Controllers
2
3The Nuvoton BMC NPCM7XX Pin Controller multi-function routed through
4the multiplexing block, Each pin supports GPIO functionality (GPIOx)
5and multiple functions that directly connect the pin to different
6hardware blocks.
7
8Required properties:
9- #address-cells : should be 1.
10- #size-cells : should be 1.
11- compatible : "nuvoton,npcm750-pinctrl" for Poleg NPCM7XX.
12- ranges : defines mapping ranges between pin controller node (parent)
13 to GPIO bank node (children).
14
15=== GPIO Bank Subnode ===
16
17The NPCM7XX has 8 GPIO Banks each GPIO bank supports 32 GPIO.
18
19Required GPIO Bank subnode-properties:
20- reg : specifies physical base address and size of the GPIO
21 bank registers.
22- gpio-controller : Marks the device node as a GPIO controller.
23- #gpio-cells : Must be <2>. The first cell is the gpio pin number
24 and the second cell is used for optional parameters.
25- interrupts : contain the GPIO bank interrupt with flags for falling edge.
26- gpio-ranges : defines the range of pins managed by the GPIO bank controller.
27
28For example, GPIO bank subnodes like the following:
29 gpio0: gpio@f0010000 {
30 gpio-controller;
31 #gpio-cells = <2>;
32 reg = <0x0 0x80>;
33 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
34 gpio-ranges = <&pinctrl 0 0 32>;
35 };
36
37=== Pin Mux Subnode ===
38
39- pin: A string containing the name of the pin
40 An array of strings, each string containing the name of a pin.
41 These pin are used for selecting pin configuration.
42
43The following are the list of pins available:
44 "GPIO0/IOX1DI", "GPIO1/IOX1LD", "GPIO2/IOX1CK", "GPIO3/IOX1D0",
45 "GPIO4/IOX2DI/SMB1DSDA", "GPIO5/IOX2LD/SMB1DSCL", "GPIO6/IOX2CK/SMB2DSDA",
46 "GPIO7/IOX2D0/SMB2DSCL", "GPIO8/LKGPO1", "GPIO9/LKGPO2", "GPIO10/IOXHLD",
47 "GPIO11/IOXHCK", "GPIO12/GSPICK/SMB5BSCL", "GPIO13/GSPIDO/SMB5BSDA",
48 "GPIO14/GSPIDI/SMB5CSCL", "GPIO15/GSPICS/SMB5CSDA", "GPIO16/LKGPO0",
49 "GPIO17/PSPI2DI/SMB4DEN","GPIO18/PSPI2D0/SMB4BSDA", "GPIO19/PSPI2CK/SMB4BSCL",
50 "GPIO20/SMB4CSDA/SMB15SDA", "GPIO21/SMB4CSCL/SMB15SCL", "GPIO22/SMB4DSDA/SMB14SDA",
51 "GPIO23/SMB4DSCL/SMB14SCL", "GPIO24/IOXHDO", "GPIO25/IOXHDI", "GPIO26/SMB5SDA",
52 "GPIO27/SMB5SCL", "GPIO28/SMB4SDA", "GPIO29/SMB4SCL", "GPIO30/SMB3SDA",
53 "GPIO31/SMB3SCL", "GPIO32/nSPI0CS1","SPI0D2", "SPI0D3", "GPIO37/SMB3CSDA",
54 "GPIO38/SMB3CSCL", "GPIO39/SMB3BSDA", "GPIO40/SMB3BSCL", "GPIO41/BSPRXD",
55 "GPO42/BSPTXD/STRAP11", "GPIO43/RXD1/JTMS2/BU1RXD", "GPIO44/nCTS1/JTDI2/BU1CTS",
56 "GPIO45/nDCD1/JTDO2", "GPIO46/nDSR1/JTCK2", "GPIO47/nRI1/JCP_RDY2",
57 "GPIO48/TXD2/BSPTXD", "GPIO49/RXD2/BSPRXD", "GPIO50/nCTS2", "GPO51/nRTS2/STRAP2",
58 "GPIO52/nDCD2", "GPO53/nDTR2_BOUT2/STRAP1", "GPIO54/nDSR2", "GPIO55/nRI2",
59 "GPIO56/R1RXERR", "GPIO57/R1MDC", "GPIO58/R1MDIO", "GPIO59/SMB3DSDA",
60 "GPIO60/SMB3DSCL", "GPO61/nDTR1_BOUT1/STRAP6", "GPO62/nRTST1/STRAP5",
61 "GPO63/TXD1/STRAP4", "GPIO64/FANIN0", "GPIO65/FANIN1", "GPIO66/FANIN2",
62 "GPIO67/FANIN3", "GPIO68/FANIN4", "GPIO69/FANIN5", "GPIO70/FANIN6", "GPIO71/FANIN7",
63 "GPIO72/FANIN8", "GPIO73/FANIN9", "GPIO74/FANIN10", "GPIO75/FANIN11",
64 "GPIO76/FANIN12", "GPIO77/FANIN13","GPIO78/FANIN14", "GPIO79/FANIN15",
65 "GPIO80/PWM0", "GPIO81/PWM1", "GPIO82/PWM2", "GPIO83/PWM3", "GPIO84/R2TXD0",
66 "GPIO85/R2TXD1", "GPIO86/R2TXEN", "GPIO87/R2RXD0", "GPIO88/R2RXD1", "GPIO89/R2CRSDV",
67 "GPIO90/R2RXERR", "GPIO91/R2MDC", "GPIO92/R2MDIO", "GPIO93/GA20/SMB5DSCL",
68 "GPIO94/nKBRST/SMB5DSDA", "GPIO95/nLRESET/nESPIRST", "GPIO96/RG1TXD0",
69 "GPIO97/RG1TXD1", "GPIO98/RG1TXD2", "GPIO99/RG1TXD3","GPIO100/RG1TXC",
70 "GPIO101/RG1TXCTL", "GPIO102/RG1RXD0", "GPIO103/RG1RXD1", "GPIO104/RG1RXD2",
71 "GPIO105/RG1RXD3", "GPIO106/RG1RXC", "GPIO107/RG1RXCTL", "GPIO108/RG1MDC",
72 "GPIO109/RG1MDIO", "GPIO110/RG2TXD0/DDRV0", "GPIO111/RG2TXD1/DDRV1",
73 "GPIO112/RG2TXD2/DDRV2", "GPIO113/RG2TXD3/DDRV3", "GPIO114/SMB0SCL",
74 "GPIO115/SMB0SDA", "GPIO116/SMB1SCL", "GPIO117/SMB1SDA", "GPIO118/SMB2SCL",
75 "GPIO119/SMB2SDA", "GPIO120/SMB2CSDA", "GPIO121/SMB2CSCL", "GPIO122/SMB2BSDA",
76 "GPIO123/SMB2BSCL", "GPIO124/SMB1CSDA", "GPIO125/SMB1CSCL","GPIO126/SMB1BSDA",
77 "GPIO127/SMB1BSCL", "GPIO128/SMB8SCL", "GPIO129/SMB8SDA", "GPIO130/SMB9SCL",
78 "GPIO131/SMB9SDA", "GPIO132/SMB10SCL", "GPIO133/SMB10SDA","GPIO134/SMB11SCL",
79 "GPIO135/SMB11SDA", "GPIO136/SD1DT0", "GPIO137/SD1DT1", "GPIO138/SD1DT2",
80 "GPIO139/SD1DT3", "GPIO140/SD1CLK", "GPIO141/SD1WP", "GPIO142/SD1CMD",
81 "GPIO143/SD1CD/SD1PWR", "GPIO144/PWM4", "GPIO145/PWM5", "GPIO146/PWM6",
82 "GPIO147/PWM7", "GPIO148/MMCDT4", "GPIO149/MMCDT5", "GPIO150/MMCDT6",
83 "GPIO151/MMCDT7", "GPIO152/MMCCLK", "GPIO153/MMCWP", "GPIO154/MMCCMD",
84 "GPIO155/nMMCCD/nMMCRST", "GPIO156/MMCDT0", "GPIO157/MMCDT1", "GPIO158/MMCDT2",
85 "GPIO159/MMCDT3", "GPIO160/CLKOUT/RNGOSCOUT", "GPIO161/nLFRAME/nESPICS",
86 "GPIO162/SERIRQ", "GPIO163/LCLK/ESPICLK", "GPIO164/LAD0/ESPI_IO0",
87 "GPIO165/LAD1/ESPI_IO1", "GPIO166/LAD2/ESPI_IO2", "GPIO167/LAD3/ESPI_IO3",
88 "GPIO168/nCLKRUN/nESPIALERT", "GPIO169/nSCIPME", "GPIO170/nSMI", "GPIO171/SMB6SCL",
89 "GPIO172/SMB6SDA", "GPIO173/SMB7SCL", "GPIO174/SMB7SDA", "GPIO175/PSPI1CK/FANIN19",
90 "GPIO176/PSPI1DO/FANIN18", "GPIO177/PSPI1DI/FANIN17", "GPIO178/R1TXD0",
91 "GPIO179/R1TXD1", "GPIO180/R1TXEN", "GPIO181/R1RXD0", "GPIO182/R1RXD1",
92 "GPIO183/SPI3CK", "GPO184/SPI3D0/STRAP9", "GPO185/SPI3D1/STRAP10",
93 "GPIO186/nSPI3CS0", "GPIO187/nSPI3CS1", "GPIO188/SPI3D2/nSPI3CS2",
94 "GPIO189/SPI3D3/nSPI3CS3", "GPIO190/nPRD_SMI", "GPIO191", "GPIO192", "GPIO193/R1CRSDV",
95 "GPIO194/SMB0BSCL", "GPIO195/SMB0BSDA", "GPIO196/SMB0CSCL", "GPIO197/SMB0DEN",
96 "GPIO198/SMB0DSDA", "GPIO199/SMB0DSCL", "GPIO200/R2CK", "GPIO201/R1CK",
97 "GPIO202/SMB0CSDA", "GPIO203/FANIN16", "GPIO204/DDC2SCL", "GPIO205/DDC2SDA",
98 "GPIO206/HSYNC2", "GPIO207/VSYNC2", "GPIO208/RG2TXC/DVCK", "GPIO209/RG2TXCTL/DDRV4",
99 "GPIO210/RG2RXD0/DDRV5", "GPIO211/RG2RXD1/DDRV6", "GPIO212/RG2RXD2/DDRV7",
100 "GPIO213/RG2RXD3/DDRV8", "GPIO214/RG2RXC/DDRV9", "GPIO215/RG2RXCTL/DDRV10",
101 "GPIO216/RG2MDC/DDRV11", "GPIO217/RG2MDIO/DVHSYNC", "GPIO218/nWDO1",
102 "GPIO219/nWDO2", "GPIO220/SMB12SCL", "GPIO221/SMB12SDA", "GPIO222/SMB13SCL",
103 "GPIO223/SMB13SDA", "GPIO224/SPIXCK", "GPO225/SPIXD0/STRAP12", "GPO226/SPIXD1/STRAP13",
104 "GPIO227/nSPIXCS0", "GPIO228/nSPIXCS1", "GPO229/SPIXD2/STRAP3", "GPIO230/SPIXD3",
105 "GPIO231/nCLKREQ", "GPI255/DACOSEL"
106
107Optional Properties:
108 bias-disable, bias-pull-down, bias-pull-up, input-enable,
109 input-disable, output-high, output-low, drive-push-pull,
110 drive-open-drain, input-debounce, slew-rate, drive-strength
111
112 slew-rate valid arguments are:
113 <0> - slow
114 <1> - fast
115 drive-strength valid arguments are:
116 <2> - 2mA
117 <4> - 4mA
118 <8> - 8mA
119 <12> - 12mA
120 <16> - 16mA
121 <24> - 24mA
122
123For example, pinctrl might have pinmux subnodes like the following:
124
125 gpio0_iox1d1_pin: gpio0-iox1d1-pin {
126 pins = "GPIO0/IOX1DI";
127 output-high;
128 };
129 gpio0_iox1ck_pin: gpio0-iox1ck-pin {
130 pins = "GPIO2/IOX1CK";
131 output_high;
132 };
133
134=== Pin Group Subnode ===
135
136Required pin group subnode-properties:
137- groups : A string containing the name of the group to mux.
138- function: A string containing the name of the function to mux to the
139 group.
140
141The following are the list of the available groups and functions :
142 smb0, smb0b, smb0c, smb0d, smb0den, smb1, smb1b, smb1c, smb1d,
143 smb2, smb2b, smb2c, smb2d, smb3, smb3b, smb3c, smb3d, smb4, smb4b,
144 smb4c, smb4d, smb4den, smb5, smb5b, smb5c, smb5d, ga20kbc, smb6,
145 smb7, smb8, smb9, smb10, smb11, smb12, smb13, smb14, smb15, fanin0,
146 fanin1, fanin2, fanin3, fanin4, fanin5, fanin6, fanin7, fanin8,
147 fanin9, fanin10, fanin11 fanin12 fanin13, fanin14, fanin15, faninx,
148 pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, rg1, rg1mdio, rg2,
149 rg2mdio, ddr, uart1, uart2, bmcuart0a, bmcuart0b, bmcuart1, iox1,
150 iox2, ioxh, gspi, mmc, mmcwp, mmccd, mmcrst, mmc8, r1, r1err, r1md,
151 r2, r2err, r2md, sd1, sd1pwr, wdog1, wdog2, scipme, sci, serirq,
152 jtag2, spix, spixcs1, pspi1, pspi2, ddc, clkreq, clkout, spi3, spi3cs1,
153 spi3quad, spi3cs2, spi3cs3, spi0cs1, lpc, lpcclk, espi, lkgpo0, lkgpo1,
154 lkgpo2, nprd_smi
155
156For example, pinctrl might have group subnodes like the following:
157 r1err_pins: r1err-pins {
158 groups = "r1err";
159 function = "r1err";
160 };
161 r1md_pins: r1md-pins {
162 groups = "r1md";
163 function = "r1md";
164 };
165 r1_pins: r1-pins {
166 groups = "r1";
167 function = "r1";
168 };
169
170Examples
171========
172pinctrl: pinctrl@f0800000 {
173 #address-cells = <1>;
174 #size-cells = <1>;
175 compatible = "nuvoton,npcm750-pinctrl";
176 ranges = <0 0xf0010000 0x8000>;
177
178 gpio0: gpio@f0010000 {
179 gpio-controller;
180 #gpio-cells = <2>;
181 reg = <0x0 0x80>;
182 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
183 gpio-ranges = <&pinctrl 0 0 32>;
184 };
185
186 ....
187
188 gpio7: gpio@f0017000 {
189 gpio-controller;
190 #gpio-cells = <2>;
191 reg = <0x7000 0x80>;
192 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
193 gpio-ranges = <&pinctrl 0 224 32>;
194 };
195
196 gpio0_iox1d1_pin: gpio0-iox1d1-pin {
197 pins = "GPIO0/IOX1DI";
198 output-high;
199 };
200
201 iox1_pins: iox1-pins {
202 groups = "iox1";
203 function = "iox1";
204 };
205 iox2_pins: iox2-pins {
206 groups = "iox2";
207 function = "iox2";
208 };
209
210 ....
211
212 clkreq_pins: clkreq-pins {
213 groups = "clkreq";
214 function = "clkreq";
215 };
216};