GNU Linux-libre 6.8.9-gnu
[releases.git] / Documentation / devicetree / bindings / iio / temperature / adi,ltc2983.yaml
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
7 title: Analog Devices LTC2983, LTC2986, LTM2985 Multi-sensor Temperature system
8
9 maintainers:
10   - Nuno Sá <nuno.sa@analog.com>
11
12 description: |
13   Analog Devices LTC2983, LTC2984, LTC2986, LTM2985 Multi-Sensor Digital
14   Temperature Measurement Systems
15
16   https://www.analog.com/media/en/technical-documentation/data-sheets/2983fc.pdf
17   https://www.analog.com/media/en/technical-documentation/data-sheets/2984fb.pdf
18   https://www.analog.com/media/en/technical-documentation/data-sheets/29861fa.pdf
19   https://www.analog.com/media/en/technical-documentation/data-sheets/ltm2985.pdf
20
21 $defs:
22   sensor-node:
23     type: object
24     description: Sensor node common constraints
25
26     properties:
27       reg:
28         description:
29           Channel number. Connects the sensor to the channel with this number
30           of the device.
31         minimum: 1
32         maximum: 20
33
34       adi,sensor-type:
35         description: Type of sensor connected to the device.
36         $ref: /schemas/types.yaml#/definitions/uint32
37
38     required:
39       - reg
40       - adi,sensor-type
41
42
43 properties:
44   compatible:
45     oneOf:
46       - enum:
47           - adi,ltc2983
48           - adi,ltc2986
49           - adi,ltm2985
50       - items:
51           - const: adi,ltc2984
52           - const: adi,ltc2983
53
54   reg:
55     maxItems: 1
56
57   interrupts:
58     maxItems: 1
59
60   adi,mux-delay-config-us:
61     description: |
62       Extra delay prior to each conversion, in addition to the internal 1ms
63       delay, for the multiplexer to switch input configurations and
64       excitation values.
65
66       This property is supposed to be in microseconds, but to maintain
67       compatibility, this value will be multiplied by 100 before usage.
68     maximum: 255
69     default: 0
70
71   adi,filter-notch-freq:
72     description:
73       Notch frequency of the digital filter.
74       0 - 50/60Hz rejection
75       1 - 60Hz rejection
76       2 - 50Hz rejection
77     $ref: /schemas/types.yaml#/definitions/uint32
78     minimum: 0
79     maximum: 2
80     default: 0
81
82   '#address-cells':
83     const: 1
84
85   '#size-cells':
86     const: 0
87
88 patternProperties:
89   "^thermocouple@":
90     $ref: '#/$defs/sensor-node'
91     unevaluatedProperties: false
92
93     description: Thermocouple sensor.
94
95     properties:
96       adi,sensor-type:
97         description: |
98           1 - Type J Thermocouple
99           2 - Type K Thermocouple
100           3 - Type E Thermocouple
101           4 - Type N Thermocouple
102           5 - Type R Thermocouple
103           6 - Type S Thermocouple
104           7 - Type T Thermocouple
105           8 - Type B Thermocouple
106           9 - Custom Thermocouple
107         $ref: /schemas/types.yaml#/definitions/uint32
108         minimum: 1
109         maximum: 9
110
111       adi,single-ended:
112         description: Whether the sensor is single-ended.
113         type: boolean
114
115       adi,sensor-oc-current-microamp:
116         description: Pulsed current value applied during open-circuit detect.
117         enum: [10, 100, 500, 1000]
118         default: 10
119
120       adi,cold-junction-handle:
121         description:
122           Sensor responsible for measuring the thermocouple cold junction
123           temperature.
124         $ref: /schemas/types.yaml#/definitions/phandle
125
126       adi,custom-thermocouple:
127         description:
128           Used for digitizing custom thermocouples.
129           See Page 59 of the datasheet.
130         $ref: /schemas/types.yaml#/definitions/int64-matrix
131         minItems: 3
132         maxItems: 64
133         items:
134           items:
135             - description: Voltage point in nV, signed.
136             - description: Temperature point in uK.
137
138     allOf:
139       - if:
140           properties:
141             adi,sensor-type:
142               const: 9
143         then:
144           required:
145             - adi,custom-thermocouple
146
147   "^diode@":
148     $ref: '#/$defs/sensor-node'
149     unevaluatedProperties: false
150
151     description: Diode sensor.
152
153     properties:
154       adi,sensor-type:
155         description: Sensor type for diodes.
156         $ref: /schemas/types.yaml#/definitions/uint32
157         const: 28
158
159       adi,single-ended:
160         description: Whether the sensor is single-ended.
161         type: boolean
162
163       adi,three-conversion-cycles:
164         description:
165           Whether to use three conversion cycles to remove parasitic
166           resistance between the device and the diode.
167         type: boolean
168
169       adi,average-on:
170         description:
171           Whether to use a running average of the diode temperature
172           reading to reduce the noise when the diode is used as a cold
173           junction temperature element on an isothermal block where
174           temperatures change slowly.
175         type: boolean
176
177       adi,excitation-current-microamp:
178         description:
179           Magnitude of the 1l excitation current applied to the diode.
180           4l excitation current will be 4 times this value, and 8l
181           excitation current will be 8 times value.
182         enum: [10, 20, 40, 80]
183         default: 10
184
185       adi,ideal-factor-value:
186         description:
187           Diode ideality factor.
188           Set this property to 1000000 times the real value.
189         $ref: /schemas/types.yaml#/definitions/uint32
190         default: 0
191
192   "^rtd@":
193     $ref: '#/$defs/sensor-node'
194     unevaluatedProperties: false
195     description: RTD sensor.
196
197     properties:
198       reg:
199         minimum: 2
200         maximum: 20
201
202       adi,sensor-type:
203         description: |
204           10 - RTD PT-10
205           11 - RTD PT-50
206           12 - RTD PT-100
207           13 - RTD PT-200
208           14 - RTD PT-500
209           15 - RTD PT-1000
210           16 - RTD PT-1000 (0.00375)
211           17 - RTD NI-120
212           18 - RTD Custom
213         $ref: /schemas/types.yaml#/definitions/uint32
214         minimum: 10
215         maximum: 18
216
217       adi,rsense-handle:
218         description: Associated sense resistor sensor.
219         $ref: /schemas/types.yaml#/definitions/phandle
220
221       adi,number-of-wires:
222         description:
223           Number of wires used by the RTD.
224           5 means 4 wires with Kelvin sense resistor.
225         $ref: /schemas/types.yaml#/definitions/uint32
226         enum: [2, 3, 4, 5]
227         default: 2
228
229       adi,rsense-share:
230         description:
231           Whether to enable sense resistor sharing, where one sense
232           resistor is used by multiple sensors.
233         type: boolean
234
235       adi,excitation-current-microamp:
236         description: Excitation current applied to the RTD.
237         enum: [5, 10, 25, 50, 100, 250, 500, 1000]
238         default: 5
239
240       adi,rtd-curve:
241         description: |
242           RTD curve and the corresponding Callendar-VanDusen constants.
243           0 - European
244           1 - American
245           2 - Japanese
246           3 - ITS-90
247         $ref: /schemas/types.yaml#/definitions/uint32
248         minimum: 0
249         maximum: 3
250         default: 0
251
252       adi,custom-rtd:
253         description:
254           Used for digitizing custom RTDs.
255           See Page 62 of the datasheet.
256         $ref: /schemas/types.yaml#/definitions/uint64-matrix
257         minItems: 3
258         maxItems: 64
259         items:
260           items:
261             - description: Resistance point in uOhms.
262             - description: Temperature point in uK.
263
264     required:
265       - adi,rsense-handle
266
267     allOf:
268       - if:
269           properties:
270             adi,number-of-wires:
271               const: 4
272         then:
273           properties:
274             adi,current-rotate:
275               description:
276                 Whether to enable excitation current rotation to automatically
277                 remove parasitic thermocouple effects.
278               type: boolean
279
280           dependencies:
281             adi,current-rotate: [ "adi,rsense-share" ]
282
283       - if:
284           properties:
285             adi,sensor-type:
286               const: 18
287         then:
288           required:
289             - adi,custom-rtd
290
291   "^thermistor@":
292     $ref: '#/$defs/sensor-node'
293     unevaluatedProperties: false
294     description: Thermistor sensor.
295
296     properties:
297       adi,sensor-type:
298         description:
299           19 - Thermistor 44004/44033 2.252kohm at 25°C
300           20 - Thermistor 44005/44030 3kohm at 25°C
301           21 - Thermistor 44007/44034 5kohm at 25°C
302           22 - Thermistor 44006/44031 10kohm at 25°C
303           23 - Thermistor 44008/44032 30kohm at 25°C
304           24 - Thermistor YSI 400 2.252kohm at 25°C
305           25 - Thermistor Spectrum 1003k 1kohm
306           26 - Thermistor Custom Steinhart-Hart
307           27 - Custom Thermistor
308         $ref: /schemas/types.yaml#/definitions/uint32
309         minimum: 19
310         maximum: 27
311
312       adi,rsense-handle:
313         description: Associated sense resistor sensor.
314         $ref: /schemas/types.yaml#/definitions/phandle
315
316       adi,single-ended:
317         description: Whether the sensor is single-ended.
318         type: boolean
319
320       adi,rsense-share:
321         description:
322           Whether to enable sense resistor sharing, where one sense
323           resistor is used by multiple sensors.
324         type: boolean
325
326       adi,current-rotate:
327         description:
328           Whether to enable excitation current rotation to automatically
329           remove parasitic thermocouple effects.
330         type: boolean
331
332       adi,excitation-current-nanoamp:
333         description:
334           Excitation current applied to the thermistor.
335           0 sets the sensor in auto-range mode.
336         enum: [0, 250, 500, 1000, 5000, 10000, 25000, 50000, 100000, 250000,
337                500000, 1000000]
338         default: 0
339
340       adi,custom-thermistor:
341         description:
342           Used for digitizing custom thermistors.
343           See Page 65 of the datasheet.
344         $ref: /schemas/types.yaml#/definitions/uint64-matrix
345         minItems: 3
346         maxItems: 64
347         items:
348           items:
349             - description: Resistance point in uOhms.
350             - description: Temperature point in uK.
351
352       adi,custom-steinhart:
353         description:
354           Steinhart-Hart coefficients in raw format, used for digitizing
355           custom thermistors.
356           See Page 68 of the datasheet.
357         $ref: /schemas/types.yaml#/definitions/uint32-array
358         minItems: 6
359         maxItems: 6
360
361     required:
362       - adi,rsense-handle
363
364     dependencies:
365       adi,current-rotate: [ "adi,rsense-share" ]
366
367     allOf:
368       - if:
369           properties:
370             adi,sensor-type:
371               const: 26
372         then:
373           properties:
374             adi,excitation-current-nanoamp:
375               enum: [250, 500, 1000, 5000, 10000, 25000, 50000, 100000,
376                      250000, 500000, 1000000]
377               default: 1000
378           required:
379             - adi,custom-steinhart
380       - if:
381           properties:
382             adi,sensor-type:
383               const: 27
384         then:
385           properties:
386             adi,excitation-current-nanoamp:
387               enum: [250, 500, 1000, 5000, 10000, 25000, 50000, 100000,
388                      250000, 500000, 1000000]
389               default: 1000
390           required:
391             - adi,custom-thermistor
392
393   "^adc@":
394     $ref: '#/$defs/sensor-node'
395     unevaluatedProperties: false
396     description: Direct ADC sensor.
397
398     properties:
399       adi,sensor-type:
400         description: Sensor type for direct ADC sensors.
401         $ref: /schemas/types.yaml#/definitions/uint32
402         const: 30
403
404       adi,single-ended:
405         description: Whether the sensor is single-ended.
406         type: boolean
407
408   "^temp@":
409     $ref: '#/$defs/sensor-node'
410     unevaluatedProperties: false
411     description: Active analog temperature sensor.
412
413     properties:
414       adi,sensor-type:
415         description: Sensor type for active analog temperature sensors.
416         $ref: /schemas/types.yaml#/definitions/uint32
417         const: 31
418
419       adi,single-ended:
420         description: Whether the sensor is single-ended.
421         type: boolean
422
423       adi,custom-temp:
424         description:
425           Used for digitizing active analog temperature sensors.
426           See Page 67 of the LTM2985 datasheet.
427         $ref: /schemas/types.yaml#/definitions/uint64-matrix
428         minItems: 3
429         maxItems: 64
430         items:
431           items:
432             - description: Voltage point in nV, signed.
433             - description: Temperature point in uK.
434
435     required:
436       - adi,custom-temp
437
438   "^rsense@":
439     $ref: '#/$defs/sensor-node'
440     unevaluatedProperties: false
441     description: Sense resistor sensor.
442
443     properties:
444       reg:
445         minimum: 2
446         maximum: 20
447
448       adi,sensor-type:
449         description: Sensor type sense resistor sensors.
450         $ref: /schemas/types.yaml#/definitions/uint32
451         const: 29
452
453       adi,rsense-val-milli-ohms:
454         description: Value of the sense resistor.
455
456     required:
457       - adi,rsense-val-milli-ohms
458
459 required:
460   - compatible
461   - reg
462   - interrupts
463
464 additionalProperties: false
465
466 allOf:
467   - if:
468       properties:
469         compatible:
470           contains:
471             enum:
472               - adi,ltc2983
473               - adi,ltc2984
474     then:
475       patternProperties:
476         "^temp@": false
477
478 examples:
479   - |
480     #include <dt-bindings/interrupt-controller/irq.h>
481     spi {
482         #address-cells = <1>;
483         #size-cells = <0>;
484
485         temperature-sensor@0 {
486             compatible = "adi,ltc2983";
487             reg = <0>;
488
489             #address-cells = <1>;
490             #size-cells = <0>;
491
492             interrupts = <20 IRQ_TYPE_EDGE_RISING>;
493             interrupt-parent = <&gpio>;
494
495             thermocouple@18 {
496                 reg = <18>;
497                 adi,sensor-type = <8>; //Type B
498                 adi,sensor-oc-current-microamp = <10>;
499                 adi,cold-junction-handle = <&diode5>;
500             };
501
502             diode5: diode@5 {
503                 reg = <5>;
504                 adi,sensor-type = <28>;
505             };
506
507             rsense2: rsense@2 {
508                 reg = <2>;
509                 adi,sensor-type = <29>;
510                 adi,rsense-val-milli-ohms = <1200000>; //1.2Kohms
511             };
512
513             rtd@14 {
514                 reg = <14>;
515                 adi,sensor-type = <15>; //PT1000
516                 /*2-wire, internal gnd, no current rotation*/
517                 adi,number-of-wires = <2>;
518                 adi,rsense-share;
519                 adi,excitation-current-microamp = <500>;
520                 adi,rsense-handle = <&rsense2>;
521             };
522
523             adc@10 {
524                 reg = <10>;
525                 adi,sensor-type = <30>;
526                 adi,single-ended;
527             };
528
529             thermistor@12 {
530                 reg = <12>;
531                 adi,sensor-type = <26>; //Steinhart
532                 adi,rsense-handle = <&rsense2>;
533                 adi,custom-steinhart = <0x00f371ec 0x12345678
534                                 0x2c0f8733 0x10018c66 0xa0feaccd
535                                 0x90021d99>; //6 entries
536             };
537
538             thermocouple@20 {
539                 reg = <20>;
540                 adi,sensor-type = <9>; //custom thermocouple
541                 adi,single-ended;
542                 adi,custom-thermocouple =
543                          /bits/ 64 <(-50220000) 0>,
544                          /bits/ 64 <(-30200000) 99100000>,
545                          /bits/ 64 <(-5300000) 135400000>,
546                          /bits/ 64 <0 273150000>,
547                          /bits/ 64 <40200000 361200000>,
548                          /bits/ 64 <55300000 522100000>,
549                          /bits/ 64 <88300000 720300000>,
550                          /bits/ 64 <132200000 811200000>,
551                          /bits/ 64 <188700000 922500000>,
552                          /bits/ 64 <460400000 1000000000>; //10 pairs
553             };
554         };
555     };
556 ...