2022-04-13 21:40:42

by Camel Guo

[permalink] [raw]
Subject: [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features

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.

v3:
- dt-bindings: remove unused [address|size]_cells and ti,beta-compensation.items
from ti,tmp401.yaml;
- dt-bindings: change ti,n-factor range to [-128, 127];
- tmp401.c: instead of u32, use s32 for ti,n-factor.

v2:
- dt-bindings: fix format and describe hardware properties instead of
programming models in ti,tmp401.yaml.

Cc: [email protected]
Cc: [email protected]
Cc: [email protected]

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 | 105 ++++++++++++++++++
MAINTAINERS | 1 +
drivers/hwmon/tmp401.c | 44 +++++++-
3 files changed, 149 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml


base-commit: ce522ba9ef7e2d9fb22a39eb3371c0c64e2a433e
--
2.30.2


2022-04-14 04:42:21

by Camel Guo

[permalink] [raw]
Subject: [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x

Document the TMP401, TMP411 and TMP43x device devicetree bindings

Reviewed-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Camel Guo <[email protected]>
---

Notes:
v3:
- Remove unneeded address-cells and size-cells;
- Change range of ti,n-factor to [-128, 127];
- Remove unneeded 'items' of ti,beta-compensation;
- Got Reviewed-by from Krzysztof.

v2:
- Fix format and describe hardware properties instead of programming
models

.../devicetree/bindings/hwmon/ti,tmp401.yaml | 105 ++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 106 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..fe0ac08faa1a
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
@@ -0,0 +1,105 @@
+# 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 <[email protected]>
+
+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
+
+ 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/int32
+ items:
+ minimum: -128
+ maximum: 127
+
+ 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 <[email protected]>
L: [email protected]
S: Maintained
+F: Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
F: Documentation/hwmon/tmp401.rst
F: drivers/hwmon/tmp401.c

--
2.30.2

2022-04-14 06:48:31

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x

On Wed, 13 Apr 2022 13:40:12 +0200, Camel Guo wrote:
> Document the TMP401, TMP411 and TMP43x device devicetree bindings
>
> Reviewed-by: Krzysztof Kozlowski <[email protected]>
> Signed-off-by: Camel Guo <[email protected]>
> ---
>
> Notes:
> v3:
> - Remove unneeded address-cells and size-cells;
> - Change range of ti,n-factor to [-128, 127];
> - Remove unneeded 'items' of ti,beta-compensation;
> - Got Reviewed-by from Krzysztof.
>
> v2:
> - Fix format and describe hardware properties instead of programming
> models
>
> .../devicetree/bindings/hwmon/ti,tmp401.yaml | 105 ++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 106 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
>

Reviewed-by: Rob Herring <[email protected]>

2022-04-14 14:13:48

by Camel Guo

[permalink] [raw]
Subject: [PATCH v3 2/2] hwmon: (tmp401) Add support of three advanced features

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 <[email protected]>
---

Notes:
v3:
- Instead of u32, use s32 for ti,n-factor.

v2: no change

drivers/hwmon/tmp401.c | 44 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
index b86d9df7105d..8f49da997367 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,8 @@ static int tmp401_init_client(struct tmp401_data *data)
struct regmap *regmap = data->regmap;
u32 config, config_orig;
int ret;
+ u32 val = 0;
+ s32 nfactor = 0;

/* Set conversion rate to 2 Hz */
ret = regmap_write(regmap, TMP401_CONVERSION_RATE, 5);
@@ -557,10 +561,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", &nfactor);
+ if (!ret) {
+ if (data->kind == tmp401) {
+ dev_err(&data->client->dev, "ti,tmp401 does not support n-factor correction\n");
+ return -EINVAL;
+ }
+ if (nfactor < -128 || nfactor > 127) {
+ dev_err(&data->client->dev, "n-factor is invalid (%d)\n", nfactor);
+ return -EINVAL;
+ }
+ ret = regmap_write(regmap, TMP4XX_N_FACTOR_REG, (unsigned int)nfactor);
+ 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

2022-04-15 21:18:52

by Camel Guo

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features

On 4/13/22 13:40, Camel Guo wrote:
> 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.
>
> v3:
> - dt-bindings: remove unused [address|size]_cells and
> ti,beta-compensation.items
>   from ti,tmp401.yaml;
> - dt-bindings: change ti,n-factor range to [-128, 127];
> - tmp401.c: instead of u32, use s32 for ti,n-factor.
>
> v2:
> - dt-bindings: fix format and describe hardware properties instead of
>   programming models in ti,tmp401.yaml.
>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
>
> 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  | 105 ++++++++++++++++++
>  MAINTAINERS                                   |   1 +
>  drivers/hwmon/tmp401.c                        |  44 +++++++-
>  3 files changed, 149 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
>
>
> base-commit: ce522ba9ef7e2d9fb22a39eb3371c0c64e2a433e
> --
> 2.30.2
>

V4 is out. Please review that series instead.