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