1*c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0 2*c66ec88fSEmmanuel Vadot%YAML 1.2 3*c66ec88fSEmmanuel Vadot--- 4*c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/pinctrl/allwinner,sun4i-a10-pinctrl.yaml# 5*c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c66ec88fSEmmanuel Vadot 7*c66ec88fSEmmanuel Vadottitle: Allwinner A10 Pin Controller Device Tree Bindings 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel Vadotmaintainers: 10*c66ec88fSEmmanuel Vadot - Chen-Yu Tsai <wens@csie.org> 11*c66ec88fSEmmanuel Vadot - Maxime Ripard <mripard@kernel.org> 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel Vadotproperties: 14*c66ec88fSEmmanuel Vadot "#gpio-cells": 15*c66ec88fSEmmanuel Vadot const: 3 16*c66ec88fSEmmanuel Vadot description: 17*c66ec88fSEmmanuel Vadot GPIO consumers must use three arguments, first the number of the 18*c66ec88fSEmmanuel Vadot bank, then the pin number inside that bank, and finally the GPIO 19*c66ec88fSEmmanuel Vadot flags. 20*c66ec88fSEmmanuel Vadot 21*c66ec88fSEmmanuel Vadot "#interrupt-cells": 22*c66ec88fSEmmanuel Vadot const: 3 23*c66ec88fSEmmanuel Vadot description: 24*c66ec88fSEmmanuel Vadot Interrupts consumers must use three arguments, first the number 25*c66ec88fSEmmanuel Vadot of the bank, then the pin number inside that bank, and finally 26*c66ec88fSEmmanuel Vadot the interrupts flags. 27*c66ec88fSEmmanuel Vadot 28*c66ec88fSEmmanuel Vadot compatible: 29*c66ec88fSEmmanuel Vadot enum: 30*c66ec88fSEmmanuel Vadot - allwinner,sun4i-a10-pinctrl 31*c66ec88fSEmmanuel Vadot - allwinner,sun5i-a10s-pinctrl 32*c66ec88fSEmmanuel Vadot - allwinner,sun5i-a13-pinctrl 33*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-pinctrl 34*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-r-pinctrl 35*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31s-pinctrl 36*c66ec88fSEmmanuel Vadot - allwinner,sun7i-a20-pinctrl 37*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a23-pinctrl 38*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a23-r-pinctrl 39*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a33-pinctrl 40*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a83t-pinctrl 41*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a83t-r-pinctrl 42*c66ec88fSEmmanuel Vadot - allwinner,sun8i-h3-pinctrl 43*c66ec88fSEmmanuel Vadot - allwinner,sun8i-h3-r-pinctrl 44*c66ec88fSEmmanuel Vadot - allwinner,sun8i-r40-pinctrl 45*c66ec88fSEmmanuel Vadot - allwinner,sun8i-v3-pinctrl 46*c66ec88fSEmmanuel Vadot - allwinner,sun8i-v3s-pinctrl 47*c66ec88fSEmmanuel Vadot - allwinner,sun9i-a80-pinctrl 48*c66ec88fSEmmanuel Vadot - allwinner,sun9i-a80-r-pinctrl 49*c66ec88fSEmmanuel Vadot - allwinner,sun50i-a64-pinctrl 50*c66ec88fSEmmanuel Vadot - allwinner,sun50i-a64-r-pinctrl 51*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h5-pinctrl 52*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h6-pinctrl 53*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h6-r-pinctrl 54*c66ec88fSEmmanuel Vadot - allwinner,suniv-f1c100s-pinctrl 55*c66ec88fSEmmanuel Vadot - nextthing,gr8-pinctrl 56*c66ec88fSEmmanuel Vadot 57*c66ec88fSEmmanuel Vadot reg: 58*c66ec88fSEmmanuel Vadot maxItems: 1 59*c66ec88fSEmmanuel Vadot 60*c66ec88fSEmmanuel Vadot interrupts: 61*c66ec88fSEmmanuel Vadot minItems: 1 62*c66ec88fSEmmanuel Vadot maxItems: 5 63*c66ec88fSEmmanuel Vadot description: 64*c66ec88fSEmmanuel Vadot One interrupt per external interrupt bank supported on the 65*c66ec88fSEmmanuel Vadot controller, sorted by bank number ascending order. 66*c66ec88fSEmmanuel Vadot 67*c66ec88fSEmmanuel Vadot clocks: 68*c66ec88fSEmmanuel Vadot items: 69*c66ec88fSEmmanuel Vadot - description: Bus Clock 70*c66ec88fSEmmanuel Vadot - description: High Frequency Oscillator 71*c66ec88fSEmmanuel Vadot - description: Low Frequency Oscillator 72*c66ec88fSEmmanuel Vadot 73*c66ec88fSEmmanuel Vadot clock-names: 74*c66ec88fSEmmanuel Vadot items: 75*c66ec88fSEmmanuel Vadot - const: apb 76*c66ec88fSEmmanuel Vadot - const: hosc 77*c66ec88fSEmmanuel Vadot - const: losc 78*c66ec88fSEmmanuel Vadot 79*c66ec88fSEmmanuel Vadot resets: 80*c66ec88fSEmmanuel Vadot maxItems: 1 81*c66ec88fSEmmanuel Vadot 82*c66ec88fSEmmanuel Vadot gpio-controller: true 83*c66ec88fSEmmanuel Vadot interrupt-controller: true 84*c66ec88fSEmmanuel Vadot gpio-line-names: true 85*c66ec88fSEmmanuel Vadot 86*c66ec88fSEmmanuel Vadot input-debounce: 87*c66ec88fSEmmanuel Vadot description: 88*c66ec88fSEmmanuel Vadot Debouncing periods in microseconds, one period per interrupt 89*c66ec88fSEmmanuel Vadot bank found in the controller 90*c66ec88fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32-array 91*c66ec88fSEmmanuel Vadot minItems: 1 92*c66ec88fSEmmanuel Vadot maxItems: 5 93*c66ec88fSEmmanuel Vadot 94*c66ec88fSEmmanuel VadotpatternProperties: 95*c66ec88fSEmmanuel Vadot # It's pretty scary, but the basic idea is that: 96*c66ec88fSEmmanuel Vadot # - One node name can start with either s- or r- for PRCM nodes, 97*c66ec88fSEmmanuel Vadot # - Then, the name itself can be any repetition of <string>- (to 98*c66ec88fSEmmanuel Vadot # accomodate with nodes like uart4-rts-cts-pins), where each 99*c66ec88fSEmmanuel Vadot # string can be either starting with 'p' but in a string longer 100*c66ec88fSEmmanuel Vadot # than 3, or something that doesn't start with 'p', 101*c66ec88fSEmmanuel Vadot # - Then, the bank name is optional and will be between pa and pg, 102*c66ec88fSEmmanuel Vadot # pl or pm. Some pins groups that have several options will have 103*c66ec88fSEmmanuel Vadot # the pin numbers then, 104*c66ec88fSEmmanuel Vadot # - Finally, the name will end with either -pin or pins. 105*c66ec88fSEmmanuel Vadot 106*c66ec88fSEmmanuel Vadot "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$": 107*c66ec88fSEmmanuel Vadot type: object 108*c66ec88fSEmmanuel Vadot 109*c66ec88fSEmmanuel Vadot properties: 110*c66ec88fSEmmanuel Vadot pins: true 111*c66ec88fSEmmanuel Vadot function: true 112*c66ec88fSEmmanuel Vadot bias-disable: true 113*c66ec88fSEmmanuel Vadot bias-pull-up: true 114*c66ec88fSEmmanuel Vadot bias-pull-down: true 115*c66ec88fSEmmanuel Vadot 116*c66ec88fSEmmanuel Vadot drive-strength: 117*c66ec88fSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 118*c66ec88fSEmmanuel Vadot enum: [10, 20, 30, 40] 119*c66ec88fSEmmanuel Vadot 120*c66ec88fSEmmanuel Vadot required: 121*c66ec88fSEmmanuel Vadot - pins 122*c66ec88fSEmmanuel Vadot - function 123*c66ec88fSEmmanuel Vadot 124*c66ec88fSEmmanuel Vadot additionalProperties: false 125*c66ec88fSEmmanuel Vadot 126*c66ec88fSEmmanuel Vadot "^vcc-p[a-hlm]-supply$": 127*c66ec88fSEmmanuel Vadot description: 128*c66ec88fSEmmanuel Vadot Power supplies for pin banks. 129*c66ec88fSEmmanuel Vadot 130*c66ec88fSEmmanuel Vadotrequired: 131*c66ec88fSEmmanuel Vadot - "#gpio-cells" 132*c66ec88fSEmmanuel Vadot - "#interrupt-cells" 133*c66ec88fSEmmanuel Vadot - compatible 134*c66ec88fSEmmanuel Vadot - reg 135*c66ec88fSEmmanuel Vadot - interrupts 136*c66ec88fSEmmanuel Vadot - clocks 137*c66ec88fSEmmanuel Vadot - clock-names 138*c66ec88fSEmmanuel Vadot - gpio-controller 139*c66ec88fSEmmanuel Vadot - interrupt-controller 140*c66ec88fSEmmanuel Vadot 141*c66ec88fSEmmanuel VadotallOf: 142*c66ec88fSEmmanuel Vadot # FIXME: We should have the pin bank supplies here, but not a lot of 143*c66ec88fSEmmanuel Vadot # boards are defining it at the moment so it would generate a lot of 144*c66ec88fSEmmanuel Vadot # warnings. 145*c66ec88fSEmmanuel Vadot 146*c66ec88fSEmmanuel Vadot - if: 147*c66ec88fSEmmanuel Vadot properties: 148*c66ec88fSEmmanuel Vadot compatible: 149*c66ec88fSEmmanuel Vadot enum: 150*c66ec88fSEmmanuel Vadot - allwinner,sun9i-a80-pinctrl 151*c66ec88fSEmmanuel Vadot 152*c66ec88fSEmmanuel Vadot then: 153*c66ec88fSEmmanuel Vadot properties: 154*c66ec88fSEmmanuel Vadot interrupts: 155*c66ec88fSEmmanuel Vadot minItems: 5 156*c66ec88fSEmmanuel Vadot maxItems: 5 157*c66ec88fSEmmanuel Vadot 158*c66ec88fSEmmanuel Vadot else: 159*c66ec88fSEmmanuel Vadot if: 160*c66ec88fSEmmanuel Vadot properties: 161*c66ec88fSEmmanuel Vadot compatible: 162*c66ec88fSEmmanuel Vadot enum: 163*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-pinctrl 164*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31s-pinctrl 165*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h6-pinctrl 166*c66ec88fSEmmanuel Vadot 167*c66ec88fSEmmanuel Vadot then: 168*c66ec88fSEmmanuel Vadot properties: 169*c66ec88fSEmmanuel Vadot interrupts: 170*c66ec88fSEmmanuel Vadot minItems: 4 171*c66ec88fSEmmanuel Vadot maxItems: 4 172*c66ec88fSEmmanuel Vadot 173*c66ec88fSEmmanuel Vadot else: 174*c66ec88fSEmmanuel Vadot if: 175*c66ec88fSEmmanuel Vadot properties: 176*c66ec88fSEmmanuel Vadot compatible: 177*c66ec88fSEmmanuel Vadot enum: 178*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a23-pinctrl 179*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a83t-pinctrl 180*c66ec88fSEmmanuel Vadot - allwinner,sun50i-a64-pinctrl 181*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h5-pinctrl 182*c66ec88fSEmmanuel Vadot - allwinner,suniv-f1c100s-pinctrl 183*c66ec88fSEmmanuel Vadot 184*c66ec88fSEmmanuel Vadot then: 185*c66ec88fSEmmanuel Vadot properties: 186*c66ec88fSEmmanuel Vadot interrupts: 187*c66ec88fSEmmanuel Vadot minItems: 3 188*c66ec88fSEmmanuel Vadot maxItems: 3 189*c66ec88fSEmmanuel Vadot 190*c66ec88fSEmmanuel Vadot else: 191*c66ec88fSEmmanuel Vadot if: 192*c66ec88fSEmmanuel Vadot properties: 193*c66ec88fSEmmanuel Vadot compatible: 194*c66ec88fSEmmanuel Vadot enum: 195*c66ec88fSEmmanuel Vadot - allwinner,sun6i-a31-r-pinctrl 196*c66ec88fSEmmanuel Vadot - allwinner,sun8i-a33-pinctrl 197*c66ec88fSEmmanuel Vadot - allwinner,sun8i-h3-pinctrl 198*c66ec88fSEmmanuel Vadot - allwinner,sun8i-v3-pinctrl 199*c66ec88fSEmmanuel Vadot - allwinner,sun8i-v3s-pinctrl 200*c66ec88fSEmmanuel Vadot - allwinner,sun9i-a80-r-pinctrl 201*c66ec88fSEmmanuel Vadot - allwinner,sun50i-h6-r-pinctrl 202*c66ec88fSEmmanuel Vadot 203*c66ec88fSEmmanuel Vadot then: 204*c66ec88fSEmmanuel Vadot properties: 205*c66ec88fSEmmanuel Vadot interrupts: 206*c66ec88fSEmmanuel Vadot minItems: 2 207*c66ec88fSEmmanuel Vadot maxItems: 2 208*c66ec88fSEmmanuel Vadot 209*c66ec88fSEmmanuel Vadot else: 210*c66ec88fSEmmanuel Vadot properties: 211*c66ec88fSEmmanuel Vadot interrupts: 212*c66ec88fSEmmanuel Vadot minItems: 1 213*c66ec88fSEmmanuel Vadot maxItems: 1 214*c66ec88fSEmmanuel Vadot 215*c66ec88fSEmmanuel VadotadditionalProperties: false 216*c66ec88fSEmmanuel Vadot 217*c66ec88fSEmmanuel Vadotexamples: 218*c66ec88fSEmmanuel Vadot - | 219*c66ec88fSEmmanuel Vadot #include <dt-bindings/clock/sun5i-ccu.h> 220*c66ec88fSEmmanuel Vadot 221*c66ec88fSEmmanuel Vadot pio: pinctrl@1c20800 { 222*c66ec88fSEmmanuel Vadot compatible = "allwinner,sun5i-a13-pinctrl"; 223*c66ec88fSEmmanuel Vadot reg = <0x01c20800 0x400>; 224*c66ec88fSEmmanuel Vadot interrupts = <28>; 225*c66ec88fSEmmanuel Vadot clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>; 226*c66ec88fSEmmanuel Vadot clock-names = "apb", "hosc", "losc"; 227*c66ec88fSEmmanuel Vadot gpio-controller; 228*c66ec88fSEmmanuel Vadot interrupt-controller; 229*c66ec88fSEmmanuel Vadot #interrupt-cells = <3>; 230*c66ec88fSEmmanuel Vadot #gpio-cells = <3>; 231*c66ec88fSEmmanuel Vadot 232*c66ec88fSEmmanuel Vadot uart1_pe_pins: uart1-pe-pins { 233*c66ec88fSEmmanuel Vadot pins = "PE10", "PE11"; 234*c66ec88fSEmmanuel Vadot function = "uart1"; 235*c66ec88fSEmmanuel Vadot }; 236*c66ec88fSEmmanuel Vadot 237*c66ec88fSEmmanuel Vadot uart1_pg_pins: uart1-pg-pins { 238*c66ec88fSEmmanuel Vadot pins = "PG3", "PG4"; 239*c66ec88fSEmmanuel Vadot function = "uart1"; 240*c66ec88fSEmmanuel Vadot }; 241*c66ec88fSEmmanuel Vadot }; 242