* [PATCH 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x
2022-04-11 9:56 [PATCH 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
@ 2022-04-11 9:56 ` Camel Guo
2022-04-11 9:56 ` [PATCH 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo
2022-04-11 10:05 ` [PATCH 0/2] hwmon/tmp401: add " Camel Guo
2 siblings, 0 replies; 5+ messages in thread
From: Camel Guo @ 2022-04-11 9:56 UTC (permalink / raw)
To: inux, jdelvare, robh+dt, krzk+dt
Cc: kernel, Camel Guo, linux-hwmon, devicetree, linux-kernel,
Camel Guo
From: Camel Guo <camelg@axis.com>
Document the TMP401, TMP411 and TMP43x device devicetree bindings
Signed-off-by: Camel Guo <camelg@axis.com>
---
.../devicetree/bindings/hwmon/ti,tmp401.yaml | 111 ++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 112 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..28be5cbb009b
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
@@ -0,0 +1,111 @@
+# 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: |
+ The value (two's complement) to be programmed in the n-factor correction
+ register.
+ $ref: /schemas/types.yaml#/definitions/uint32
+ items:
+ minimum: 0
+ maximum: 255
+
+ ti,beta-compensation:
+ description: |
+ The value to be programmed in the beta range register.
+ $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] 5+ messages in thread* [PATCH 2/2] hwmon: (tmp401) Add support of three advanced features
2022-04-11 9:56 [PATCH 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
2022-04-11 9:56 ` [PATCH 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo
@ 2022-04-11 9:56 ` Camel Guo
2022-04-11 10:05 ` [PATCH 0/2] hwmon/tmp401: add " Camel Guo
2 siblings, 0 replies; 5+ messages in thread
From: Camel Guo @ 2022-04-11 9:56 UTC (permalink / raw)
To: inux, jdelvare, robh+dt, krzk+dt
Cc: kernel, Camel Guo, linux-hwmon, devicetree, linux-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>
---
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] 5+ messages in thread* Re: [PATCH 0/2] hwmon/tmp401: add support of three advanced features
2022-04-11 9:56 [PATCH 0/2] hwmon/tmp401: add support of three advanced features Camel Guo
2022-04-11 9:56 ` [PATCH 1/2] dt-bindings: hwmon: Add TMP401, TMP411 and TMP43x Camel Guo
2022-04-11 9:56 ` [PATCH 2/2] hwmon: (tmp401) Add support of three advanced features Camel Guo
@ 2022-04-11 10:05 ` Camel Guo
2 siblings, 0 replies; 5+ messages in thread
From: Camel Guo @ 2022-04-11 10:05 UTC (permalink / raw)
To: Camel Guo, inux@roeck-us.net, jdelvare@suse.com,
robh+dt@kernel.org, krzk+dt@kernel.org
Cc: kernel, linux-hwmon@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
On 4/11/22 11:56, 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.
>
> 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 | 111 ++++++++++++++++++
> MAINTAINERS | 1 +
> drivers/hwmon/tmp401.c | 43 ++++++-
> 3 files changed, 154 insertions(+), 1 deletion(-)
> create mode 100644 Documentation/devicetree/bindings/hwmon/ti,tmp401.yaml
>
>
> base-commit: ce522ba9ef7e2d9fb22a39eb3371c0c64e2a433e
> --
> 2.30.2
>
Incorrect email address in --to. Please ignore this one.
^ permalink raw reply [flat|nested] 5+ messages in thread