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  vdd-supply: true
53
54  samsung,syscon-phandle:
55    $ref: '/schemas/types.yaml#/definitions/phandle'
56    description:
57      Phandle to the PMU system controller node (to access the ADC_PHY
58      register on Exynos3250/4x12/5250/5420/5800).
59
60  has-touchscreen:
61    description:
62      If present, indicates that a touchscreen is connected and usable.
63    type: boolean
64
65required:
66  - compatible
67  - reg
68  - clocks
69  - clock-names
70  - interrupts
71  - "#io-channel-cells"
72  - vdd-supply
73
74additionalProperties:
75  type: object
76
77allOf:
78  - if:
79      properties:
80        compatible:
81          contains:
82            enum:
83              - samsung,exynos-adc-v1
84              - samsung,exynos-adc-v2
85              - samsung,exynos3250-adc
86              - samsung,exynos4212-adc
87    then:
88      required:
89        - samsung,syscon-phandle
90
91  - if:
92      properties:
93        compatible:
94          contains:
95            enum:
96              - samsung,exynos3250-adc
97    then:
98      properties:
99        clocks:
100          minItems: 2
101          maxItems: 2
102        clock-names:
103          items:
104            - const: adc
105            - const: sclk
106    else:
107      properties:
108        clocks:
109          minItems: 1
110          maxItems: 1
111        clock-names:
112          items:
113            - const: adc
114
115  - if:
116      required:
117        - has-touchscreen
118    then:
119      properties:
120        interrupts:
121          minItems: 2
122          maxItems: 2
123
124examples:
125  - |
126    adc: adc@12d10000 {
127        compatible = "samsung,exynos-adc-v1";
128        reg = <0x12d10000 0x100>;
129        interrupts = <0 106 0>;
130        #io-channel-cells = <1>;
131
132        clocks = <&clock 303>;
133        clock-names = "adc";
134
135        vdd-supply = <&buck5_reg>;
136        samsung,syscon-phandle = <&pmu_system_controller>;
137
138        /* NTC thermistor is a hwmon device */
139        thermistor {
140            compatible = "murata,ncp15wb473";
141            pullup-uv = <1800000>;
142            pullup-ohm = <47000>;
143            pulldown-ohm = <0>;
144            io-channels = <&adc 4>;
145          };
146    };
147
148  - |
149    #include <dt-bindings/clock/exynos3250.h>
150
151    adc@126c0000 {
152        compatible = "samsung,exynos3250-adc";
153        reg = <0x126C0000 0x100>;
154        interrupts = <0 137 0>;
155        #io-channel-cells = <1>;
156
157        clocks = <&cmu CLK_TSADC>,
158                 <&cmu CLK_SCLK_TSADC>;
159        clock-names = "adc", "sclk";
160
161        vdd-supply = <&buck5_reg>;
162        samsung,syscon-phandle = <&pmu_system_controller>;
163    };
164