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 515e842dc2SYangtao Li - allwinner,sun50i-a100-pinctrl 525e842dc2SYangtao Li - allwinner,sun50i-a100-r-pinctrl 53e3dcb725SMaxime Ripard - allwinner,sun50i-h5-pinctrl 54e3dcb725SMaxime Ripard - allwinner,sun50i-h6-pinctrl 55e3dcb725SMaxime Ripard - allwinner,sun50i-h6-r-pinctrl 56fdca7cb9SAndre Przywara - allwinner,sun50i-h616-pinctrl 57fdca7cb9SAndre Przywara - allwinner,sun50i-h616-r-pinctrl 58e3dcb725SMaxime Ripard - allwinner,suniv-f1c100s-pinctrl 59e3dcb725SMaxime Ripard - nextthing,gr8-pinctrl 60e3dcb725SMaxime Ripard 61e3dcb725SMaxime Ripard reg: 62e3dcb725SMaxime Ripard maxItems: 1 63e3dcb725SMaxime Ripard 64e3dcb725SMaxime Ripard interrupts: 65e3dcb725SMaxime Ripard minItems: 1 66fdca7cb9SAndre Przywara maxItems: 8 67e3dcb725SMaxime Ripard description: 68e3dcb725SMaxime Ripard One interrupt per external interrupt bank supported on the 69e3dcb725SMaxime Ripard controller, sorted by bank number ascending order. 70e3dcb725SMaxime Ripard 71e3dcb725SMaxime Ripard clocks: 72e3dcb725SMaxime Ripard items: 73e3dcb725SMaxime Ripard - description: Bus Clock 74e3dcb725SMaxime Ripard - description: High Frequency Oscillator 75e3dcb725SMaxime Ripard - description: Low Frequency Oscillator 76e3dcb725SMaxime Ripard 77e3dcb725SMaxime Ripard clock-names: 78e3dcb725SMaxime Ripard items: 79e3dcb725SMaxime Ripard - const: apb 80e3dcb725SMaxime Ripard - const: hosc 81e3dcb725SMaxime Ripard - const: losc 82e3dcb725SMaxime Ripard 83e3dcb725SMaxime Ripard gpio-controller: true 84e3dcb725SMaxime Ripard interrupt-controller: true 85e3dcb725SMaxime Ripard gpio-line-names: true 86e3dcb725SMaxime Ripard 87e3dcb725SMaxime Ripard input-debounce: 88e3dcb725SMaxime Ripard description: 89e3dcb725SMaxime Ripard Debouncing periods in microseconds, one period per interrupt 90e3dcb725SMaxime Ripard bank found in the controller 913d21a460SRob Herring $ref: /schemas/types.yaml#/definitions/uint32-array 923d21a460SRob Herring minItems: 1 93fdca7cb9SAndre Przywara maxItems: 8 94e3dcb725SMaxime Ripard 95e3dcb725SMaxime RipardpatternProperties: 96e3dcb725SMaxime Ripard # It's pretty scary, but the basic idea is that: 97e3dcb725SMaxime Ripard # - One node name can start with either s- or r- for PRCM nodes, 98e3dcb725SMaxime Ripard # - Then, the name itself can be any repetition of <string>- (to 99e3dcb725SMaxime Ripard # accomodate with nodes like uart4-rts-cts-pins), where each 100e3dcb725SMaxime Ripard # string can be either starting with 'p' but in a string longer 101e3dcb725SMaxime Ripard # than 3, or something that doesn't start with 'p', 102e3dcb725SMaxime Ripard # - Then, the bank name is optional and will be between pa and pg, 103e3dcb725SMaxime Ripard # pl or pm. Some pins groups that have several options will have 104e3dcb725SMaxime Ripard # the pin numbers then, 105e3dcb725SMaxime Ripard # - Finally, the name will end with either -pin or pins. 106e3dcb725SMaxime Ripard 107e3dcb725SMaxime Ripard "^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$": 108e3dcb725SMaxime Ripard type: object 109e3dcb725SMaxime Ripard 110e3dcb725SMaxime Ripard properties: 111e3dcb725SMaxime Ripard pins: true 112e3dcb725SMaxime Ripard function: true 113e3dcb725SMaxime Ripard bias-disable: true 114e3dcb725SMaxime Ripard bias-pull-up: true 115e3dcb725SMaxime Ripard bias-pull-down: true 116e3dcb725SMaxime Ripard 117e3dcb725SMaxime Ripard drive-strength: 1183d21a460SRob Herring $ref: /schemas/types.yaml#/definitions/uint32 1193d21a460SRob Herring enum: [10, 20, 30, 40] 120e3dcb725SMaxime Ripard 121e3dcb725SMaxime Ripard required: 122e3dcb725SMaxime Ripard - pins 123e3dcb725SMaxime Ripard - function 124e3dcb725SMaxime Ripard 125e3dcb725SMaxime Ripard additionalProperties: false 126e3dcb725SMaxime Ripard 127e3dcb725SMaxime Ripard "^vcc-p[a-hlm]-supply$": 128e3dcb725SMaxime Ripard description: 129e3dcb725SMaxime Ripard Power supplies for pin banks. 130e3dcb725SMaxime Ripard 131e3dcb725SMaxime Ripardrequired: 132e3dcb725SMaxime Ripard - "#gpio-cells" 133e3dcb725SMaxime Ripard - compatible 134e3dcb725SMaxime Ripard - reg 135e3dcb725SMaxime Ripard - clocks 136e3dcb725SMaxime Ripard - clock-names 137e3dcb725SMaxime Ripard - gpio-controller 138e3dcb725SMaxime Ripard 139e3dcb725SMaxime RipardallOf: 140e3dcb725SMaxime Ripard # FIXME: We should have the pin bank supplies here, but not a lot of 141e3dcb725SMaxime Ripard # boards are defining it at the moment so it would generate a lot of 142e3dcb725SMaxime Ripard # warnings. 143e3dcb725SMaxime Ripard 144c09acbc4SRafał Miłecki - $ref: "pinctrl.yaml#" 145e3dcb725SMaxime Ripard - if: 146*ee84131bSAndre Przywara not: 147*ee84131bSAndre Przywara properties: 148*ee84131bSAndre Przywara compatible: 149*ee84131bSAndre Przywara enum: 150*ee84131bSAndre Przywara - allwinner,sun50i-h616-r-pinctrl 151*ee84131bSAndre Przywara 152*ee84131bSAndre Przywara then: 153*ee84131bSAndre Przywara required: 154*ee84131bSAndre Przywara - "#interrupt-cells" 155*ee84131bSAndre Przywara - interrupts 156*ee84131bSAndre Przywara - interrupt-controller 157*ee84131bSAndre Przywara 158*ee84131bSAndre Przywara - if: 159e3dcb725SMaxime Ripard properties: 160e3dcb725SMaxime Ripard compatible: 161e3dcb725SMaxime Ripard enum: 162fdca7cb9SAndre Przywara - allwinner,sun50i-h616-pinctrl 163fdca7cb9SAndre Przywara 164fdca7cb9SAndre Przywara then: 165fdca7cb9SAndre Przywara properties: 166fdca7cb9SAndre Przywara interrupts: 167fdca7cb9SAndre Przywara minItems: 8 168fdca7cb9SAndre Przywara 169fdca7cb9SAndre Przywara - if: 170fdca7cb9SAndre Przywara properties: 171fdca7cb9SAndre Przywara compatible: 172fdca7cb9SAndre Przywara enum: 1735e842dc2SYangtao Li - allwinner,sun50i-a100-pinctrl 1745e842dc2SYangtao Li 1755e842dc2SYangtao Li then: 1765e842dc2SYangtao Li properties: 1775e842dc2SYangtao Li interrupts: 1785e842dc2SYangtao Li minItems: 7 1795e842dc2SYangtao Li maxItems: 7 1805e842dc2SYangtao Li 1815e842dc2SYangtao Li - if: 1825e842dc2SYangtao Li properties: 1835e842dc2SYangtao Li compatible: 1845e842dc2SYangtao Li enum: 185e3dcb725SMaxime Ripard - allwinner,sun9i-a80-pinctrl 186e3dcb725SMaxime Ripard 187e3dcb725SMaxime Ripard then: 188e3dcb725SMaxime Ripard properties: 189e3dcb725SMaxime Ripard interrupts: 190e3dcb725SMaxime Ripard minItems: 5 191e3dcb725SMaxime Ripard maxItems: 5 192e3dcb725SMaxime Ripard 19396bef667SYangtao Li - if: 194e3dcb725SMaxime Ripard properties: 195e3dcb725SMaxime Ripard compatible: 196e3dcb725SMaxime Ripard enum: 197e3dcb725SMaxime Ripard - allwinner,sun6i-a31-pinctrl 198e3dcb725SMaxime Ripard - allwinner,sun6i-a31s-pinctrl 199e3dcb725SMaxime Ripard - allwinner,sun50i-h6-pinctrl 200e3dcb725SMaxime Ripard 201e3dcb725SMaxime Ripard then: 202e3dcb725SMaxime Ripard properties: 203e3dcb725SMaxime Ripard interrupts: 204e3dcb725SMaxime Ripard minItems: 4 205e3dcb725SMaxime Ripard maxItems: 4 206e3dcb725SMaxime Ripard 20796bef667SYangtao Li - if: 208e3dcb725SMaxime Ripard properties: 209e3dcb725SMaxime Ripard compatible: 210e3dcb725SMaxime Ripard enum: 211e3dcb725SMaxime Ripard - allwinner,sun8i-a23-pinctrl 212e3dcb725SMaxime Ripard - allwinner,sun8i-a83t-pinctrl 213e3dcb725SMaxime Ripard - allwinner,sun50i-a64-pinctrl 214e3dcb725SMaxime Ripard - allwinner,sun50i-h5-pinctrl 215e3dcb725SMaxime Ripard - allwinner,suniv-f1c100s-pinctrl 216e3dcb725SMaxime Ripard 217e3dcb725SMaxime Ripard then: 218e3dcb725SMaxime Ripard properties: 219e3dcb725SMaxime Ripard interrupts: 220e3dcb725SMaxime Ripard minItems: 3 221e3dcb725SMaxime Ripard maxItems: 3 222e3dcb725SMaxime Ripard 22396bef667SYangtao Li - if: 224e3dcb725SMaxime Ripard properties: 225e3dcb725SMaxime Ripard compatible: 226e3dcb725SMaxime Ripard enum: 227e3dcb725SMaxime Ripard - allwinner,sun6i-a31-r-pinctrl 228e3dcb725SMaxime Ripard - allwinner,sun8i-a33-pinctrl 229e3dcb725SMaxime Ripard - allwinner,sun8i-h3-pinctrl 230e3dcb725SMaxime Ripard - allwinner,sun8i-v3-pinctrl 231e3dcb725SMaxime Ripard - allwinner,sun8i-v3s-pinctrl 232e3dcb725SMaxime Ripard - allwinner,sun9i-a80-r-pinctrl 233e3dcb725SMaxime Ripard - allwinner,sun50i-h6-r-pinctrl 234e3dcb725SMaxime Ripard 235e3dcb725SMaxime Ripard then: 236e3dcb725SMaxime Ripard properties: 237e3dcb725SMaxime Ripard interrupts: 238e3dcb725SMaxime Ripard minItems: 2 239e3dcb725SMaxime Ripard maxItems: 2 240e3dcb725SMaxime Ripard 24196bef667SYangtao Li - if: 24296bef667SYangtao Li properties: 24396bef667SYangtao Li compatible: 24496bef667SYangtao Li enum: 24596bef667SYangtao Li - allwinner,sun4i-a10-pinctrl 24696bef667SYangtao Li - allwinner,sun5i-a10s-pinctrl 24796bef667SYangtao Li - allwinner,sun5i-a13-pinctrl 24896bef667SYangtao Li - allwinner,sun7i-a20-pinctrl 24996bef667SYangtao Li - allwinner,sun8i-a23-r-pinctrl 25096bef667SYangtao Li - allwinner,sun8i-a83t-r-pinctrl 25196bef667SYangtao Li - allwinner,sun8i-h3-r-pinctrl 25296bef667SYangtao Li - allwinner,sun8i-r40-pinctrl 25396bef667SYangtao Li - allwinner,sun50i-a64-r-pinctrl 2545e842dc2SYangtao Li - allwinner,sun50i-a100-r-pinctrl 25596bef667SYangtao Li - nextthing,gr8-pinctrl 25696bef667SYangtao Li 25796bef667SYangtao Li then: 258e3dcb725SMaxime Ripard properties: 259e3dcb725SMaxime Ripard interrupts: 260e3dcb725SMaxime Ripard minItems: 1 261e3dcb725SMaxime Ripard maxItems: 1 262e3dcb725SMaxime Ripard 263e3dcb725SMaxime RipardadditionalProperties: false 264e3dcb725SMaxime Ripard 265e3dcb725SMaxime Ripardexamples: 266e3dcb725SMaxime Ripard - | 267e3dcb725SMaxime Ripard #include <dt-bindings/clock/sun5i-ccu.h> 268e3dcb725SMaxime Ripard 269e3dcb725SMaxime Ripard pio: pinctrl@1c20800 { 270e3dcb725SMaxime Ripard compatible = "allwinner,sun5i-a13-pinctrl"; 271e3dcb725SMaxime Ripard reg = <0x01c20800 0x400>; 272e3dcb725SMaxime Ripard interrupts = <28>; 273e3dcb725SMaxime Ripard clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>; 274e3dcb725SMaxime Ripard clock-names = "apb", "hosc", "losc"; 275e3dcb725SMaxime Ripard gpio-controller; 276e3dcb725SMaxime Ripard interrupt-controller; 277e3dcb725SMaxime Ripard #interrupt-cells = <3>; 278e3dcb725SMaxime Ripard #gpio-cells = <3>; 279e3dcb725SMaxime Ripard 280e3dcb725SMaxime Ripard uart1_pe_pins: uart1-pe-pins { 281e3dcb725SMaxime Ripard pins = "PE10", "PE11"; 282e3dcb725SMaxime Ripard function = "uart1"; 283e3dcb725SMaxime Ripard }; 284e3dcb725SMaxime Ripard 285e3dcb725SMaxime Ripard uart1_pg_pins: uart1-pg-pins { 286e3dcb725SMaxime Ripard pins = "PG3", "PG4"; 287e3dcb725SMaxime Ripard function = "uart1"; 288e3dcb725SMaxime Ripard }; 289e3dcb725SMaxime Ripard }; 290