xref: /linux/Documentation/devicetree/bindings/pwm/pwm-amlogic.yaml (revision 7f71507851fc7764b36a3221839607d3a45c2025)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pwm/pwm-amlogic.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Amlogic PWM
8
9maintainers:
10  - Heiner Kallweit <hkallweit1@gmail.com>
11
12properties:
13  compatible:
14    oneOf:
15      - enum:
16          - amlogic,meson8b-pwm
17          - amlogic,meson-gxbb-pwm
18          - amlogic,meson-gxbb-ao-pwm
19          - amlogic,meson-axg-ee-pwm
20          - amlogic,meson-axg-ao-pwm
21          - amlogic,meson-g12a-ee-pwm
22          - amlogic,meson-g12a-ao-pwm-ab
23          - amlogic,meson-g12a-ao-pwm-cd
24        deprecated: true
25      - items:
26          - const: amlogic,meson-gx-pwm
27          - const: amlogic,meson-gxbb-pwm
28        deprecated: true
29      - items:
30          - const: amlogic,meson-gx-ao-pwm
31          - const: amlogic,meson-gxbb-ao-pwm
32        deprecated: true
33      - items:
34          - const: amlogic,meson8-pwm
35          - const: amlogic,meson8b-pwm
36        deprecated: true
37      - enum:
38          - amlogic,meson8-pwm-v2
39          - amlogic,meson-s4-pwm
40      - items:
41          - enum:
42              - amlogic,c3-pwm
43              - amlogic,meson-a1-pwm
44          - const: amlogic,meson-s4-pwm
45      - items:
46          - enum:
47              - amlogic,meson8b-pwm-v2
48              - amlogic,meson-gxbb-pwm-v2
49              - amlogic,meson-axg-pwm-v2
50              - amlogic,meson-g12-pwm-v2
51          - const: amlogic,meson8-pwm-v2
52
53  reg:
54    maxItems: 1
55
56  clocks:
57    minItems: 1
58    maxItems: 4
59
60  clock-names:
61    minItems: 1
62    maxItems: 2
63
64  power-domains:
65    maxItems: 1
66
67  "#pwm-cells":
68    const: 3
69
70required:
71  - compatible
72  - reg
73
74allOf:
75  - $ref: pwm.yaml#
76
77  - if:
78      properties:
79        compatible:
80          contains:
81            enum:
82              - amlogic,meson8-pwm
83              - amlogic,meson8b-pwm
84              - amlogic,meson-gxbb-pwm
85              - amlogic,meson-gxbb-ao-pwm
86              - amlogic,meson-axg-ee-pwm
87              - amlogic,meson-axg-ao-pwm
88              - amlogic,meson-g12a-ee-pwm
89              - amlogic,meson-g12a-ao-pwm-ab
90              - amlogic,meson-g12a-ao-pwm-cd
91    then:
92      # Obsolete historic bindings tied to the driver implementation
93      # The clocks provided here are meant to be matched with the input
94      # known (hard-coded) in the driver and used to select pwm clock
95      # source. Currently, the linux driver ignores this.
96      # This is kept to maintain ABI backward compatibility.
97      properties:
98        clocks:
99          maxItems: 2
100        clock-names:
101          oneOf:
102            - items:
103                - enum: [clkin0, clkin1]
104            - items:
105                - const: clkin0
106                - const: clkin1
107
108  # Newer binding where clock describe the actual clock inputs of the pwm
109  # block. These are necessary but some inputs may be grounded.
110  - if:
111      properties:
112        compatible:
113          contains:
114            enum:
115              - amlogic,meson8-pwm-v2
116    then:
117      properties:
118        clocks:
119          minItems: 1
120          items:
121            - description: input clock 0 of the pwm block
122            - description: input clock 1 of the pwm block
123            - description: input clock 2 of the pwm block
124            - description: input clock 3 of the pwm block
125        clock-names: false
126      required:
127        - clocks
128
129  # Newer IP block take a single input per channel, instead of 4 inputs
130  # for both channels
131  - if:
132      properties:
133        compatible:
134          contains:
135            enum:
136              - amlogic,meson-s4-pwm
137    then:
138      properties:
139        clocks:
140          items:
141            - description: input clock of PWM channel A
142            - description: input clock of PWM channel B
143        clock-names: false
144      required:
145        - clocks
146
147  - if:
148      properties:
149        compatible:
150          contains:
151            enum:
152              - amlogic,meson-a1-pwm
153    then:
154      required:
155        - power-domains
156
157additionalProperties: false
158
159examples:
160  - |
161    pwm@8550 {
162      compatible = "amlogic,meson-gxbb-pwm";
163      reg = <0x08550 0x10>;
164      clocks = <&xtal>, <&xtal>;
165      clock-names = "clkin0", "clkin1";
166      #pwm-cells = <3>;
167    };
168  - |
169    pwm@2000 {
170      compatible = "amlogic,meson8-pwm-v2";
171      reg = <0x1000 0x10>;
172      clocks = <&xtal>, <0>, <&fdiv4>, <&fdiv5>;
173      #pwm-cells = <3>;
174    };
175  - |
176    pwm@1000 {
177      compatible = "amlogic,meson-s4-pwm";
178      reg = <0x1000 0x10>;
179      clocks = <&pwm_src_a>, <&pwm_src_b>;
180      #pwm-cells = <3>;
181    };
182