xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/amlogic,pinctrl-a4.yaml (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/amlogic,pinctrl-a4.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Amlogic pinmux controller
8
9maintainers:
10  - Xianwei Zhao <xianwei.zhao@amlogic.com>
11
12allOf:
13  - $ref: pinctrl.yaml#
14
15properties:
16  compatible:
17    oneOf:
18      - enum:
19          - amlogic,pinctrl-a4
20          - amlogic,pinctrl-s6
21          - amlogic,pinctrl-s7
22      - items:
23          - enum:
24              - amlogic,pinctrl-a5
25          - const: amlogic,pinctrl-a4
26      - items:
27          - enum:
28              - amlogic,pinctrl-s7d
29          - const: amlogic,pinctrl-s7
30
31  "#address-cells":
32    const: 2
33
34  "#size-cells":
35    const: 2
36
37  ranges: true
38
39patternProperties:
40  "^gpio@[0-9a-f]+$":
41    type: object
42
43    additionalProperties: false
44    properties:
45      reg:
46        minItems: 1
47        items:
48          - description: pin config register
49          - description: pin mux setting register (some special pin fixed function)
50          - description: pin drive strength register (optional)
51
52      reg-names:
53        minItems: 1
54        items:
55          - const: gpio
56          - const: mux
57          - const: ds
58
59      gpio-controller: true
60
61      "#gpio-cells":
62        const: 2
63
64      gpio-ranges:
65        maxItems: 1
66
67    required:
68      - reg
69      - reg-names
70      - gpio-controller
71      - "#gpio-cells"
72      - gpio-ranges
73
74  "^func-[0-9a-z-]+$":
75    type: object
76    additionalProperties: false
77    patternProperties:
78      "^group-[0-9a-z-]+$":
79        type: object
80        unevaluatedProperties: false
81        allOf:
82          - $ref: /schemas/pinctrl/pincfg-node.yaml
83          - $ref: /schemas/pinctrl/pinmux-node.yaml
84
85        required:
86          - pinmux
87
88required:
89  - compatible
90  - "#address-cells"
91  - "#size-cells"
92  - ranges
93
94additionalProperties: false
95
96examples:
97  - |
98    #include <dt-bindings/pinctrl/amlogic,pinctrl.h>
99    apb {
100      #address-cells = <2>;
101      #size-cells = <2>;
102      periphs_pinctrl: pinctrl {
103        compatible = "amlogic,pinctrl-a4";
104        #address-cells = <2>;
105        #size-cells = <2>;
106        ranges;
107
108        gpio@4240 {
109          reg = <0 0x4240 0 0x40>, <0 0x4000 0 0x8>;
110          reg-names = "gpio", "mux";
111          gpio-controller;
112          #gpio-cells = <2>;
113          gpio-ranges = <&periphs_pinctrl 0 8 10>;
114        };
115
116        func-uart-b {
117          group-default {
118            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 1, 4)>;
119            bias-pull-up;
120            drive-strength-microamp = <4000>;
121          };
122
123          group-pins1 {
124            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 5, 2)>;
125            bias-pull-up;
126            drive-strength-microamp = <4000>;
127          };
128        };
129
130        func-uart-c {
131          group-default {
132            pinmux = <AML_PINMUX(AMLOGIC_GPIO_B, 3, 1)>,
133                     <AML_PINMUX(AMLOGIC_GPIO_B, 2, 1)>;
134            bias-pull-up;
135            drive-strength-microamp = <4000>;
136          };
137        };
138      };
139    };
140