| Davinci/Keystone GPIO controller bindings |
| |
| Required Properties: |
| - compatible: should be "ti,dm6441-gpio": for Davinci da850 SoCs |
| "ti,keystone-gpio": for Keystone 2 66AK2H/K, 66AK2L, |
| 66AK2E SoCs |
| "ti,k2g-gpio", "ti,keystone-gpio": for 66AK2G |
| "ti,am654-gpio", "ti,keystone-gpio": for TI K3 AM654 |
| "ti,j721e-gpio", "ti,keystone-gpio": for J721E SoCs |
| |
| - reg: Physical base address of the controller and the size of memory mapped |
| registers. |
| |
| - gpio-controller : Marks the device node as a gpio controller. |
| |
| - #gpio-cells : Should be two. |
| - first cell is the pin number |
| - second cell is used to specify optional parameters (unused) |
| |
| - interrupts: Array of GPIO interrupt number. Only banked or unbanked IRQs are |
| supported at a time. |
| |
| - ti,ngpio: The number of GPIO pins supported. |
| |
| - ti,davinci-gpio-unbanked: The number of GPIOs that have an individual interrupt |
| line to processor. |
| |
| - clocks: Should contain the device's input clock, and should be defined as per |
| the appropriate clock bindings consumer usage in, |
| |
| Documentation/devicetree/bindings/clock/keystone-gate.txt |
| for 66AK2HK/66AK2L/66AK2E SoCs or, |
| |
| Documentation/devicetree/bindings/clock/ti,sci-clk.txt |
| for 66AK2G SoCs |
| |
| - clock-names: Name should be "gpio"; |
| |
| Currently clock-names and clocks are needed for all keystone 2 platforms |
| Davinci platforms do not have DT clocks as of now. |
| |
| The GPIO controller also acts as an interrupt controller. It uses the default |
| two cells specifier as described in Documentation/devicetree/bindings/ |
| interrupt-controller/interrupts.txt. |
| |
| Example: |
| |
| gpio: gpio@1e26000 { |
| compatible = "ti,dm6441-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| reg = <0x226000 0x1000>; |
| interrupt-parent = <&intc>; |
| interrupts = <42 IRQ_TYPE_EDGE_BOTH 43 IRQ_TYPE_EDGE_BOTH |
| 44 IRQ_TYPE_EDGE_BOTH 45 IRQ_TYPE_EDGE_BOTH |
| 46 IRQ_TYPE_EDGE_BOTH 47 IRQ_TYPE_EDGE_BOTH |
| 48 IRQ_TYPE_EDGE_BOTH 49 IRQ_TYPE_EDGE_BOTH |
| 50 IRQ_TYPE_EDGE_BOTH>; |
| ti,ngpio = <144>; |
| ti,davinci-gpio-unbanked = <0>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| |
| led1 { |
| label = "davinci:green:usr1"; |
| gpios = <&gpio 10 GPIO_ACTIVE_HIGH>; |
| ... |
| }; |
| |
| led2 { |
| label = "davinci:red:debug1"; |
| gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; |
| ... |
| }; |
| }; |
| |
| Example for 66AK2G: |
| |
| gpio0: gpio@2603000 { |
| compatible = "ti,k2g-gpio", "ti,keystone-gpio"; |
| reg = <0x02603000 0x100>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupts = <GIC_SPI 432 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 433 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 434 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 435 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 436 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 437 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 438 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 439 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 440 IRQ_TYPE_EDGE_RISING>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| ti,ngpio = <144>; |
| ti,davinci-gpio-unbanked = <0>; |
| clocks = <&k2g_clks 0x001b 0x0>; |
| clock-names = "gpio"; |
| }; |
| |
| Example for 66AK2HK/66AK2L/66AK2E: |
| |
| gpio0: gpio@260bf00 { |
| compatible = "ti,keystone-gpio"; |
| reg = <0x0260bf00 0x100>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| /* HW Interrupts mapped to GPIO pins */ |
| interrupts = <GIC_SPI 120 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 121 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 122 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 123 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 124 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 125 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 126 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 127 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 128 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 129 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 130 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 131 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 132 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 133 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 135 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 136 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 137 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 138 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 139 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 142 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 145 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 146 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 147 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 149 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 150 IRQ_TYPE_EDGE_RISING>, |
| <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>; |
| clocks = <&clkgpio>; |
| clock-names = "gpio"; |
| ti,ngpio = <32>; |
| ti,davinci-gpio-unbanked = <32>; |
| }; |
| |
| Example for K3 AM654: |
| |
| wkup_gpio0: wkup_gpio0@42110000 { |
| compatible = "ti,am654-gpio", "ti,keystone-gpio"; |
| reg = <0x42110000 0x100>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupt-parent = <&intr_wkup_gpio>; |
| interrupts = <59 128>, <59 129>, <59 130>, <59 131>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| ti,ngpio = <56>; |
| ti,davinci-gpio-unbanked = <0>; |
| clocks = <&k3_clks 59 0>; |
| clock-names = "gpio"; |
| }; |