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,sun50i-a64-pwm
29          - const: allwinner,sun5i-a13-pwm
30      - items:
31          - const: allwinner,sun50i-h5-pwm
32          - const: allwinner,sun5i-a13-pwm
33      - const: allwinner,sun50i-h6-pwm
34
35  reg:
36    maxItems: 1
37
38  clocks:
39    minItems: 1
40    maxItems: 2
41    items:
42      - description: Module Clock
43      - description: Bus Clock
44
45  # Even though it only applies to subschemas under the conditionals,
46  # not listing them here will trigger a warning because of the
47  # additionalsProperties set to false.
48  clock-names: true
49
50  resets:
51    maxItems: 1
52
53if:
54  properties:
55    compatible:
56      contains:
57        const: allwinner,sun50i-h6-pwm
58
59then:
60  properties:
61    clocks:
62      maxItems: 2
63
64    clock-names:
65      items:
66        - const: mod
67        - const: bus
68
69  required:
70    - clock-names
71    - resets
72
73else:
74  properties:
75    clocks:
76      maxItems: 1
77
78required:
79  - "#pwm-cells"
80  - compatible
81  - reg
82  - clocks
83
84additionalProperties: false
85
86examples:
87  - |
88    pwm: pwm@1c20e00 {
89        compatible = "allwinner,sun7i-a20-pwm";
90        reg = <0x01c20e00 0xc>;
91        clocks = <&osc24M>;
92        #pwm-cells = <3>;
93    };
94
95  - |
96    #include <dt-bindings/clock/sun50i-h6-ccu.h>
97    #include <dt-bindings/reset/sun50i-h6-ccu.h>
98
99    pwm@300a000 {
100      compatible = "allwinner,sun50i-h6-pwm";
101      reg = <0x0300a000 0x400>;
102      clocks = <&osc24M>, <&ccu CLK_BUS_PWM>;
103      clock-names = "mod", "bus";
104      resets = <&ccu RST_BUS_PWM>;
105      #pwm-cells = <3>;
106    };
107
108...
109