Skip to contentSkip to conversation

iio: humidity: si7020: Check device property for skipping reset in probe

PATCH Superseded Eddie James 3 participants 8 messages May 11, 2022 – May 13, 2022

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#1 lore raw

PATCH 1/2 dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

---
 .../bindings/iio/humidity/silabs,si7020.yaml  | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +42 -0
new file mode 100644
index 000000000000..ab53bb8d9606
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/humidity/silabs,si7020.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SI7020 humidity + temperature sensor
+
+maintainers:
+  - David Barksdale <[email protected]>
+
+description: |
+   The Silicon Labs Si7013/20/21 Relative Humidity and Temperature Sensors
+   are i2c devices which have an identical programming interface for
+   measuring relative humidity and temperature.
+
+properties:
+  compatible:
+    const: silabs,si7020
+
+  reg:
+    maxItems: 1
+
+  siliabs,skip-reset:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Disables resetting of the device during probe
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    si7021-a20@40 {
+        silabs,skip-reset;
+        compatible = "silabs,si7020";
+        reg = <0x40>;
+    };
+...
Signature · 1 line
2.27.0
#7 lore raw

PATCH 2/2 iio: humidity: si7020: Check device property for skipping reset in probe

In reply to Eddie James

I2C commands issued after the SI7020 is starting up or after reset can potentially upset the startup sequence. Therefore, the host needs to wait for the startup sequence to finish before issuing further i2c commands. This is impractical in cases where the SI7020 is on a shared bus or behind a mux, which may switch channels at any time (generating I2C traffic). Therefore, check for a device property that indicates that the driver should skip resetting the device when probing.

---
 drivers/iio/humidity/si7020.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/iio/humidity/si7020.c +8 -6
index ab6537f136ba..49f6a1b1f5c4 100644
@@ -115,12 +115,14 @@ static int si7020_probe(struct i2c_client *client,
 				     I2C_FUNC_SMBUS_READ_WORD_DATA))
 		return -EOPNOTSUPP;
 
-	/* Reset device, loads default settings. */
-	ret = i2c_smbus_write_byte(client, SI7020CMD_RESET);
-	if (ret < 0)
-		return ret;
-	/* Wait the maximum power-up time after software reset. */
-	msleep(15);
+	if (!device_property_read_bool(&client->dev, "silabs,skip-reset")) {
+		/* Reset device, loads default settings. */
+		ret = i2c_smbus_write_byte(client, SI7020CMD_RESET);
+		if (ret < 0)
+			return ret;
+		/* Wait the maximum power-up time after software reset. */
+		msleep(15);
+	}
 
 	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
 	if (!indio_dev)
Signature · 1 line
2.27.0
#0 lore raw

cover iio: humidity: si7020: Check device property for skipping reset in probe

I2C commands issued after the SI7020 is starting up or after reset can potentially upset the startup sequence. Therefore, the host needs to wait for the startup sequence to finish before issuing further i2c commands. This is impractical in cases where the SI7020 is on a shared bus or behind a mux, which may switch channels at any time (generating I2C traffic). Therefore, check for a device property that indicates that the driver should skip resetting the device when probing.

Eddie James (2):
dt-bindings: iio: humidity: Add si7020 bindings
iio: humidity: si7020: Check device property for skipping reset in probe

 .../bindings/iio/humidity/silabs,si7020.yaml  | 42 +++++++++++++++++++
 drivers/iio/humidity/si7020.c                 | 14 ++++---
 2 files changed, 50 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml
Signature · 1 line
2.27.0
#2 lore raw

Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James
Quoted 1 line · Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

I missed the entry in trivial-devices.txt. I can push a v2 or a separate patch for that.

Eddie

Quoted 55 lines
---
  .../bindings/iio/humidity/silabs,si7020.yaml  | 42 +++++++++++++++++++
  1 file changed, 42 insertions(+)

