Merge branch 'for-5.14/logitech' into for-linus
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / pwm / pwm-samsung.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/pwm/pwm-samsung.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Samsung SoC PWM timers
8
9 maintainers:
10   - Thierry Reding <thierry.reding@gmail.com>
11   - Krzysztof Kozlowski <krzk@kernel.org>
12
13 description: |+
14   Samsung SoCs contain PWM timer blocks which can be used for system clock source
15   and clock event timers, as well as to drive SoC outputs with PWM signal. Each
16   PWM timer block provides 5 PWM channels (not all of them can drive physical
17   outputs - see SoC and board manual).
18
19   Be aware that the clocksource driver supports only uniprocessor systems.
20
21 properties:
22   compatible:
23     enum:
24       - samsung,s3c2410-pwm             # 16-bit, S3C24xx
25       - samsung,s3c6400-pwm             # 32-bit, S3C64xx
26       - samsung,s5p6440-pwm             # 32-bit, S5P64x0
27       - samsung,s5pc100-pwm             # 32-bit, S5PC100, S5PV210, Exynos4210 rev0 SoCs
28       - samsung,exynos4210-pwm          # 32-bit, Exynos
29
30   reg:
31     maxItems: 1
32
33   clocks:
34     minItems: 1
35     maxItems: 3
36
37   clock-names:
38     description: |
39       Should contain all following required clock names:
40       - "timers" - PWM base clock used to generate PWM signals,
41       and any subset of following optional clock names:
42       - "pwm-tclk0" - first external PWM clock source,
43       - "pwm-tclk1" - second external PWM clock source.
44       Note that not all IP variants allow using all external clock sources.
45       Refer to SoC documentation to learn which clock source configurations
46       are available.
47     oneOf:
48       - items:
49           - const: timers
50       - items:
51           - const: timers
52           - const: pwm-tclk0
53       - items:
54           - const: timers
55           - const: pwm-tclk1
56       - items:
57           - const: timers
58           - const: pwm-tclk0
59           - const: pwm-tclk1
60
61   interrupts:
62     description:
63       One interrupt per timer, starting at timer 0. Necessary only for SoCs which
64       use PWM clocksource.
65     minItems: 1
66     maxItems: 5
67
68   "#pwm-cells":
69     description:
70       The only third cell flag supported by this binding
71       is PWM_POLARITY_INVERTED.
72     const: 3
73
74   samsung,pwm-outputs:
75     description:
76       A list of PWM channels used as PWM outputs on particular platform.
77       It is an array of up to 5 elements being indices of PWM channels
78       (from 0 to 4), the order does not matter.
79     $ref: /schemas/types.yaml#/definitions/uint32-array
80     uniqueItems: true
81     items:
82       minimum: 0
83       maximum: 4
84
85 required:
86   - clocks
87   - clock-names
88   - compatible
89   - "#pwm-cells"
90   - reg
91
92 additionalProperties: false
93
94 allOf:
95   - $ref: pwm.yaml#
96
97   - if:
98       properties:
99         compatible:
100           contains:
101             enum:
102               - samsung,s3c2410-pwm
103               - samsung,s3c6400-pwm
104               - samsung,s5p6440-pwm
105               - samsung,s5pc100-pwm
106     then:
107       required:
108         - interrupts
109
110 examples:
111   - |
112     pwm@7f006000 {
113         compatible = "samsung,s3c6400-pwm";
114         reg = <0x7f006000 0x1000>;
115         interrupt-parent = <&vic0>;
116         interrupts = <23>, <24>, <25>, <27>, <28>;
117         clocks = <&clock 67>;
118         clock-names = "timers";
119         samsung,pwm-outputs = <0>, <1>;
120         #pwm-cells = <3>;
121     };