18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/ingenic,pinctrl.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Ingenic SoCs pin controller devicetree bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cidescription: >
108c2ecf20Sopenharmony_ci  Please refer to pinctrl-bindings.txt in this directory for details of the
118c2ecf20Sopenharmony_ci  common pinctrl bindings used by client devices, including the meaning of the
128c2ecf20Sopenharmony_ci  phrase "pin configuration node".
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci  For the Ingenic SoCs, pin control is tightly bound with GPIO ports. All pins
158c2ecf20Sopenharmony_ci  may be used as GPIOs, multiplexed device functions are configured within the
168c2ecf20Sopenharmony_ci  GPIO port configuration registers and it is typical to refer to pins using the
178c2ecf20Sopenharmony_ci  naming scheme "PxN" where x is a character identifying the GPIO port with
188c2ecf20Sopenharmony_ci  which the pin is associated and N is an integer from 0 to 31 identifying the
198c2ecf20Sopenharmony_ci  pin within that GPIO port. For example PA0 is the first pin in GPIO port A,
208c2ecf20Sopenharmony_ci  and PB31 is the last pin in GPIO port B. The JZ4740, the X1000 and the X1830
218c2ecf20Sopenharmony_ci  contains 4 GPIO ports, PA to PD, for a total of 128 pins. The JZ4760, the
228c2ecf20Sopenharmony_ci  JZ4770 and the JZ4780 contains 6 GPIO ports, PA to PF, for a total of 192
238c2ecf20Sopenharmony_ci  pins.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_cimaintainers:
268c2ecf20Sopenharmony_ci  - Paul Cercueil <paul@crapouillou.net>
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ciproperties:
298c2ecf20Sopenharmony_ci  nodename:
308c2ecf20Sopenharmony_ci    pattern: "^pinctrl@[0-9a-f]+$"
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  compatible:
338c2ecf20Sopenharmony_ci    oneOf:
348c2ecf20Sopenharmony_ci      - enum:
358c2ecf20Sopenharmony_ci          - ingenic,jz4740-pinctrl
368c2ecf20Sopenharmony_ci          - ingenic,jz4725b-pinctrl
378c2ecf20Sopenharmony_ci          - ingenic,jz4760-pinctrl
388c2ecf20Sopenharmony_ci          - ingenic,jz4770-pinctrl
398c2ecf20Sopenharmony_ci          - ingenic,jz4780-pinctrl
408c2ecf20Sopenharmony_ci          - ingenic,x1000-pinctrl
418c2ecf20Sopenharmony_ci          - ingenic,x1500-pinctrl
428c2ecf20Sopenharmony_ci          - ingenic,x1830-pinctrl
438c2ecf20Sopenharmony_ci      - items:
448c2ecf20Sopenharmony_ci          - const: ingenic,jz4760b-pinctrl
458c2ecf20Sopenharmony_ci          - const: ingenic,jz4760-pinctrl
468c2ecf20Sopenharmony_ci      - items:
478c2ecf20Sopenharmony_ci          - const: ingenic,x1000e-pinctrl
488c2ecf20Sopenharmony_ci          - const: ingenic,x1000-pinctrl
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci  reg:
518c2ecf20Sopenharmony_ci    maxItems: 1
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  "#address-cells":
548c2ecf20Sopenharmony_ci    const: 1
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci  "#size-cells":
578c2ecf20Sopenharmony_ci    const: 0
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cipatternProperties:
608c2ecf20Sopenharmony_ci  "^gpio@[0-9]$":
618c2ecf20Sopenharmony_ci    type: object
628c2ecf20Sopenharmony_ci    properties:
638c2ecf20Sopenharmony_ci      compatible:
648c2ecf20Sopenharmony_ci        enum:
658c2ecf20Sopenharmony_ci          - ingenic,jz4740-gpio
668c2ecf20Sopenharmony_ci          - ingenic,jz4725b-gpio
678c2ecf20Sopenharmony_ci          - ingenic,jz4760-gpio
688c2ecf20Sopenharmony_ci          - ingenic,jz4770-gpio
698c2ecf20Sopenharmony_ci          - ingenic,jz4780-gpio
708c2ecf20Sopenharmony_ci          - ingenic,x1000-gpio
718c2ecf20Sopenharmony_ci          - ingenic,x1500-gpio
728c2ecf20Sopenharmony_ci          - ingenic,x1830-gpio
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci      reg:
758c2ecf20Sopenharmony_ci        items:
768c2ecf20Sopenharmony_ci          - description: The GPIO bank number
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci      gpio-controller: true
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci      "#gpio-cells":
818c2ecf20Sopenharmony_ci        const: 2
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci      gpio-ranges:
848c2ecf20Sopenharmony_ci        maxItems: 1
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci      interrupt-controller: true
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci      "#interrupt-cells":
898c2ecf20Sopenharmony_ci        const: 2
908c2ecf20Sopenharmony_ci        description:
918c2ecf20Sopenharmony_ci          Refer to ../interrupt-controller/interrupts.txt for more details.
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci      interrupts:
948c2ecf20Sopenharmony_ci        maxItems: 1
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci    required:
978c2ecf20Sopenharmony_ci      - compatible
988c2ecf20Sopenharmony_ci      - reg
998c2ecf20Sopenharmony_ci      - gpio-controller
1008c2ecf20Sopenharmony_ci      - "#gpio-cells"
1018c2ecf20Sopenharmony_ci      - interrupts
1028c2ecf20Sopenharmony_ci      - interrupt-controller
1038c2ecf20Sopenharmony_ci      - "#interrupt-cells"
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci    additionalProperties: false
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_cirequired:
1088c2ecf20Sopenharmony_ci  - compatible
1098c2ecf20Sopenharmony_ci  - reg
1108c2ecf20Sopenharmony_ci  - "#address-cells"
1118c2ecf20Sopenharmony_ci  - "#size-cells"
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ciadditionalProperties:
1148c2ecf20Sopenharmony_ci  anyOf:
1158c2ecf20Sopenharmony_ci    - type: object
1168c2ecf20Sopenharmony_ci      allOf:
1178c2ecf20Sopenharmony_ci        - $ref: pincfg-node.yaml#
1188c2ecf20Sopenharmony_ci        - $ref: pinmux-node.yaml#
1198c2ecf20Sopenharmony_ci
1208c2ecf20Sopenharmony_ci      properties:
1218c2ecf20Sopenharmony_ci        phandle: true
1228c2ecf20Sopenharmony_ci        function: true
1238c2ecf20Sopenharmony_ci        groups: true
1248c2ecf20Sopenharmony_ci        pins: true
1258c2ecf20Sopenharmony_ci        bias-disable: true
1268c2ecf20Sopenharmony_ci        bias-pull-up: true
1278c2ecf20Sopenharmony_ci        bias-pull-down: true
1288c2ecf20Sopenharmony_ci        output-low: true
1298c2ecf20Sopenharmony_ci        output-high: true
1308c2ecf20Sopenharmony_ci      additionalProperties: false
1318c2ecf20Sopenharmony_ci
1328c2ecf20Sopenharmony_ci    - type: object
1338c2ecf20Sopenharmony_ci      properties:
1348c2ecf20Sopenharmony_ci        phandle: true
1358c2ecf20Sopenharmony_ci      additionalProperties:
1368c2ecf20Sopenharmony_ci        type: object
1378c2ecf20Sopenharmony_ci        allOf:
1388c2ecf20Sopenharmony_ci          - $ref: pincfg-node.yaml#
1398c2ecf20Sopenharmony_ci          - $ref: pinmux-node.yaml#
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci        properties:
1428c2ecf20Sopenharmony_ci          phandle: true
1438c2ecf20Sopenharmony_ci          function: true
1448c2ecf20Sopenharmony_ci          groups: true
1458c2ecf20Sopenharmony_ci          pins: true
1468c2ecf20Sopenharmony_ci          bias-disable: true
1478c2ecf20Sopenharmony_ci          bias-pull-up: true
1488c2ecf20Sopenharmony_ci          bias-pull-down: true
1498c2ecf20Sopenharmony_ci          output-low: true
1508c2ecf20Sopenharmony_ci          output-high: true
1518c2ecf20Sopenharmony_ci        additionalProperties: false
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ciexamples:
1548c2ecf20Sopenharmony_ci  - |
1558c2ecf20Sopenharmony_ci    pin-controller@10010000 {
1568c2ecf20Sopenharmony_ci      compatible = "ingenic,jz4770-pinctrl";
1578c2ecf20Sopenharmony_ci      reg = <0x10010000 0x600>;
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci      #address-cells = <1>;
1608c2ecf20Sopenharmony_ci      #size-cells = <0>;
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci      gpio@0 {
1638c2ecf20Sopenharmony_ci        compatible = "ingenic,jz4770-gpio";
1648c2ecf20Sopenharmony_ci        reg = <0>;
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ci        gpio-controller;
1678c2ecf20Sopenharmony_ci        gpio-ranges = <&pinctrl 0 0 32>;
1688c2ecf20Sopenharmony_ci        #gpio-cells = <2>;
1698c2ecf20Sopenharmony_ci
1708c2ecf20Sopenharmony_ci        interrupt-controller;
1718c2ecf20Sopenharmony_ci        #interrupt-cells = <2>;
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci        interrupt-parent = <&intc>;
1748c2ecf20Sopenharmony_ci        interrupts = <17>;
1758c2ecf20Sopenharmony_ci      };
1768c2ecf20Sopenharmony_ci    };
177