Merge branch 'linux-5.3' of git://github.com/skeggsb/linux into drm-fixes
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / pinctrl / nuvoton,npcm7xx-pinctrl.txt
1 Nuvoton NPCM7XX Pin Controllers
2
3 The Nuvoton BMC NPCM7XX Pin Controller multi-function routed through
4 the multiplexing block, Each pin supports GPIO functionality (GPIOx)
5 and multiple functions that directly connect the pin to different
6 hardware blocks.
7
8 Required 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
17 The NPCM7XX has 8 GPIO Banks each GPIO bank supports 32 GPIO.
18
19 Required 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
28 For 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
43 The 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
107 Optional 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
123 For 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
136 Required 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
141 The 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
156 For 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
170 Examples
171 ========
172 pinctrl: 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 };