2023-07-26 16:47:26

by Carsten Spieß

[permalink] [raw]
Subject: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

Add dt-bindings for Renesase ISL28022 power monitor.

Signed-off-by: Carsten Spieß <[email protected]>
---
.../bindings/hwmon/renesas,isl28022.yaml | 67 +++++++++++++++++++
MAINTAINERS | 1 +
2 files changed, 68 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml b/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
new file mode 100644
index 000000000000..5ecf892db269
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/hwmon/renesas,isl28022.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas ISL28022 power monitor
+
+maintainers:
+ - Carsten Spieß <[email protected]>
+
+description: |
+ The ISL28022 is a power monitor with I2C interface. The device monitors
+ voltage, current via shunt resistor and calculated power.
+
+ Datasheets:
+ https://www.renesas.com/us/en/www/doc/datasheet/isl28022.pdf
+
+Required properties:
+ compatible:
+ enum:
+ - renesas,isl28022
+
+ reg:
+ maxItems: 1
+
+Optional properties:
+ shunt-resistor-micro-ohms:
+ description:
+ Shunt resistor value in micro-Ohm
+ defaults to <0> when not set
+ monitoring of current and power not supported when <0>
+
+ shunt-gain:
+ description:
+ Shunt gain to scale maximal shunt voltage to
+ 40mV, 80mV, 160mV, 320mV
+ defaults to <8> (320mV) when not set
+ enum: [1, 2, 4, 8]
+
+ average:
+ description: |
+ Number of samples to be used to report voltage, current and power values.
+ defaults to <0> when not set
+ enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ power-monitor@40 {
+ compatible = "renesas,isl28022";
+ reg = <0x10>;
+ shunt-resistor-micro-ohms = <8000>;
+ shunt-gain = <1>;
+ average = <128>;
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index c61aa688cd11..ec9b97ace50b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11076,6 +11076,7 @@ ISL28022 HARDWARE MONITORING DRIVER
M: Carsten Spieß <[email protected]>
L: [email protected]
S: Maintained
+F: Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
F: Documentation/hwmon/isl28022.rst
F: drivers/hwmon/isl28022.c

--
2.34.1



2023-07-26 17:17:31

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On 7/26/23 08:22, Carsten Spieß wrote:
> Add dt-bindings for Renesase ISL28022 power monitor.
>
> Signed-off-by: Carsten Spieß <[email protected]>
> ---
> .../bindings/hwmon/renesas,isl28022.yaml | 67 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 68 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
>
> diff --git a/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml b/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
> new file mode 100644
> index 000000000000..5ecf892db269
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
> @@ -0,0 +1,67 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +
> +$id: http://devicetree.org/schemas/hwmon/renesas,isl28022.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Renesas ISL28022 power monitor
> +
> +maintainers:
> + - Carsten Spieß <[email protected]>
> +
> +description: |
> + The ISL28022 is a power monitor with I2C interface. The device monitors
> + voltage, current via shunt resistor and calculated power.
> +
> + Datasheets:
> + https://www.renesas.com/us/en/www/doc/datasheet/isl28022.pdf
> +
> +Required properties:
> + compatible:
> + enum:
> + - renesas,isl28022
> +
> + reg:
> + maxItems: 1
> +
> +Optional properties:
> + shunt-resistor-micro-ohms:
> + description:
> + Shunt resistor value in micro-Ohm
> + defaults to <0> when not set
> + monitoring of current and power not supported when <0>
> +

Should not default to 0 (disabled).

> + shunt-gain:
> + description:
> + Shunt gain to scale maximal shunt voltage to
> + 40mV, 80mV, 160mV, 320mV
> + defaults to <8> (320mV) when not set
> + enum: [1, 2, 4, 8]
> +
> + average:
> + description: |
> + Number of samples to be used to report voltage, current and power values.
> + defaults to <0> when not set
> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]

Should not default to 0 (disabled).

> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + power-monitor@40 {
> + compatible = "renesas,isl28022";
> + reg = <0x10>;
> + shunt-resistor-micro-ohms = <8000>;
> + shunt-gain = <1>;
> + average = <128>;
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index c61aa688cd11..ec9b97ace50b 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -11076,6 +11076,7 @@ ISL28022 HARDWARE MONITORING DRIVER
> M: Carsten Spieß <[email protected]>
> L: [email protected]
> S: Maintained
> +F: Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml
> F: Documentation/hwmon/isl28022.rst
> F: drivers/hwmon/isl28022.c
>


2023-07-26 17:58:32

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022


On Wed, 26 Jul 2023 17:22:34 +0200, Carsten Spieß wrote:
> Add dt-bindings for Renesase ISL28022 power monitor.
>
> Signed-off-by: Carsten Spieß <[email protected]>
> ---
> .../bindings/hwmon/renesas,isl28022.yaml | 67 +++++++++++++++++++
> MAINTAINERS | 1 +
> 2 files changed, 68 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/hwmon/renesas,isl28022.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:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml: 'anyOf' conditional failed, one must be fixed:
'type' is a required property
'properties' is a required property
'patternProperties' is a required property
from schema $id: http://devicetree.org/meta-schemas/core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml: 'Required properties' is not one of ['$id', '$schema', 'title', 'description', 'examples', 'required', 'allOf', 'anyOf', 'oneOf', 'definitions', '$defs', 'additionalProperties', 'dependencies', 'dependentRequired', 'dependentSchemas', 'patternProperties', 'properties', 'not', 'if', 'then', 'else', 'unevaluatedProperties', 'deprecated', 'maintainers', 'select', '$ref']
from schema $id: http://devicetree.org/meta-schemas/core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml: 'Optional properties' is not one of ['$id', '$schema', 'title', 'description', 'examples', 'required', 'allOf', 'anyOf', 'oneOf', 'definitions', '$defs', 'additionalProperties', 'dependencies', 'dependentRequired', 'dependentSchemas', 'patternProperties', 'properties', 'not', 'if', 'then', 'else', 'unevaluatedProperties', 'deprecated', 'maintainers', 'select', '$ref']
from schema $id: http://devicetree.org/meta-schemas/core.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/renesas,isl28022.yaml: 'anyOf' conditional failed, one must be fixed:
'properties' is a required property
'patternProperties' is a required property
hint: Metaschema for devicetree binding documentation
from schema $id: http://devicetree.org/meta-schemas/core.yaml#
Documentation/devicetree/bindings/hwmon/renesas,isl28022.example.dts:22.30-28.15: Warning (i2c_bus_reg): /example-0/i2c/power-monitor@40: I2C bus unit address format error, expected "10"

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

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 after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.


2023-07-26 19:34:40

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On 7/26/23 11:27, Krzysztof Kozlowski wrote:
> On 26/07/2023 20:19, Guenter Roeck wrote:
>>>
>>>> + enum: [1, 2, 4, 8]
>>>> +
>>>> + average:
>>>> + description: |
>>>> + Number of samples to be used to report voltage, current and power values.
>>>> + defaults to <0> when not set
>>>> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
>>>
>>> I am sure hwmon has some property for this. Are you sure it is called
>>> "average"?
>>>
>>
>> Something with samples. adi,power-sample-average is similar. Others
>> use average-samples, qcom,avg-samples, touchscreen-average-samples.
>
> So probably it's a time to come with something generic, e.g.:
> average-samples in some hwmon.yaml
>

Maybe, but that is going to take a lot of time. Many configuration options
of hardware monitoring chips (such as the thermal sensor type, the ideality
factor of a thermal diode, or the number of pulses per revolution reported
by fans) are actually properties of the connected device, and Rob has made
clear that he expects such properties to be associated with the actual
device (fan, thermal sensor, etc). I don't even know how to model that,
and I really don't have the time (nor, really, the expertise) to come up
with acceptable generic bindings.

Guenter


2023-07-26 19:35:51

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On 26/07/2023 20:59, Guenter Roeck wrote:
> On 7/26/23 11:27, Krzysztof Kozlowski wrote:
>> On 26/07/2023 20:19, Guenter Roeck wrote:
>>>>
>>>>> + enum: [1, 2, 4, 8]
>>>>> +
>>>>> + average:
>>>>> + description: |
>>>>> + Number of samples to be used to report voltage, current and power values.
>>>>> + defaults to <0> when not set
>>>>> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
>>>>
>>>> I am sure hwmon has some property for this. Are you sure it is called
>>>> "average"?
>>>>
>>>
>>> Something with samples. adi,power-sample-average is similar. Others
>>> use average-samples, qcom,avg-samples, touchscreen-average-samples.
>>
>> So probably it's a time to come with something generic, e.g.:
>> average-samples in some hwmon.yaml
>>
>
> Maybe, but that is going to take a lot of time. Many configuration options
> of hardware monitoring chips (such as the thermal sensor type, the ideality
> factor of a thermal diode, or the number of pulses per revolution reported
> by fans) are actually properties of the connected device, and Rob has made
> clear that he expects such properties to be associated with the actual
> device (fan, thermal sensor, etc).

Sure, we can go then with usual vendor like property, so:
renesas,average-samples


Best regards,
Krzysztof


2023-07-27 07:58:15

by Carsten Spieß

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

thanks all for your input.
I conclude here in one answer:

On 7/26/23 18:14, Krzysztof Kozlowski wrote:
> It does not look like you tested the bindings, at least after quick
> look. Please run `make dt_binding_check` (see
sorry i missed that, fixed for [Patch v2].


On 7/26/23 18:14, Krzysztof Kozlowski wrote:
>> + shunt-gain:
> 1. Missing vendor prefix (does not look like generic property)
> 2. -microvolt
> And then enum is for 40, 80, 160 and 320.
replaced with
renesas,shunt-range-milli-volts:
description: |
maximal shunt voltage range of 40mV, 80mV, 160mV or 320mV
$ref: /schemas/types.yaml#/definitions/uint32-array
default: 320
enum: [40, 80, 160, 320]

On 26/07/2023 18:16, Guenter Roeck wrote:
>> + shunt-resistor-micro-ohms:
>> + description:
>> + Shunt resistor value in micro-Ohm
>> + defaults to <0> when not set
>> + monitoring of current and power not supported when <0>
> +
> Should not default to 0 (disabled).
When shunt resistor value is not known, current and power calculation can not be done,
but the shunt voltage still can be measured.
As the resistor is externaly connected to the ISL28022 chip there is no default.
When i set default to any value (e.g 1000 micro Ohm), current and power calculation
will give wrong results (except when the shunt _is_ 1000 micro Ohm)

On 26/07/2023 18:16, Guenter Roeck wrote:
>> + average:
>> + description: |
>> + Number of samples to be used to report voltage, current and power values.
>> + defaults to <0> when not set
>> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
> Should not default to 0 (disabled).
From datasheet table 6 on page 15 there are two similar ADC modes:
3 - without samples
8 - with one? sample
I intended enum 0 to ADC mode 3, 1 to ADC mode 8,
but i can live without ADC mode 3.

On 26/07/2023 20:59, Guenter Roeck wrote:
> On 7/26/23 11:27, Krzysztof Kozlowski wrote:
>> On 26/07/2023 20:19, Guenter Roeck wrote:
>>>>> + average:
>>>>> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
>>>>
>>>> I am sure hwmon has some property for this. Are you sure it is called
>>>> "average"?
>>>>
>>>
>>> Something with samples. adi,power-sample-average is similar. Others
>>> use average-samples, qcom,avg-samples, touchscreen-average-samples.
>>
>> So probably it's a time to come with something generic, e.g.:
>> average-samples in some hwmon.yaml

As there's no generic yet, replaced with
renesas,average-samples:
description: |
Number of samples to be used to report voltage, current and power values.
default: 1
$ref: /schemas/types.yaml#/definitions/uint32-array
enum: [1, 2, 4, 8, 16, 32, 64, 128]



On 26/07/2023 19:13, Rob Herring wrote:
> My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
> on your patch (DT_CHECKER_FLAGS is new in v5.13):
Fixed for [Patch v2], runs without errors or warnings

Regards, Carsten


Attachments:
(No filename) (849.00 B)
Digitale Signatur von OpenPGP

2023-07-27 08:44:04

by Conor Dooley

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On Thu, Jul 27, 2023 at 09:35:28AM +0200, Carsten Spie? wrote:

> On 7/26/23 18:14, Krzysztof Kozlowski wrote:
> >> + shunt-gain:
> > 1. Missing vendor prefix (does not look like generic property)
> > 2. -microvolt
> > And then enum is for 40, 80, 160 and 320.
> replaced with
> renesas,shunt-range-milli-volts:
> description: |
> maximal shunt voltage range of 40mV, 80mV, 160mV or 320mV
> $ref: /schemas/types.yaml#/definitions/uint32-array
> default: 320
> enum: [40, 80, 160, 320]

The point of using -microvolt is that it is a standard suffix:
https://github.com/devicetree-org/dt-schema/blob/c1e73ebea9fc07f7d7848f304301f755f1278a67/dtschema/schemas/property-units.yaml#L101


Attachments:
(No filename) (725.00 B)
signature.asc (235.00 B)
Download all attachments

2023-07-27 09:55:48

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On 27/07/2023 09:35, Carsten Spieß wrote:
> thanks all for your input.
> I conclude here in one answer:
>
> On 7/26/23 18:14, Krzysztof Kozlowski wrote:
>> It does not look like you tested the bindings, at least after quick
>> look. Please run `make dt_binding_check` (see
> sorry i missed that, fixed for [Patch v2].
>
>
> On 7/26/23 18:14, Krzysztof Kozlowski wrote:
>>> + shunt-gain:
>> 1. Missing vendor prefix (does not look like generic property)
>> 2. -microvolt
>> And then enum is for 40, 80, 160 and 320.
> replaced with
> renesas,shunt-range-milli-volts:

That's not correct unit in DT, so again please use -microvolt:
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml

> description: |
> maximal shunt voltage range of 40mV, 80mV, 160mV or 320mV
> $ref: /schemas/types.yaml#/definitions/uint32-array

And then drop this line.


Best regards,
Krzysztof


2023-07-27 10:02:24

by Carsten Spieß

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022


On 7/27/23 10:25, Krzysztof Kozlowski wrote:

> > replaced with
> > renesas,shunt-range-milli-volts:
>
> That's not correct unit in DT, so again please use -microvolt:
> https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/property-units.yaml
a bit unhandy but o.k., applied to [Patch v2]

> > description: |
> > maximal shunt voltage range of 40mV, 80mV, 160mV or 320mV
> > $ref: /schemas/types.yaml#/definitions/uint32-array
>
> And then drop this line.
Applied.

Regards, Carsten


Attachments:
(No filename) (849.00 B)
Digitale Signatur von OpenPGP

2023-07-27 14:26:17

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH 2/2] dt-bindings: hwmon: add renesas,isl28022

On 7/27/23 00:35, Carsten Spieß wrote:
> thanks all for your input.
> I conclude here in one answer:
>
> On 7/26/23 18:14, Krzysztof Kozlowski wrote:
>> It does not look like you tested the bindings, at least after quick
>> look. Please run `make dt_binding_check` (see
> sorry i missed that, fixed for [Patch v2].
>
>
> On 7/26/23 18:14, Krzysztof Kozlowski wrote:
>>> + shunt-gain:
>> 1. Missing vendor prefix (does not look like generic property)
>> 2. -microvolt
>> And then enum is for 40, 80, 160 and 320.
> replaced with
> renesas,shunt-range-milli-volts:
> description: |
> maximal shunt voltage range of 40mV, 80mV, 160mV or 320mV
> $ref: /schemas/types.yaml#/definitions/uint32-array
> default: 320
> enum: [40, 80, 160, 320]
>
> On 26/07/2023 18:16, Guenter Roeck wrote:
>>> + shunt-resistor-micro-ohms:
>>> + description:
>>> + Shunt resistor value in micro-Ohm
>>> + defaults to <0> when not set
>>> + monitoring of current and power not supported when <0>
>> +
>> Should not default to 0 (disabled).
> When shunt resistor value is not known, current and power calculation can not be done,
> but the shunt voltage still can be measured.
> As the resistor is externaly connected to the ISL28022 chip there is no default.
> When i set default to any value (e.g 1000 micro Ohm), current and power calculation
> will give wrong results (except when the shunt _is_ 1000 micro Ohm)
>

Just like many other hardware monitoring drivers do. That is why /etc/sensors3.conf
exists. That is not a valid argument and not a reason to effectively make the driver
useless on systems where devicetree or the matching ACPI data is not provided.

> On 26/07/2023 18:16, Guenter Roeck wrote:
>>> + average:
>>> + description: |
>>> + Number of samples to be used to report voltage, current and power values.
>>> + defaults to <0> when not set
>>> + enum: [0, 1, 2, 4, 8, 16, 32, 64, 128]
>> Should not default to 0 (disabled).
> From datasheet table 6 on page 15 there are two similar ADC modes:
> 3 - without samples
> 8 - with one? sample
> I intended enum 0 to ADC mode 3, 1 to ADC mode 8,
> but i can live without ADC mode 3.
>

Looking at the datasheet, 3 and 8 seem to be identical. There is actually no
"0 samples", which is why I assumed you wanted to use that to disable the sensor
(though, thinking about it, that doesn't really make sense). What is missing
is that 0..3 actually control the sensor accuracy (12..15 bit).

Guenter