create mode 100644 Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +42 -0
new file mode 100644
index 000000000000..ab53bb8d9606
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/humidity/silabs,si7020.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SI7020 humidity + temperature sensor
+
+maintainers:
+  - David Barksdale <[email protected]>
+
+description: |
+   The Silicon Labs Si7013/20/21 Relative Humidity and Temperature Sensors
+   are i2c devices which have an identical programming interface for
+   measuring relative humidity and temperature.
+
+properties:
+  compatible:
+    const: silabs,si7020
+
+  reg:
+    maxItems: 1
+
+  siliabs,skip-reset:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Disables resetting of the device during probe
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    si7021-a20@40 {
+        silabs,skip-reset;
+        compatible = "silabs,si7020";
+        reg = <0x40>;
+    };
+...
maintainer
#4 lore raw

Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James
Quoted 8 lines · Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

---
 .../bindings/iio/humidity/silabs,si7020.yaml  | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dts:21.13-26: Warning (reg_format): /example-0/si7021-a20@40:reg: property has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1) Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: Warning (simple_bus_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format' /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: example-0: si7021-a20@40:reg:0: [64] is too short
From schema: /usr/local/lib/python3.10/dist-packages/dtschema/schemas/reg.yaml
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: si7021-a20@40: 'silabs,skip-reset' does not match any of the regexes: 'pinctrl-[0-9]+'
From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/iio/humidity/silabs,si7020.example.dtb: si7021-a20@40: 'silabs,skip-reset' does not match any of the regexes: 'pinctrl-[0-9]+'
From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/trivial-devices.yaml

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/patch/

This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:

pip3 install dtschema --upgrade

Please check and re-submit.

#5 lore raw

Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James
Quoted 3 lines · Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

Thank you for your patch. There is something to discuss/improve.

Quoted 25 lines
---
 .../bindings/iio/humidity/silabs,si7020.yaml  | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +14 -0
new file mode 100644
index 000000000000..ab53bb8d9606
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/humidity/silabs,si7020.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SI7020 humidity + temperature sensor
+
+maintainers:
+  - David Barksdale <[email protected]>
+
+description: |
+   The Silicon Labs Si7013/20/21 Relative Humidity and Temperature Sensors
+   are i2c devices which have an identical programming interface for

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 24

Quoted 10 lines
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +10 -0
+   measuring relative humidity and temperature.
+
+properties:
+  compatible:
+    const: silabs,si7020
+
+  reg:
+    maxItems: 1
+
+  siliabs,skip-reset:

Do not describe implementation (driver) behavior, but the device hardware.

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 25

Quoted 1 line
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +1 -0
+    $ref: /schemas/types.yaml#/definitions/flag

"type:boolean" is shorter

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 37

Quoted 12 lines
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +12 -0
+    description:
+      Disables resetting of the device during probe
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    si7021-a20@40 {

Generic node name, so "sensor"?

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 40

Quoted 3 lines
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +3 -0
+        silabs,skip-reset;
+        compatible = "silabs,si7020";
+        reg = <0x40>;

Order the properties: 1. compatible, 2. reg, then the rest.

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 42

Quoted 2 lines
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +2 -0
+    };
+...

Best regards,
Krzysztof

#3 lore raw

Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James
Quoted 7 lines · Eddie James
Quoted 1 line · Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

I missed the entry in trivial-devices.txt. I can push a v2 or a separate patch for that.

In this patch, please. Anyway you need v2.

Best regards,
Krzysztof

#6 lore raw

Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings

In reply to Eddie James

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml line 41

Quoted 8 lines · Eddie James

Document the si7020 bindings with a new "silabs,skip-reset" property.

Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +7 -0
+examples:
+  - |
+    si7021-a20@40 {
+        silabs,skip-reset;
+        compatible = "silabs,si7020";
+        reg = <0x40>;
+    };

As Rob's bot pointed out - you need to test your bindings. See writing-schema.rst. Don't send bindings which do not work.

Best regards,
Krzysztof