1Nuvoton 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};