1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/temperature/adi,ltc2983.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices LTC2983 Multi-sensor Temperature system
8
9maintainers:
10  - Nuno Sá <nuno.sa@analog.com>
11
12description: |
13  Analog Devices LTC2983 Multi-Sensor Digital Temperature Measurement System
14  https://www.analog.com/media/en/technical-documentation/data-sheets/2983fc.pdf
15
16properties:
17  compatible:
18    enum:
19      - adi,ltc2983
20
21  reg:
22    maxItems: 1
23
24  interrupts:
25    maxItems: 1
26
27  adi,mux-delay-config-us:
28    description:
29      The LTC2983 performs 2 or 3 internal conversion cycles per temperature
30      result. Each conversion cycle is performed with different excitation and
31      input multiplexer configurations. Prior to each conversion, these
32      excitation circuits and input switch configurations are changed and an
33      internal 1ms delay ensures settling prior to the conversion cycle in most
34      cases. An extra delay can be configured using this property. The value is
35      rounded to nearest 100us.
36    maximum: 255
37
38  adi,filter-notch-freq:
39    description:
40      Set's the default setting of the digital filter. The default is
41      simultaneous 50/60Hz rejection.
42      0 - 50/60Hz rejection
43      1 - 60Hz rejection
44      2 - 50Hz rejection
45    $ref: /schemas/types.yaml#/definitions/uint32
46    minimum: 0
47    maximum: 2
48
49  '#address-cells':
50    const: 1
51
52  '#size-cells':
53    const: 0
54
55patternProperties:
56  "@([1-9]|1[0-9]|20)$":
57    type: object
58
59    properties:
60      reg:
61        description:
62          The channel number. It can be connected to one of the 20 channels of
63          the device.
64        minimum: 1
65        maximum: 20
66
67      adi,sensor-type:
68        description: Identifies the type of sensor connected to the device.
69        $ref: /schemas/types.yaml#/definitions/uint32
70
71    required:
72      - reg
73      - adi,sensor-type
74
75  "^thermocouple@":
76    type: object
77    description:
78      Represents a thermocouple sensor which is connected to one of the device
79      channels.
80
81    properties:
82      adi,sensor-type:
83        description: |
84          1 - Type J Thermocouple
85          2 - Type K Thermocouple
86          3 - Type E Thermocouple
87          4 - Type N Thermocouple
88          5 - Type R Thermocouple
89          6 - Type S Thermocouple
90          7 - Type T Thermocouple
91          8 - Type B Thermocouple
92          9 - Custom Thermocouple
93        $ref: /schemas/types.yaml#/definitions/uint32
94        minimum: 1
95        maximum: 9
96
97      adi,single-ended:
98        description:
99          Boolean property which set's the thermocouple as single-ended.
100        type: boolean
101
102      adi,sensor-oc-current-microamp:
103        description:
104          This property set's the pulsed current value applied during
105          open-circuit detect.
106        enum: [10, 100, 500, 1000]
107
108      adi,cold-junction-handle:
109        description:
110          Phandle which points to a sensor object responsible for measuring
111          the thermocouple cold junction temperature.
112        $ref: "/schemas/types.yaml#/definitions/phandle"
113
114      adi,custom-thermocouple:
115        description:
116          This is a table, where each entry should be a pair of
117          voltage(mv)-temperature(K). The entries must be given in nv and uK
118          so that, the original values must be multiplied by 1000000. For
119          more details look at table 69 and 70.
120          Note should be signed, but dtc doesn't currently maintain the
121          sign.
122        $ref: /schemas/types.yaml#/definitions/uint64-matrix
123        minItems: 3
124        maxItems: 64
125        items:
126          minItems: 2
127          maxItems: 2
128
129  "^diode@":
130    type: object
131    description:
132      Represents a diode sensor which is connected to one of the device
133      channels.
134
135    properties:
136      adi,sensor-type:
137        description: Identifies the sensor as a diode.
138        $ref: /schemas/types.yaml#/definitions/uint32
139        const: 28
140
141      adi,single-ended:
142        description: Boolean property which set's the diode as single-ended.
143        type: boolean
144
145      adi,three-conversion-cycles:
146        description:
147          Boolean property which set's three conversion cycles removing
148          parasitic resistance effects between the LTC2983 and the diode.
149        type: boolean
150
151      adi,average-on:
152        description:
153          Boolean property which enables a running average of the diode
154          temperature reading. This reduces the noise when the diode is used
155          as a cold junction temperature element on an isothermal block
156          where temperatures change slowly.
157        type: boolean
158
159      adi,excitation-current-microamp:
160        description:
161          This property controls the magnitude of the excitation current
162          applied to the diode. Depending on the number of conversions
163          cycles, this property will assume different predefined values on
164          each cycle. Just set the value of the first cycle (1l).
165        enum: [10, 20, 40, 80]
166
167      adi,ideal-factor-value:
168        description:
169          This property sets the diode ideality factor. The real value must
170          be multiplied by 1000000 to remove the fractional part. For more
171          information look at table 20 of the datasheet.
172        $ref: /schemas/types.yaml#/definitions/uint32
173
174  "^rtd@":
175    type: object
176    description:
177      Represents a rtd sensor which is connected to one of the device channels.
178
179    properties:
180      reg:
181        minimum: 2
182        maximum: 20
183
184      adi,sensor-type:
185        description: |
186          10 - RTD PT-10
187          11 - RTD PT-50
188          12 - RTD PT-100
189          13 - RTD PT-200
190          14 - RTD PT-500
191          15 - RTD PT-1000
192          16 - RTD PT-1000 (0.00375)
193          17 - RTD NI-120
194          18 - RTD Custom
195        $ref: /schemas/types.yaml#/definitions/uint32
196        minimum: 10
197        maximum: 18
198
199      adi,rsense-handle:
200        description:
201          Phandle pointing to a rsense object associated with this RTD.
202        $ref: "/schemas/types.yaml#/definitions/phandle"
203
204      adi,number-of-wires:
205        description:
206          Identifies the number of wires used by the RTD. Setting this
207          property to 5 means 4 wires with Kelvin Rsense.
208        $ref: /schemas/types.yaml#/definitions/uint32
209        enum: [2, 3, 4, 5]
210
211      adi,rsense-share:
212        description:
213          Boolean property which enables Rsense sharing, where one sense
214          resistor is used for multiple 2-, 3-, and/or 4-wire RTDs.
215        type: boolean
216
217      adi,current-rotate:
218        description:
219          Boolean property which enables excitation current rotation to
220          automatically remove parasitic thermocouple effects. Note that
221          this property is not allowed for 2- and 3-wire RTDs.
222        type: boolean
223
224      adi,excitation-current-microamp:
225        description:
226          This property controls the magnitude of the excitation current
227          applied to the RTD.
228        enum: [5, 10, 25, 50, 100, 250, 500, 1000]
229
230      adi,rtd-curve:
231        description:
232          This property set the RTD curve used and the corresponding
233          Callendar-VanDusen constants. Look at table 30 of the datasheet.
234        $ref: /schemas/types.yaml#/definitions/uint32
235        minimum: 0
236        maximum: 3
237
238      adi,custom-rtd:
239        description:
240          This is a table, where each entry should be a pair of
241          resistance(ohm)-temperature(K). The entries added here are in uohm
242          and uK. For more details values look at table 74 and 75.
243        $ref: /schemas/types.yaml#/definitions/uint64-matrix
244        items:
245          minItems: 3
246          maxItems: 64
247          items:
248            minItems: 2
249            maxItems: 2
250
251    required:
252      - adi,rsense-handle
253
254    dependencies:
255      adi,current-rotate: [ "adi,rsense-share" ]
256
257  "^thermistor@":
258    type: object
259    description:
260      Represents a thermistor sensor which is connected to one of the device
261      channels.
262
263    properties:
264      adi,sensor-type:
265        description:
266          19 - Thermistor 44004/44033 2.252kohm at 25°C
267          20 - Thermistor 44005/44030 3kohm at 25°C
268          21 - Thermistor 44007/44034 5kohm at 25°C
269          22 - Thermistor 44006/44031 10kohm at 25°C
270          23 - Thermistor 44008/44032 30kohm at 25°C
271          24 - Thermistor YSI 400 2.252kohm at 25°C
272          25 - Thermistor Spectrum 1003k 1kohm
273          26 - Thermistor Custom Steinhart-Hart
274          27 - Custom Thermistor
275        $ref: /schemas/types.yaml#/definitions/uint32
276        minimum: 19
277        maximum: 27
278
279      adi,rsense-handle:
280        description:
281          Phandle pointing to a rsense object associated with this
282          thermistor.
283        $ref: "/schemas/types.yaml#/definitions/phandle"
284
285      adi,single-ended:
286        description:
287          Boolean property which set's the thermistor as single-ended.
288        type: boolean
289
290      adi,rsense-share:
291        description:
292          Boolean property which enables Rsense sharing, where one sense
293          resistor is used for multiple thermistors. Note that this property
294          is ignored if adi,single-ended is set.
295        type: boolean
296
297      adi,current-rotate:
298        description:
299          Boolean property which enables excitation current rotation to
300          automatically remove parasitic thermocouple effects.
301        type: boolean
302
303      adi,excitation-current-nanoamp:
304        description:
305          This property controls the magnitude of the excitation current
306          applied to the thermistor. Value 0 set's the sensor in auto-range
307          mode.
308        $ref: /schemas/types.yaml#/definitions/uint32
309        enum: [0, 250, 500, 1000, 5000, 10000, 25000, 50000, 100000, 250000,
310          500000, 1000000]
311
312      adi,custom-thermistor:
313        description:
314          This is a table, where each entry should be a pair of
315          resistance(ohm)-temperature(K). The entries added here are in uohm
316          and uK only for custom thermistors. For more details look at table
317          78 and 79.
318        $ref: /schemas/types.yaml#/definitions/uint64-matrix
319        minItems: 3
320        maxItems: 64
321        items:
322          minItems: 2
323          maxItems: 2
324
325      adi,custom-steinhart:
326        description:
327          Steinhart-Hart coefficients are also supported and can
328          be programmed into the device memory using this property. For
329          Steinhart sensors the coefficients are given in the raw
330          format. Look at table 82 for more information.
331        $ref: /schemas/types.yaml#/definitions/uint32-array
332        items:
333          minItems: 6
334          maxItems: 6
335
336    required:
337      - adi,rsense-handle
338
339    dependencies:
340      adi,current-rotate: [ "adi,rsense-share" ]
341
342  "^adc@":
343    type: object
344    description: Represents a channel which is being used as a direct adc.
345
346    properties:
347      adi,sensor-type:
348        description: Identifies the sensor as a direct adc.
349        $ref: /schemas/types.yaml#/definitions/uint32
350        const: 30
351
352      adi,single-ended:
353        description: Boolean property which set's the adc as single-ended.
354        type: boolean
355
356  "^rsense@":
357    type: object
358    description:
359      Represents a rsense which is connected to one of the device channels.
360      Rsense are used by thermistors and RTD's.
361
362    properties:
363      reg:
364        minimum: 2
365        maximum: 20
366
367      adi,sensor-type:
368        description: Identifies the sensor as a rsense.
369        $ref: /schemas/types.yaml#/definitions/uint32
370        const: 29
371
372      adi,rsense-val-milli-ohms:
373        description:
374          Sets the value of the sense resistor. Look at table 20 of the
375          datasheet for information.
376
377    required:
378      - adi,rsense-val-milli-ohms
379
380required:
381  - compatible
382  - reg
383  - interrupts
384
385additionalProperties: false
386
387examples:
388  - |
389    #include <dt-bindings/interrupt-controller/irq.h>
390    spi {
391        #address-cells = <1>;
392        #size-cells = <0>;
393
394        sensor_ltc2983: ltc2983@0 {
395                compatible = "adi,ltc2983";
396                reg = <0>;
397
398                #address-cells = <1>;
399                #size-cells = <0>;
400
401                interrupts = <20 IRQ_TYPE_EDGE_RISING>;
402                interrupt-parent = <&gpio>;
403
404                thermocouple@18 {
405                        reg = <18>;
406                        adi,sensor-type = <8>; //Type B
407                        adi,sensor-oc-current-microamp = <10>;
408                        adi,cold-junction-handle = <&diode5>;
409                };
410
411                diode5: diode@5 {
412                        reg = <5>;
413                        adi,sensor-type = <28>;
414                };
415
416                rsense2: rsense@2 {
417                        reg = <2>;
418                        adi,sensor-type = <29>;
419                        adi,rsense-val-milli-ohms = <1200000>; //1.2Kohms
420                };
421
422                rtd@14 {
423                        reg = <14>;
424                        adi,sensor-type = <15>; //PT1000
425                        /*2-wire, internal gnd, no current rotation*/
426                        adi,number-of-wires = <2>;
427                        adi,rsense-share;
428                        adi,excitation-current-microamp = <500>;
429                        adi,rsense-handle = <&rsense2>;
430                };
431
432                adc@10 {
433                        reg = <10>;
434                        adi,sensor-type = <30>;
435                        adi,single-ended;
436                };
437
438                thermistor@12 {
439                        reg = <12>;
440                        adi,sensor-type = <26>; //Steinhart
441                        adi,rsense-handle = <&rsense2>;
442                        adi,custom-steinhart = <0x00F371EC 0x12345678
443                                        0x2C0F8733 0x10018C66 0xA0FEACCD
444                                        0x90021D99>; //6 entries
445                };
446
447                thermocouple@20 {
448                        reg = <20>;
449                        adi,sensor-type = <9>; //custom thermocouple
450                        adi,single-ended;
451                        adi,custom-thermocouple = /bits/ 64
452                                 <(-50220000) 0>,
453                                 <(-30200000) 99100000>,
454                                 <(-5300000) 135400000>,
455                                 <0 273150000>,
456                                 <40200000 361200000>,
457                                 <55300000 522100000>,
458                                 <88300000 720300000>,
459                                 <132200000 811200000>,
460                                 <188700000 922500000>,
461                                 <460400000 1000000000>; //10 pairs
462               };
463
464        };
465    };
466...
467