1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/adc/samsung,exynos-adc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos Analog to Digital Converter (ADC)
8
9maintainers:
10  - Krzysztof Kozlowski <krzk@kernel.org>
11
12properties:
13  compatible:
14    enum:
15      - samsung,exynos-adc-v1                 # Exynos5250
16      - samsung,exynos-adc-v2
17      - samsung,exynos3250-adc
18      - samsung,exynos4212-adc                # Exynos4212 and Exynos4412
19      - samsung,exynos7-adc
20      - samsung,s3c2410-adc
21      - samsung,s3c2416-adc
22      - samsung,s3c2440-adc
23      - samsung,s3c2443-adc
24      - samsung,s3c6410-adc
25      - samsung,s5pv210-adc
26
27  reg:
28    maxItems: 1
29
30  clocks:
31    description:
32      Phandle to ADC bus clock. For Exynos3250 additional clock is needed.
33    minItems: 1
34    maxItems: 2
35
36  clock-names:
37    description:
38      Must contain clock names (adc, sclk) matching phandles in clocks
39      property.
40    minItems: 1
41    maxItems: 2
42
43  interrupts:
44    description:
45      ADC interrupt followed by optional touchscreen interrupt.
46    minItems: 1
47    maxItems: 2
48
49  "#io-channel-cells":
50    const: 1
51
52  io-channel-ranges: true
53
54  vdd-supply: true
55
56  samsung,syscon-phandle:
57    $ref: '/schemas/types.yaml#/definitions/phandle'
58    description:
59      Phandle to the PMU system controller node (to access the ADC_PHY
60      register on Exynos3250/4x12/5250/5420/5800).
61
62  has-touchscreen:
63    description:
64      If present, indicates that a touchscreen is connected and usable.
65    type: boolean
66
67required:
68  - compatible
69  - reg
70  - clocks
71  - clock-names
72  - interrupts
73  - "#io-channel-cells"
74  - vdd-supply
75
76additionalProperties:
77  type: object
78
79allOf:
80  - if:
81      properties:
82        compatible:
83          contains:
84            enum:
85              - samsung,exynos-adc-v1
86              - samsung,exynos-adc-v2
87              - samsung,exynos3250-adc
88              - samsung,exynos4212-adc
89    then:
90      required:
91        - samsung,syscon-phandle
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            enum:
98              - samsung,exynos3250-adc
99    then:
100      properties:
101        clocks:
102          minItems: 2
103          maxItems: 2
104        clock-names:
105          items:
106            - const: adc
107            - const: sclk
108    else:
109      properties:
110        clocks:
111          minItems: 1
112          maxItems: 1
113        clock-names:
114          items:
115            - const: adc
116
117  - if:
118      required:
119        - has-touchscreen
120    then:
121      properties:
122        interrupts:
123          minItems: 2
124          maxItems: 2
125
126examples:
127  - |
128    adc: adc@12d10000 {
129        compatible = "samsung,exynos-adc-v1";
130        reg = <0x12d10000 0x100>;
131        interrupts = <0 106 0>;
132        #io-channel-cells = <1>;
133        io-channel-ranges;
134
135        clocks = <&clock 303>;
136        clock-names = "adc";
137
138        vdd-supply = <&buck5_reg>;
139        samsung,syscon-phandle = <&pmu_system_controller>;
140
141        /* NTC thermistor is a hwmon device */
142        ncp15wb473 {
143            compatible = "murata,ncp15wb473";
144            pullup-uv = <1800000>;
145            pullup-ohm = <47000>;
146            pulldown-ohm = <0>;
147            io-channels = <&adc 4>;
148          };
149    };
150
151  - |
152    #include <dt-bindings/clock/exynos3250.h>
153
154    adc@126c0000 {
155        compatible = "samsung,exynos3250-adc";
156        reg = <0x126C0000 0x100>;
157        interrupts = <0 137 0>;
158        #io-channel-cells = <1>;
159        io-channel-ranges;
160
161        clocks = <&cmu CLK_TSADC>,
162                 <&cmu CLK_SCLK_TSADC>;
163        clock-names = "adc", "sclk";
164
165        vdd-supply = <&buck5_reg>;
166        samsung,syscon-phandle = <&pmu_system_controller>;
167    };
168