From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87310ECE58C for ; Mon, 7 Oct 2019 14:45:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3E47121721 for ; Mon, 7 Oct 2019 14:45:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570459559; bh=cftbjFD/FjfRMe5P5V0DZpjpj9pgDTxuYWgBNyz+KqE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:List-ID:From; b=jt2XBpVpsx7yqAcpDAwJOgZx3yPgaDIphZVp+hvVNFbBqrwhYLj5cIL+xvD1BnSdg GiigidR4NG61ikTp0x/xIr6pBaLt8Luz2MOhyWesLcp8pjrVxV0SznUx2aawauFy8m ysN9hX9vcIMYJ531vzQ5ii+vx69Fa2DTBLgPuvZw= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728019AbfJGOp6 (ORCPT ); Mon, 7 Oct 2019 10:45:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:55684 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726334AbfJGOp6 (ORCPT ); Mon, 7 Oct 2019 10:45:58 -0400 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4636B21721; Mon, 7 Oct 2019 14:45:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570459556; bh=cftbjFD/FjfRMe5P5V0DZpjpj9pgDTxuYWgBNyz+KqE=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=2vzbDakubrofQRauUeP1zBdIso0+rPl/KSwC1xbk1TkmMMNkz4gdSiF0f2YkxxYKY fbWgLlwRdZML3nxXZ2s2g4EUwcHbEVXk2JFXi4wi2goKuZyvBboOL+uWwJCiySLPUD kZ2DPiOEWXz8IgpEyHvyX1D7LLy4Uf5t9IjEpg1I= Received: by mail-qt1-f174.google.com with SMTP id m61so8411615qte.7; Mon, 07 Oct 2019 07:45:56 -0700 (PDT) X-Gm-Message-State: APjAAAVgEWnBbfMQL2XuOAUly7IStb3V83XdyrsMp+5Qb4lPY2G/XU74 uB64bSzMf1eUyWA11lVwKcU4KmUx+gfFuWVPCA== X-Google-Smtp-Source: APXvYqzPTwK059ixE6lNwvU1ZdnlHH3WEB9pe2jmn1Axua28S3bOuTf1zJKPoWsgwXVCa7OIhNjPgMDgBx8wNbCD0Zo= X-Received: by 2002:a0c:9792:: with SMTP id l18mr27004723qvd.79.1570459554938; Mon, 07 Oct 2019 07:45:54 -0700 (PDT) MIME-Version: 1.0 References: <20191004135519.191657-1-nuno.sa@analog.com> <20191004135519.191657-2-nuno.sa@analog.com> In-Reply-To: <20191004135519.191657-2-nuno.sa@analog.com> From: Rob Herring Date: Mon, 7 Oct 2019 09:45:42 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 2/2] dt-bindings: iio: Add ltc2983 documentation To: =?UTF-8?B?TnVubyBTw6E=?= Cc: "open list:IIO SUBSYSTEM AND DRIVERS" , devicetree@vger.kernel.org, Jonathan Cameron , Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald , Mark Rutland Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-iio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org On Fri, Oct 4, 2019 at 8:55 AM Nuno S=C3=A1 wrote: > > Document the LTC2983 temperature sensor devicetree bindings. > > Signed-off-by: Nuno S=C3=A1 > --- > Changes in v2: > * Drop maxItems in non-array elements; > * Set adi,mux-delay-config-us instead of adi,mux-delay-config; > * Wrapped lines at 80 char; > * Added comas to enum elements; > * Use real units in adi,excitation-current; > * Moved some enums to minimum and maximum; > * Grouped patternProperties and moved reg property as a generic property= . > > Changes in v3: > * Add meaning to adi,sensor-type values which are not const; > * Add meaning to adi,filter-notch-freq values; > * Break up adi,sensor-config into human readable elements; > * Set maxItems/minItems at the same identation as allOf in adi,custom-se= nsor; > * Fixed the maximum value for adi,sensor-type for sensors with custom su= pport; > * Changed license to GPL-2.0-only as it should be for new bindings; > * Changed spi0 to spi in the dts example; > * Updated the dts example to the new properties. > > .../bindings/iio/temperature/adi,ltc2983.yaml | 479 ++++++++++++++++++ > MAINTAINERS | 1 + > 2 files changed, 480 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/temperature/adi= ,ltc2983.yaml > > diff --git a/Documentation/devicetree/bindings/iio/temperature/adi,ltc298= 3.yaml b/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml > new file mode 100644 > index 000000000000..b7101a0e84db > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml > @@ -0,0 +1,479 @@ > +# SPDX-License-Identifier: GPL-2.0-only (GPL-2.0-only OR BSD-2-Clause) for new bindings please. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/iio/temperature/adi,ltc2983.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Analog Devices LTC2983 Multi-sensor Temperature system > + > +maintainers: > + - Nuno S=C3=A1 > + > +description: | > + Analog Devices LTC2983 Multi-Sensor Digital Temperature Measurement Sy= stem > + https://www.analog.com/media/en/technical-documentation/data-sheets/29= 83fc.pdf > + > +properties: > + compatible: > + enum: > + - adi,ltc2983 > + > + reg: > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + adi,temperature-celcius: -celsius. However, that suffix is reserved for properties whose value is in Celsius, so you'll have to come up with something else. How does one decide how to set this? Seems like the driver should just decide based on what it needs to present to the user. > + description: > + If this property is present, the temperature is reported in Celsiu= s. > + type: boolean > + > + adi,mux-delay-config-us: > + description: > + The LTC2983 performs 2 or 3 internal conversion cycles per tempera= ture > + result. Each conversion cycle is performed with different excitati= on and > + input multiplexer configurations. Prior to each conversion, these > + excitation circuits and input switch configurations are changed an= d an > + internal 1ms delay ensures settling prior to the conversion cycle = in most > + cases. An extra delay can be configured using this property. The v= alue is > + rounded to nearest 100us. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - maximum: 255 Standard unit suffixes already have a type, so just: maximum: 255 > + > + adi,filter-notch-freq: > + description: > + Set's the default setting of the digital filter. The default is > + simultaneous 50/60Hz rejection. > + 0 - 50/60Hz rejection > + 1 - 60Hz rejection > + 2 - 50Hz rejection > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - minimum: 0 > + - maximum: 2 Drop the '-' on the last entry (making the min/max a single schema). > + > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 > + > +patternProperties: > + ".*@([1-9]|1[0-9]|20)$": '.*' can be dropped. > + type: object > + > + properties: > + reg: > + description: | > + The channel number. It can be connected to one of the 20 chann= els of > + the device. > + minimum: 1 > + maximum: 20 > + > + required: > + - reg > + > + patternProperties: > + "^thermocouple@.*": You've made this node a child of '.*@([1-9]|1[0-9]|20)$'. This needs to be at the same level. > + type: object > + description: | You can drop the '|' where you don't need any formatting. > + Represents a thermocouple sensor which is connected to one of = the device > + channels. > + > + properties: > + adi,sensor-type: > + description: | > + Identifies the type of thermocouple connected to the devic= e. > + 1 - Type J Thermocouple > + 2 - Type K Thermocouple > + 3 - Type E Thermocouple > + 4 - Type N Thermocouple > + 5 - Type R Thermocouple > + 6 - Type S Thermocouple > + 7 - Type T Thermocouple > + 8 - Type B Thermocouple > + 9 - Custom Thermocouple > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 You can move the type definition under ".*@([1-9]|1[0-9]|20)$" and then just have the min/max here. > + - minimum: 1 > + - maximum: 9 > + > + adi,single-ended: > + description: | > + Boolean property which set's the thermocouple as single-en= ded. > + type: boolean > + > + adi,sensor-oc-current-microamp: > + description: | > + This property set's the pulsed current value applied durin= g > + open-circuit detect. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - enum: [10, 100, 500, 1000] > + > + adi,cold-junction-handle: > + description: | > + Phandle which points to a sensor object responsible for me= asuring > + the thermocouple cold junction temperature. > + $ref: "/schemas/types.yaml#/definitions/phandle" > + > + adi,custom-sensor: > + description: | > + This is a table, where each entry should be a pair of > + voltage(mv)-temperature(K). The entries must be given in n= v and uK > + so that, the original values must be multiplied by 1000000= . For We normally do things in microVolts. It seems strange to need 64-bits of range for voltage and temperature. > + more details look at table 69 and 70. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/int64-array Fails on 'make dt_binding_check': Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml: Unresolvable JSON pointer: 'definitions/int64-array' If this is pairs of values, it should really be defined as a matrix: minItems: 3 maxItems: 64 items: minItems: 2 maxItems: 2 Though I'll need to add uint64-matrix as a type (assuming this really needs to be 64-bit). > + minItems: 6 > + maxItems: 128 > + > + required: > + - adi,sensor-type > + > + "^diode@.*": > + type: object > + description: | > + Represents a diode sensor which is connected to one of the dev= ice > + channels. > + > + properties: > + adi,sensor-type: > + description: Identifies the sensor as a diode. > + const: 28 > + > + adi,single-ended: > + description: Boolean property which set's the diode as singl= e-ended. > + type: boolean > + > + adi,three-conversion-cycles: > + description: | > + Boolean property which set's three conversion cycles remov= ing > + parasitic resistance effects between the LTC2983 and the d= iode. > + type: boolean > + > + adi,average-on: > + description: | > + Boolean property which enables a running average of the di= ode > + temperature reading. This reduces the noise when the diode= is used > + as a cold junction temperature element on an isothermal bl= ock > + where temperatures change slowly. > + type: boolean > + > + adi,excitation-current-microamp: > + description: | > + This property controls the magnitude of the excitation cur= rent > + applied to the diode. Depending on the number of conversio= ns > + cycles, this property will assume different predefined val= ues on > + each cycle. Just set the value of the first cycle (1l). > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - enum: [10, 20, 40, 80] > + > + adi,ideal-factor-value: > + description: | > + This property sets the diode ideality factor. The real val= ue must > + be multiplied by 1000000 to remove the fractional part. Fo= r more > + information look at table 20 of the datasheet. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + > + required: > + - adi,sensor-type > + > + "^rtd@.*": > + type: object > + description: | > + Represents a rtd sensor which is connected to one of the devic= e channels. > + > + properties: > + reg: > + minimum: 2 > + > + adi,sensor-type: > + description: | > + Identifies the type of RTD connected to the device. > + 10 - RTD PT-10 > + 11 - RTD PT-50 > + 12 - RTD PT-100 > + 13 - RTD PT-200 > + 14 - RTD PT-500 > + 15 - RTD PT-1000 > + 16 - RTD PT-1000 (0.00375) > + 17 - RTD NI-120 > + 18 - RTD Custom > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - minimum: 10 > + - maximum: 18 > + > + adi,rsense-handle: > + description: | > + Phandle pointing to a rsense object associated with this R= TD. > + $ref: "/schemas/types.yaml#/definitions/phandle" > + > + adi,number-of-wires: > + description: | > + Identifies the number of wires used by the RTD. Setting th= is > + property to 5 means 4 wires with Kelvin Rsense. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - enum: [2, 3, 4, 5] > + > + adi,rsense-share: > + description: | > + Boolean property which enables Rsense sharing, where one s= ense > + resistor is used for multiple 2-, 3-, and/or 4-wire RTDs. > + type: boolean > + > + adi,current-rotate: > + description: | > + Boolean property which enables excitation current rotation= to > + automatically remove parasitic thermocouple effects. Note = that > + this property is not allowed for 2- and 3-wire RTDs. > + type: boolean > + > + adi,excitation-current-microamp: > + description: | > + This property controls the magnitude of the excitation cur= rent > + applied to the RTD. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 You can drop the type here too. > + - enum: [5, 10, 25, 50, 100, 250, 500, 1000] > + > + adi,rtd-curve: > + description: | > + This property set the RTD curve used and the corresponding > + Callendar-VanDusen constants. Look at table 30 of the data= sheet. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - minimum: 0 > + - maximum: 3 > + > + adi,custom-sensor: > + description: | > + This is a table, where each entry should be a pair of > + resistance(ohm)-temperature(K). The entries added here are= in uohm > + and uK. For more details values look at table 74 and 75. It's not great to make one property name have different meanings. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint64-array > + minItems: 6 > + maxItems: 128 > + > + required: > + - adi,sensor-type > + - adi,rsense-handle > + > + dependencies: > + adi,current-rotate: [ adi,rsense-share ] > + > + "^thermistor@.*": > + type: object > + description: | > + Represents a thermistor sensor which is connected to one of th= e device > + channels. > + > + properties: > + adi,sensor-type: > + description: | > + Identifies the type of thermistor connected to the > + device. > + 19 - Thermistor 44004/44033 2.252kohm at 25=C2=B0C > + 20 - Thermistor 44005/44030 3kohm at 25=C2=B0C > + 21 - Thermistor 44007/44034 5kohm at 25=C2=B0C > + 22 - Thermistor 44006/44031 10kohm at 25=C2=B0C > + 23 - Thermistor 44008/44032 30kohm at 25=C2=B0C > + 24 - Thermistor YSI 400 2.252kohm at 25=C2=B0C > + 25 - Thermistor Spectrum 1003k 1kohm > + 26 - Thermistor Custom Steinhart-Hart > + 27 - Custom Thermistor > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - minimum: 19 > + - maximum: 27 > + > + adi,rsense-handle: > + description: | > + Phandle pointing to a rsense object associated with this > + thermistor. > + $ref: "/schemas/types.yaml#/definitions/phandle" > + > + adi,single-ended: > + description: | > + Boolean property which set's the thermistor as single-ende= d. > + type: boolean > + > + adi,rsense-share: > + description: | > + Boolean property which enables Rsense sharing, where one s= ense > + resistor is used for multiple thermistors. Note that this = property > + is ignored if adi,single-ended is set. > + type: boolean > + > + adi,current-rotate: > + description: | > + Boolean property which enables excitation current rotation= to > + automatically remove parasitic thermocouple effects. > + type: boolean > + > + adi,excitation-current-nanoamp: > + description: | > + This property controls the magnitude of the excitation cur= rent > + applied to the thermistor. Value 0 set's the sensor in aut= o-range > + mode. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32 > + - enum: [0, 250, 500, 1000, 5000, 10000, 25000, 50000, 100= 000, > + 250000, 500000, 1000000] > + > + adi,custom-sensor: > + description: | > + This is a table, where each entry should be a pair of > + resistance(ohm)-temperature(K). The entries added here are= in uohm > + and uK only for custom thermistors. For more details look = at table > + 78 and 79. Steinhart-Hart coefficients are also supported = and can > + be programmed into the device memory using this property. = For > + Steinhart sensors, this table has a constant size of 6 ent= ries > + (defining the coefficients) and the values are given in th= e raw > + format. Look at table 82 for more information. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint64-array > + minItems: 6 > + maxItems: 128 > + > + required: > + - adi,sensor-type > + - adi,rsense-handle > + > + dependencies: > + adi,current-rotate: [ adi,rsense-share ] > + > + "^adc@.*": > + type: object > + description: Represents a channel which is being used as a direc= t adc. > + > + properties: > + adi,sensor-type: > + description: Identifies the sensor as a direct adc. > + const: 30 > + > + adi,single-ended: > + description: Boolean property which set's the adc as single-= ended. > + type: boolean > + > + required: > + - adi,sensor-type > + > + "^rsense@.*": > + type: object > + description: | > + Represents a rsense which is connected to one of the device ch= annels. > + Rsense are used by thermistors and RTD's. > + > + properties: > + reg: > + minimum: 2 > + > + adi,sensor-type: > + description: Identifies the sensor as a rsense. > + const: 29 > + > + adi,rsense-val-micro-ohms: > + description: | > + Sets the value of the sense resistor. Look at table 20 of = the > + datasheet for information. > + allOf: > + - $ref: /schemas/types.yaml#/definitions/uint64 -micro-ohms is already defined to be 32-bit. > + > + required: > + - adi,sensor-type > + - adi, rsense-val spurious space. > + > +required: > + - compatible > + - reg > + - interrupts > + > +examples: > + - | > + #include > + spi { > + #address-cells =3D <1>; > + #size-cells =3D <0>; > + > + sensor_ltc2983: ltc2983@0 { > + compatible =3D "adi,ltc2983"; > + reg =3D <0>; > + > + #address-cells =3D <1>; > + #size-cells =3D <0>; > + > + adi,temperature-celcius; > + interrupts =3D <20 IRQ_TYPE_EDGE_RISING>; > + interrupt-parent =3D <&gpio>; > + > + thermocouple@18 { > + reg =3D <18>; > + adi,sensor-type =3D <8>; //Type B > + adi,sensor-oc-current-microamp =3D <10>; > + adi,cold-junction-handle =3D <&diode5>; > + }; > + > + diode5: diode@5 { > + reg =3D <5>; > + adi,sensor-type =3D <28>; > + }; > + > + rsense2: rsense@2 { > + reg =3D <2>; > + adi,sensor-type =3D <29>; > + adi,rsense-val-micro-ohms =3D /bits/ 64 <1200000= 000>; //1.2Kohms > + }; > + > + rtd@14 { > + reg =3D <14>; > + adi,sensor-type =3D <15>; //PT1000 > + /*2-wire, internal gnd, no current rotation*/ > + adi,number-of-wires =3D <2>; > + adi,rsense-share; > + adi,excitation-current-microamp =3D <500>; > + adi,rsense-handle =3D <&rsense2>; > + }; > + > + adc@10 { > + reg =3D <10>; > + adi,sensor-type =3D <30>; > + adi,single-ended; > + }; > + > + thermistor@12 { > + reg =3D <12>; > + adi,sensor-type =3D <26>; //Steinhart > + adi,rsense-handle =3D <&rsense2>; > + adi,custom-sensor =3D /bits/ 64 <0x00F371EC 0x12= 345678 > + 0x2C0F8733 0x10018C66 0xA0FEACCD > + 0x90021D99>; //6 entries > + }; > + > + thermocouple@20 { > + reg =3D <20>; > + adi,sensor-type =3D <9>; //custom thermocouple > + adi,single-ended; > + adi,custom-sensor =3D /bits/ 64 > + <(-50220000) 0 > + (-30200000) 99100000 > + (-5300000) 135400000 > + 0 273150000 > + 40200000 361200000 > + 55300000 522100000 > + 88300000 720300000 > + 132200000 811200000 > + 188700000 922500000 > + 460400000 1000000000>; //10 pairs > + }; > + > + }; > + }; > +... > diff --git a/MAINTAINERS b/MAINTAINERS > index 14a256e785ca..f747a9dc27f5 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -9497,6 +9497,7 @@ W: http://ez.analog.com/community/linux-devi= ce-drivers > L: linux-iio@vger.kernel.org > S: Supported > F: drivers/iio/temperature/ltc2983.c > +F: Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yam= l > > LTC4261 HARDWARE MONITOR DRIVER > M: Guenter Roeck > -- > 2.23.0 >