iio: humidity: si7020: Check device property for skipping reset in probe
Subsystems (2)
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
PATCH 1/2 dt-bindings: iio: humidity: Add si7020 bindings
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
@@ -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
Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings
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
Signed-off-by Eddie James <[email protected]>--- .../bindings/iio/humidity/silabs,si7020.yaml | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+)create mode 100644
Documentation/devicetree/bindings/iio/humidity/silabs,si7020.yamlDocumentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +42
-0@@ -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>; + }; +...
Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings
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
Rob Herring
maintainerRe: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings
In reply to Eddie JamesQuoted 8 lines · Eddie James
Document the si7020 bindings with a new "silabs,skip-reset" property.
Signed-off-by Eddie James <[email protected]>--- .../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.
Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings
In reply to Eddie JamesQuoted 3 lines · Eddie James
Document the si7020 bindings with a new "silabs,skip-reset" property.
Signed-off-by Eddie James <[email protected]>
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.yamlDocumentation/devicetree/bindings/iio/humidity/silabs,si7020.yaml new file +14
-0@@ -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
Re: [PATCH 1/2] dt-bindings: iio: humidity: Add si7020 bindings
In reply to Eddie JamesDocumentation/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
PATCH 2/2 iio: humidity: si7020: Check device property for skipping reset in probe
In reply to Eddie JamesI2C 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
@@ -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