* [PATCH v2 0/2] hwmon/tmp401: add support of three advanced features @ 2022-04-12 13:52 Camel Guo 2022-04-12 13:52 ` [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo 2022-04-12 13:52 ` [PATCH v2 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo 0 siblings, 2 replies; 8+ messages in thread From: Camel Guo @ 2022-04-12 13:52 UTC (permalink / raw) To: Guenter Roeck, Jean Delvare, Rob Herring, Krzysztof Kozlowski Cc: Camel Guo, linux-hwmon, devicetree, linux-kernel, kernel According the their datasheets: - TMP401, TMP411 and TMP43x support extended temperature range; - TMP411 and TMP43x support n-factor correction; - TMP43x support beta compensation. In order to make it possible for users to enable these features and set up them based on their needs, this patch series adds the following devicetree bindings: - ti,extended-range-enable; - ti,n-factor; - ti,beta-compensation. In the meanwhile, tmp401 driver reads them and configures the coressponding registers accordingly. v2: - dt-bindings: fix format and describe hardware properties instead of programming models in ti,tmp401.yaml. Cc: linux-hwmon@vger.kernel.org Cc: devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org Camel Guo (2): dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x hwmon: (tmp401) Add support of three advanced features .../devicetree/bindings/hwmon/ti,tmp401.yaml | 112 ++++++++++++++++++ MAINTAINERS | 1 + drivers/hwmon/tmp401.c | 43 ++++++- 3 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml base-commit: ce522ba9ef7e2d9fb22a39eb3371c0c64e2a433e -- 2.30.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-12 13:52 [PATCH v2 0/2] hwmon/tmp401: add support of three advanced features Camel Guo @ 2022-04-12 13:52 ` Camel Guo 2022-04-12 16:30 ` Krzysztof Kozlowski 2022-04-12 21:36 ` Rob Herring 2022-04-12 13:52 ` [PATCH v2 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo 1 sibling, 2 replies; 8+ messages in thread From: Camel Guo @ 2022-04-12 13:52 UTC (permalink / raw) To: Guenter Roeck, Jean Delvare, Rob Herring, Krzysztof Kozlowski Cc: Camel Guo, linux-hwmon, devicetree, linux-kernel, kernel Document the TMP401, TMP411 and TMP43x device devicetree bindings Signed-off-by: Camel Guo <camel.guo@axis.com> --- Notes: v2: - Fix format and describe hardware properties instead of programming models .../devicetree/bindings/hwmon/ti,tmp401.yaml | 112 ++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 113 insertions(+) create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml diff --git a/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml new file mode 100644 index 000000000000..dae4df36935e --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/hwmon/ti,tmp401.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TMP401, TPM411 and TMP43x temperature sensor + +maintainers: + - Guenter Roeck <linux@roeck-us.net> + +description: | + ±1°C Remote and Local temperature sensor + + Datasheets: + https://www.ti.com/lit/ds/symlink/tmp401.pdf + https://www.ti.com/lit/ds/symlink/tmp411.pdf + https://www.ti.com/lit/ds/symlink/tmp431.pdf + https://www.ti.com/lit/ds/symlink/tmp435.pdf + +properties: + compatible: + enum: + - ti,tmp401 + - ti,tmp411 + - ti,tmp431 + - ti,tmp432 + - ti,tmp435 + + reg: + maxItems: 1 + + '#address-cells': + const: 1 + + '#size-cells': + const: 0 + + ti,extended-range-enable: + description: + When set, this sensor measures over extended temperature range. + type: boolean + + ti,n-factor: + description: + value to be used for converting remote channel measurements to + temperature. + $ref: /schemas/types.yaml#/definitions/uint32 + items: + minimum: 0 + maximum: 255 + + ti,beta-compensation: + description: + value to select beta correction range. + $ref: /schemas/types.yaml#/definitions/uint32 + items: + minimum: 0 + maximum: 15 + +allOf: + - if: + properties: + compatible: + contains: + enum: + - ti,tmp401 + then: + properties: + ti,n-factor: false + + - if: + properties: + compatible: + contains: + enum: + - ti,tmp401 + - ti,tmp411 + then: + properties: + ti,beta-compensation: false + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + sensor@4c { + compatible = "ti,tmp401"; + reg = <0x4c>; + }; + }; + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + sensor@4c { + compatible = "ti,tmp431"; + reg = <0x4c>; + ti,extended-range-enable; + ti,n-factor = <0x3b>; + ti,beta-compensation = <0x7>; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 61d9f114c37f..6b0d8f5cc68e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -19838,6 +19838,7 @@ TMP401 HARDWARE MONITOR DRIVER M: Guenter Roeck <linux@roeck-us.net> L: linux-hwmon@vger.kernel.org S: Maintained +F: Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml F: Documentation/hwmon/tmp401.rst F: drivers/hwmon/tmp401.c -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-12 13:52 ` [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo @ 2022-04-12 16:30 ` Krzysztof Kozlowski 2022-04-12 21:36 ` Rob Herring 1 sibling, 0 replies; 8+ messages in thread From: Krzysztof Kozlowski @ 2022-04-12 16:30 UTC (permalink / raw) To: Camel Guo, Guenter Roeck, Jean Delvare, Rob Herring, Krzysztof Kozlowski Cc: linux-hwmon, devicetree, linux-kernel, kernel On 12/04/2022 15:52, Camel Guo wrote: > Document the TMP401, TMP411 and TMP43x device devicetree bindings > > Signed-off-by: Camel Guo <camel.guo@axis.com> > --- > > Notes: > v2: > - Fix format and describe hardware properties instead of programming > models > Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-12 13:52 ` [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo 2022-04-12 16:30 ` Krzysztof Kozlowski @ 2022-04-12 21:36 ` Rob Herring 2022-04-13 9:13 ` Camel Guo 1 sibling, 1 reply; 8+ messages in thread From: Rob Herring @ 2022-04-12 21:36 UTC (permalink / raw) To: Camel Guo Cc: Guenter Roeck, Jean Delvare, Krzysztof Kozlowski, linux-hwmon, devicetree, linux-kernel, kernel On Tue, Apr 12, 2022 at 03:52:31PM +0200, Camel Guo wrote: > Document the TMP401, TMP411 and TMP43x device devicetree bindings > > Signed-off-by: Camel Guo <camel.guo@axis.com> > --- > > Notes: > v2: > - Fix format and describe hardware properties instead of programming > models > > .../devicetree/bindings/hwmon/ti,tmp401.yaml | 112 ++++++++++++++++++ > MAINTAINERS | 1 + > 2 files changed, 113 insertions(+) > create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml > > diff --git a/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml > new file mode 100644 > index 000000000000..dae4df36935e > --- /dev/null > +++ b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml > @@ -0,0 +1,112 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/hwmon/ti,tmp401.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: TMP401, TPM411 and TMP43x temperature sensor > + > +maintainers: > + - Guenter Roeck <linux@roeck-us.net> > + > +description: | > + ±1°C Remote and Local temperature sensor > + > + Datasheets: > + https://www.ti.com/lit/ds/symlink/tmp401.pdf > + https://www.ti.com/lit/ds/symlink/tmp411.pdf > + https://www.ti.com/lit/ds/symlink/tmp431.pdf > + https://www.ti.com/lit/ds/symlink/tmp435.pdf > + > +properties: > + compatible: > + enum: > + - ti,tmp401 > + - ti,tmp411 > + - ti,tmp431 > + - ti,tmp432 > + - ti,tmp435 > + > + reg: > + maxItems: 1 > + > + '#address-cells': > + const: 1 > + > + '#size-cells': > + const: 0 You don't have any child nodes and these are for child nodes with 'reg'. > + > + ti,extended-range-enable: > + description: > + When set, this sensor measures over extended temperature range. > + type: boolean > + > + ti,n-factor: Funny, I just ran across this property today for tmp421... Can the schema be shared? > + description: > + value to be used for converting remote channel measurements to > + temperature. > + $ref: /schemas/types.yaml#/definitions/uint32 > + items: > + minimum: 0 > + maximum: 255 Isn't this property signed and should be -128 to -127? The code treats the existing cases as signed. One schema is correct and one is like you have it. > + > + ti,beta-compensation: > + description: > + value to select beta correction range. > + $ref: /schemas/types.yaml#/definitions/uint32 > + items: > + minimum: 0 > + maximum: 15 Drop 'items'. It is not an array. > + > +allOf: > + - if: > + properties: > + compatible: > + contains: > + enum: > + - ti,tmp401 > + then: > + properties: > + ti,n-factor: false > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - ti,tmp401 > + - ti,tmp411 > + then: > + properties: > + ti,beta-compensation: false > + > +required: > + - compatible > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + sensor@4c { > + compatible = "ti,tmp401"; > + reg = <0x4c>; > + }; > + }; > + - | > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + sensor@4c { > + compatible = "ti,tmp431"; > + reg = <0x4c>; > + ti,extended-range-enable; > + ti,n-factor = <0x3b>; > + ti,beta-compensation = <0x7>; > + }; > + }; > diff --git a/MAINTAINERS b/MAINTAINERS > index 61d9f114c37f..6b0d8f5cc68e 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -19838,6 +19838,7 @@ TMP401 HARDWARE MONITOR DRIVER > M: Guenter Roeck <linux@roeck-us.net> > L: linux-hwmon@vger.kernel.org > S: Maintained > +F: Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml > F: Documentation/hwmon/tmp401.rst > F: drivers/hwmon/tmp401.c > > -- > 2.30.2 > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-12 21:36 ` Rob Herring @ 2022-04-13 9:13 ` Camel Guo 2022-04-13 13:34 ` Rob Herring 0 siblings, 1 reply; 8+ messages in thread From: Camel Guo @ 2022-04-13 9:13 UTC (permalink / raw) To: Rob Herring, Camel Guo Cc: Guenter Roeck, Jean Delvare, Krzysztof Kozlowski, linux-hwmon, devicetree, linux-kernel, kernel On 4/12/22 23:36, Rob Herring wrote: > On Tue, Apr 12, 2022 at 03:52:31PM +0200, Camel Guo wrote: >> Document the TMP401, TMP411 and TMP43x device devicetree bindings >> >> Signed-off-by: Camel Guo <camel.guo@axis.com> >> --- >> >> +properties: >> + compatible: >> + enum: >> + - ti,tmp401 >> + - ti,tmp411 >> + - ti,tmp431 >> + - ti,tmp432 >> + - ti,tmp435 >> + >> + reg: >> + maxItems: 1 >> + > >> + '#address-cells': >> + const: 1 >> + >> + '#size-cells': >> + const: 0 > > You don't have any child nodes and these are for child nodes with 'reg'. Ack! I will fix it in v3. > >> + >> + ti,extended-range-enable: >> + description: >> + When set, this sensor measures over extended temperature range. >> + type: boolean >> + >> + ti,n-factor: > > Funny, I just ran across this property today for tmp421... > > Can the schema be shared? Yes, this property is in ti,tmp421.yaml and ti,tmp464.yaml as well. But I guess maybe it is better to separate tmp401 from them. That is because the chips supported in ti,tmp421,yaml has three channels and the chips supported in ti,tmp464.yaml has eight channels and this property n-factor is for each channel/child node. But the chips supported in ti,tmp401.yaml only has one channel. n-factor is for this chip. > >> + description: >> + value to be used for converting remote channel measurements to >> + temperature. >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + items: >> + minimum: 0 >> + maximum: 255 > > Isn't this property signed and should be -128 to -127? The code treats > the existing cases as signed. One schema is correct and one is like you > have it. Ack! will fix it in v3 > >> + >> + ti,beta-compensation: >> + description: >> + value to select beta correction range. >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + items: >> + minimum: 0 >> + maximum: 15 > > Drop 'items'. It is not an array. Not sure if I understand correctly. Do you means it should be like this? If so, I guess ti,n-factor should also be changed like this. Am I right? ti,beta-compensation: description: value to select beta correction range. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 15 > >> + >> +allOf: >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - ti,tmp401 >> + then: >> + properties: >> + ti,n-factor: false >> + >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - ti,tmp401 >> + - ti,tmp411 >> + then: >> + properties: >> + ti,beta-compensation: false >> + >> +required: >> + - compatible >> + - reg >> + >> +additionalProperties: false >> + >> +examples: >> + - | >> + i2c { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + sensor@4c { >> + compatible = "ti,tmp401"; >> + reg = <0x4c>; >> + }; >> + }; >> + - | >> + i2c { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + sensor@4c { >> + compatible = "ti,tmp431"; >> + reg = <0x4c>; >> + ti,extended-range-enable; >> + ti,n-factor = <0x3b>; >> + ti,beta-compensation = <0x7>; >> + }; >> + }; >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 61d9f114c37f..6b0d8f5cc68e 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -19838,6 +19838,7 @@ TMP401 HARDWARE MONITOR DRIVER >> M: Guenter Roeck <linux@roeck-us.net> >> L: linux-hwmon@vger.kernel.org >> S: Maintained >> +F: Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml >> F: Documentation/hwmon/tmp401.rst >> F: drivers/hwmon/tmp401.c >> >> -- >> 2.30.2 >> >> Thanks for your review. I will fix most of these comments in v3. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-13 9:13 ` Camel Guo @ 2022-04-13 13:34 ` Rob Herring 2022-04-13 14:16 ` Camel Guo 0 siblings, 1 reply; 8+ messages in thread From: Rob Herring @ 2022-04-13 13:34 UTC (permalink / raw) To: Camel Guo Cc: Guenter Roeck, Jean Delvare, Krzysztof Kozlowski, linux-hwmon, devicetree, linux-kernel, kernel On Wed, Apr 13, 2022 at 09:13:39AM +0000, Camel Guo wrote: > On 4/12/22 23:36, Rob Herring wrote: > > On Tue, Apr 12, 2022 at 03:52:31PM +0200, Camel Guo wrote: > >> Document the TMP401, TMP411 and TMP43x device devicetree bindings > >> > >> Signed-off-by: Camel Guo <camel.guo@axis.com> > >> --- > >> > >> +properties: > >> + compatible: > >> + enum: > >> + - ti,tmp401 > >> + - ti,tmp411 > >> + - ti,tmp431 > >> + - ti,tmp432 > >> + - ti,tmp435 > >> + > >> + reg: > >> + maxItems: 1 > >> + > > > >> + '#address-cells': > >> + const: 1 > >> + > >> + '#size-cells': > >> + const: 0 > > > > You don't have any child nodes and these are for child nodes with 'reg'. > > Ack! I will fix it in v3. > > > >> + > >> + ti,extended-range-enable: > >> + description: > >> + When set, this sensor measures over extended temperature range. > >> + type: boolean > >> + > >> + ti,n-factor: > > > > Funny, I just ran across this property today for tmp421... > > > > Can the schema be shared? > > Yes, this property is in ti,tmp421.yaml and ti,tmp464.yaml as well. But > I guess maybe it is better to separate tmp401 from them. > > That is because the chips supported in ti,tmp421,yaml has three channels > and the chips supported in ti,tmp464.yaml has eight channels and this > property n-factor is for each channel/child node. But the chips > supported in ti,tmp401.yaml only has one channel. n-factor is for this > chip. Okay, that makes sense to keep them separate. > >> + description: > >> + value to be used for converting remote channel measurements to > >> + temperature. > >> + $ref: /schemas/types.yaml#/definitions/uint32 > >> + items: > >> + minimum: 0 > >> + maximum: 255 > > > > Isn't this property signed and should be -128 to -127? The code treats > > the existing cases as signed. One schema is correct and one is like you > > have it. > > Ack! will fix it in v3 > > > > >> + > >> + ti,beta-compensation: > >> + description: > >> + value to select beta correction range. > >> + $ref: /schemas/types.yaml#/definitions/uint32 > >> + items: > >> + minimum: 0 > >> + maximum: 15 > > > > Drop 'items'. It is not an array. > > Not sure if I understand correctly. Do you means it should be like this? > If so, I guess ti,n-factor should also be changed like this. Am I right? > > ti,beta-compensation: > description: > value to select beta correction range. > $ref: /schemas/types.yaml#/definitions/uint32 > minimum: 0 > maximum: 15 Yes, except your indentation is off. As-is, it's all 'description'. It should be like this: ti,beta-compensation: description: value to select beta correction range. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 15 Rob ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x 2022-04-13 13:34 ` Rob Herring @ 2022-04-13 14:16 ` Camel Guo 0 siblings, 0 replies; 8+ messages in thread From: Camel Guo @ 2022-04-13 14:16 UTC (permalink / raw) To: Rob Herring, Camel Guo Cc: Guenter Roeck, Jean Delvare, Krzysztof Kozlowski, linux-hwmon, devicetree, linux-kernel, kernel On 4/13/22 15:34, Rob Herring wrote: > On Wed, Apr 13, 2022 at 09:13:39AM +0000, Camel Guo wrote: >> On 4/12/22 23:36, Rob Herring wrote: >> > On Tue, Apr 12, 2022 at 03:52:31PM +0200, Camel Guo wrote: >> >> Document the TMP401, TMP411 and TMP43x device devicetree bindings >> >> >> >> + maximum: 15 >> > >> > Drop 'items'. It is not an array. >> >> Not sure if I understand correctly. Do you means it should be like this? >> If so, I guess ti,n-factor should also be changed like this. Am I right? >> >> ti,beta-compensation: >> description: >> value to select beta correction range. >> $ref: /schemas/types.yaml#/definitions/uint32 >> minimum: 0 >> maximum: 15 > > Yes, except your indentation is off. As-is, it's all 'description'. It > should be like this: > > ti,beta-compensation: > description: > value to select beta correction range. > $ref: /schemas/types.yaml#/definitions/uint32 > minimum: 0 > maximum: 15 > > Rob Now v3 is out with fixes on Rob's comments. Please review v3 instead. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] hwmon: (tmp401) Add support of three advanced features 2022-04-12 13:52 [PATCH v2 0/2] hwmon/tmp401: add support of three advanced features Camel Guo 2022-04-12 13:52 ` [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo @ 2022-04-12 13:52 ` Camel Guo 1 sibling, 0 replies; 8+ messages in thread From: Camel Guo @ 2022-04-12 13:52 UTC (permalink / raw) To: Guenter Roeck, Jean Delvare, Rob Herring, Krzysztof Kozlowski Cc: Camel Guo, linux-hwmon, devicetree, linux-kernel, kernel tmp401 driver supports TMP401, TMP411 and TMP43X temperature sensors. According to their datasheet: - all of them support extended temperature range feature; - TMP411 and TPM43X support n-factor correction feature; - TMP43X support beta compensation feature. In order to support setting them during bootup, this commit reads ti,extended-range-enable, ti,n-factor and ti,beta-compensation and set the corresponding registers during probing. Signed-off-by: Camel Guo <camel.guo@axis.com> --- Notes: v2: no change drivers/hwmon/tmp401.c | 43 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c index b86d9df7105d..75cdf5d2907e 100644 --- a/drivers/hwmon/tmp401.c +++ b/drivers/hwmon/tmp401.c @@ -41,6 +41,8 @@ enum chips { tmp401, tmp411, tmp431, tmp432, tmp435 }; #define TMP401_STATUS 0x02 #define TMP401_CONFIG 0x03 #define TMP401_CONVERSION_RATE 0x04 +#define TMP4XX_N_FACTOR_REG 0x18 +#define TMP43X_BETA_RANGE 0x25 #define TMP401_TEMP_CRIT_HYST 0x21 #define TMP401_MANUFACTURER_ID_REG 0xFE #define TMP401_DEVICE_ID_REG 0xFF @@ -543,6 +545,7 @@ static int tmp401_init_client(struct tmp401_data *data) struct regmap *regmap = data->regmap; u32 config, config_orig; int ret; + u32 val = 0; /* Set conversion rate to 2 Hz */ ret = regmap_write(regmap, TMP401_CONVERSION_RATE, 5); @@ -557,10 +560,48 @@ static int tmp401_init_client(struct tmp401_data *data) config_orig = config; config &= ~TMP401_CONFIG_SHUTDOWN; + if (of_property_read_bool(data->client->dev.of_node, "ti,extended-range-enable")) { + /* Enable measurement over extended temperature range */ + config |= TMP401_CONFIG_RANGE; + } + data->extended_range = !!(config & TMP401_CONFIG_RANGE); - if (config != config_orig) + if (config != config_orig) { ret = regmap_write(regmap, TMP401_CONFIG, config); + if (ret < 0) + return ret; + } + + ret = of_property_read_u32(data->client->dev.of_node, "ti,n-factor", &val); + if (!ret) { + if (data->kind == tmp401) { + dev_err(&data->client->dev, "ti,tmp401 does not support n-factor correction\n"); + return -EINVAL; + } + if (val > 255) { + dev_err(&data->client->dev, "n-factor is invalid (%u)\n", val); + return -EINVAL; + } + ret = regmap_write(regmap, TMP4XX_N_FACTOR_REG, val); + if (ret < 0) + return ret; + } + + ret = of_property_read_u32(data->client->dev.of_node, "ti,beta-compensation", &val); + if (!ret) { + if (data->kind == tmp401 || data->kind == tmp411) { + dev_err(&data->client->dev, "ti,tmp401 or ti,tmp411 does not support beta compensation\n"); + return -EINVAL; + } + if (val > 15) { + dev_err(&data->client->dev, "beta-compensation is invalid (%u)\n", val); + return -EINVAL; + } + ret = regmap_write(regmap, TMP43X_BETA_RANGE, val); + if (ret < 0) + return ret; + } return ret; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-04-13 14:16 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-04-12 13:52 [PATCH v2 0/2] hwmon/tmp401: add support of three advanced features Camel Guo 2022-04-12 13:52 ` [PATCH v2 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo 2022-04-12 16:30 ` Krzysztof Kozlowski 2022-04-12 21:36 ` Rob Herring 2022-04-13 9:13 ` Camel Guo 2022-04-13 13:34 ` Rob Herring 2022-04-13 14:16 ` Camel Guo 2022-04-12 13:52 ` [PATCH v2 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.