1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/pinctrl/nuvoton,npcm845-pinctrl.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Nuvoton NPCM845 Pin Controller and GPIO 8 9maintainers: 10 - Tomer Maimon <tmaimon77@gmail.com> 11 12description: 13 The Nuvoton BMC NPCM8XX Pin Controller multi-function routed through 14 the multiplexing block, Each pin supports GPIO functionality (GPIOx) 15 and multiple functions that directly connect the pin to different 16 hardware blocks. 17 18properties: 19 compatible: 20 const: nuvoton,npcm845-pinctrl 21 22 ranges: 23 maxItems: 1 24 25 '#address-cells': 26 const: 1 27 28 '#size-cells': 29 const: 1 30 31 nuvoton,sysgcr: 32 $ref: /schemas/types.yaml#/definitions/phandle 33 description: a phandle to access GCR registers. 34 35patternProperties: 36 '^gpio@': 37 type: object 38 additionalProperties: false 39 40 description: 41 Eight GPIO banks that each contain 32 GPIOs. 42 43 properties: 44 gpio-controller: true 45 46 '#gpio-cells': 47 const: 2 48 49 reg: 50 maxItems: 1 51 52 interrupts: 53 maxItems: 1 54 55 gpio-ranges: 56 maxItems: 1 57 58 required: 59 - gpio-controller 60 - '#gpio-cells' 61 - reg 62 - interrupts 63 - gpio-ranges 64 65 '-mux$': 66 $ref: pinmux-node.yaml# 67 68 properties: 69 groups: 70 description: 71 One or more groups of pins to mux to a certain function 72 items: 73 enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi, 74 smb5b, smb5c, lkgpo0, pspi, jm1, jm2, smb4den, smb4b, 75 smb4c, smb15, smb16, smb17, smb18, smb19, smb20, smb21, 76 smb22, smb23, smb23b, smb4d, smb14, smb5, smb4, smb3, 77 spi0cs1, spi0cs2, spi0cs3, spi1cs0, spi1cs1, spi1cs2, 78 spi1cs3, spi1cs23, smb3c, smb3b, bmcuart0a, uart1, jtag2, 79 bmcuart1, uart2, sg1mdio, bmcuart0b, r1err, r1md, r1oen, 80 r2oen, rmii3, r3oen, smb3d, fanin0, fanin1, fanin2, fanin3, 81 fanin4, fanin5, fanin6, fanin7, fanin8, fanin9, fanin10, 82 fanin11, fanin12, fanin13, fanin14, fanin15, pwm0, pwm1, pwm2, 83 pwm3, r2, r2err, r2md, r3rxer, ga20kbc, smb5d, lpc, espi, rg2, 84 ddr, i3c0, i3c1, i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, 85 smb2c, smb2b, smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, 86 sd1pwr, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, 87 mmc8, mmc, mmcwp, mmccd, mmcrst, clkout, serirq, lpcclk, 88 scipme, smi, smb6, smb7, spi1, faninx, r1, spi3, spi3cs1, 89 spi3quad, spi3cs2, spi3cs3, nprd_smi, smb0b, smb0c, smb0den, 90 smb0d, ddc, rg2mdio, wdog1, wdog2, smb12, smb13, spix, 91 spixcs1, clkreq, hgpio0, hgpio1, hgpio2, hgpio3, hgpio4, 92 hgpio5, hgpio6, hgpio7 ] 93 94 function: 95 description: 96 The function that a group of pins is muxed to 97 enum: [ iox1, iox2, smb1d, smb2d, lkgpo1, lkgpo2, ioxh, gspi, 98 smb5b, smb5c, lkgpo0, pspi, jm1, jm2, smb4den, smb4b, 99 smb4c, smb15, smb16, smb17, smb18, smb19, smb20, smb21, 100 smb22, smb23, smb23b, smb4d, smb14, smb5, smb4, smb3, 101 spi0cs1, spi0cs2, spi0cs3, spi1cs0, spi1cs1, spi1cs2, 102 spi1cs3, spi1cs23, smb3c, smb3b, bmcuart0a, uart1, jtag2, 103 bmcuart1, uart2, sg1mdio, bmcuart0b, r1err, r1md, r1oen, 104 r2oen, rmii3, r3oen, smb3d, fanin0, fanin1, fanin2, fanin3, 105 fanin4, fanin5, fanin6, fanin7, fanin8, fanin9, fanin10, 106 fanin11, fanin12, fanin13, fanin14, fanin15, pwm0, pwm1, pwm2, 107 pwm3, r2, r2err, r2md, r3rxer, ga20kbc, smb5d, lpc, espi, rg2, 108 ddr, i3c0, i3c1, i3c2, i3c3, i3c4, i3c5, smb0, smb1, smb2, 109 smb2c, smb2b, smb1c, smb1b, smb8, smb9, smb10, smb11, sd1, 110 sd1pwr, pwm4, pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, 111 mmc8, mmc, mmcwp, mmccd, mmcrst, clkout, serirq, lpcclk, 112 scipme, smi, smb6, smb7, spi1, faninx, r1, spi3, spi3cs1, 113 spi3quad, spi3cs2, spi3cs3, nprd_smi, smb0b, smb0c, smb0den, 114 smb0d, ddc, rg2mdio, wdog1, wdog2, smb12, smb13, spix, 115 spixcs1, clkreq, hgpio0, hgpio1, hgpio2, hgpio3, hgpio4, 116 hgpio5, hgpio6, hgpio7 ] 117 118 dependencies: 119 groups: [ function ] 120 function: [ groups ] 121 122 additionalProperties: false 123 124 '^pin': 125 $ref: pincfg-node.yaml# 126 127 properties: 128 pins: 129 description: 130 A list of pins to configure in certain ways, such as enabling 131 debouncing 132 items: 133 pattern: '^GPIO([0-9]|[0-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-6])' 134 135 bias-disable: true 136 137 bias-pull-up: true 138 139 bias-pull-down: true 140 141 input-enable: true 142 143 output-low: true 144 145 output-high: true 146 147 drive-push-pull: true 148 149 drive-open-drain: true 150 151 input-debounce: 152 description: 153 Debouncing periods in microseconds, one period per interrupt 154 bank found in the controller 155 minItems: 1 156 maxItems: 4 157 158 slew-rate: 159 description: | 160 0: Low rate 161 1: High rate 162 enum: [0, 1] 163 164 drive-strength: 165 enum: [ 0, 1, 2, 4, 8, 12 ] 166 167 additionalProperties: false 168 169allOf: 170 - $ref: pinctrl.yaml# 171 172required: 173 - compatible 174 - ranges 175 - '#address-cells' 176 - '#size-cells' 177 - nuvoton,sysgcr 178 179additionalProperties: false 180 181examples: 182 - | 183 #include <dt-bindings/interrupt-controller/arm-gic.h> 184 #include <dt-bindings/gpio/gpio.h> 185 186 soc { 187 #address-cells = <2>; 188 #size-cells = <2>; 189 190 pinctrl: pinctrl@f0010000 { 191 compatible = "nuvoton,npcm845-pinctrl"; 192 ranges = <0x0 0x0 0xf0010000 0x8000>; 193 #address-cells = <1>; 194 #size-cells = <1>; 195 nuvoton,sysgcr = <&gcr>; 196 197 gpio0: gpio@0 { 198 gpio-controller; 199 #gpio-cells = <2>; 200 reg = <0x0 0xb0>; 201 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>; 202 gpio-ranges = <&pinctrl 0 0 32>; 203 }; 204 205 fanin0_pin: fanin0-mux { 206 groups = "fanin0"; 207 function = "fanin0"; 208 }; 209 210 pin34_slew: pin34-slew { 211 pins = "GPIO34/I3C4_SDA"; 212 bias-disable; 213 }; 214 }; 215 }; 216