1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pwm/allwinner,sun4i-a10-pwm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Allwinner A10 PWM Device Tree Bindings
8
9maintainers:
10  - Chen-Yu Tsai <wens@csie.org>
11  - Maxime Ripard <mripard@kernel.org>
12
13properties:
14  "#pwm-cells":
15    const: 3
16
17  compatible:
18    oneOf:
19      - const: allwinner,sun4i-a10-pwm
20      - const: allwinner,sun5i-a10s-pwm
21      - const: allwinner,sun5i-a13-pwm
22      - const: allwinner,sun7i-a20-pwm
23      - const: allwinner,sun8i-h3-pwm
24      - items:
25          - const: allwinner,sun8i-a83t-pwm
26          - const: allwinner,sun8i-h3-pwm
27      - items:
28          - const: allwinner,sun8i-v3s-pwm
29          - const: allwinner,sun7i-a20-pwm
30      - items:
31          - const: allwinner,sun50i-a64-pwm
32          - const: allwinner,sun5i-a13-pwm
33      - items:
34          - const: allwinner,sun50i-h5-pwm
35          - const: allwinner,sun5i-a13-pwm
36      - const: allwinner,sun50i-h6-pwm
37
38  reg:
39    maxItems: 1
40
41  clocks:
42    minItems: 1
43    items:
44      - description: Module Clock
45      - description: Bus Clock
46
47  # Even though it only applies to subschemas under the conditionals,
48  # not listing them here will trigger a warning because of the
49  # additionalsProperties set to false.
50  clock-names: true
51
52  resets:
53    maxItems: 1
54
55if:
56  properties:
57    compatible:
58      contains:
59        const: allwinner,sun50i-h6-pwm
60
61then:
62  properties:
63    clocks:
64      maxItems: 2
65
66    clock-names:
67      items:
68        - const: mod
69        - const: bus
70
71  required:
72    - clock-names
73    - resets
74
75else:
76  properties:
77    clocks:
78      maxItems: 1
79
80required:
81  - "#pwm-cells"
82  - compatible
83  - reg
84  - clocks
85
86additionalProperties: false
87
88examples:
89  - |
90    pwm: pwm@1c20e00 {
91        compatible = "allwinner,sun7i-a20-pwm";
92        reg = <0x01c20e00 0xc>;
93        clocks = <&osc24M>;
94        #pwm-cells = <3>;
95    };
96
97  - |
98    #include <dt-bindings/clock/sun50i-h6-ccu.h>
99    #include <dt-bindings/reset/sun50i-h6-ccu.h>
100
101    pwm@300a000 {
102      compatible = "allwinner,sun50i-h6-pwm";
103      reg = <0x0300a000 0x400>;
104      clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
105      clock-names = "mod", "bus";
106      resets = <&ccu RST_BUS_PWM>;
107      #pwm-cells = <3>;
108    };
109
110...
111