* [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x
2022-04-13 11:40 [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
@ 2022-04-13 11:40 ` Camel Guo
2022-04-13 18:13 ` Rob Herring
2022-04-13 11:40 ` [PATCH v3 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo
2022-04-14 7:59 ` [PATCH v3 0/2] hwmon/tmp401: add " Camel Guo
2 siblings, 1 reply; 5+ messages in thread
From: Camel Guo @ 2022-04-13 11:40 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
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Camel Guo <camel.guo@axis.com>
---
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 <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
+
+ 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 <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] 5+ messages in thread* Re: [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x
2022-04-13 11:40 ` [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo
@ 2022-04-13 18:13 ` Rob Herring
0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2022-04-13 18:13 UTC (permalink / raw)
To: Camel Guo
Cc: linux-hwmon, Guenter Roeck, Krzysztof Kozlowski, linux-kernel,
kernel, Jean Delvare, devicetree, Rob Herring
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 <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Camel Guo <camel.guo@axis.com>
> ---
>
> 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 <robh@kernel.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] hwmon: (tmp401) Add support of three advanced features
2022-04-13 11:40 [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
2022-04-13 11:40 ` [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo
@ 2022-04-13 11:40 ` Camel Guo
2022-04-14 7:59 ` [PATCH v3 0/2] hwmon/tmp401: add " Camel Guo
2 siblings, 0 replies; 5+ messages in thread
From: Camel Guo @ 2022-04-13 11:40 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:
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
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features
2022-04-13 11:40 [PATCH v3 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
2022-04-13 11:40 ` [PATCH v3 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo
2022-04-13 11:40 ` [PATCH v3 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo
@ 2022-04-14 7:59 ` Camel Guo
2 siblings, 0 replies; 5+ messages in thread
From: Camel Guo @ 2022-04-14 7:59 UTC (permalink / raw)
To: Camel Guo, Guenter Roeck, Jean Delvare, Rob Herring,
Krzysztof Kozlowski
Cc: linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel
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: 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 | 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.
^ permalink raw reply [flat|nested] 5+ messages in thread