diff mbox series

[v3,1/2] Documentation: devicetree: update bindings for tps23861

Message ID 20220825143737.77732-1-dev@aboehler.at (mailing list archive)
State Rejected
Headers show
Series [v3,1/2] Documentation: devicetree: update bindings for tps23861 | expand

Commit Message

Andreas Böhler Aug. 25, 2022, 2:37 p.m. UTC
The tps23861 driver does not initialize the chip and relies on it being
in auto-mode by default. On some devices, these controllers default to
OFF-Mode and hence cannot be used at all.

This brings minimal support for initializing the controller in a user-
defined mode.

Signed-off-by: Andreas Böhler <dev@aboehler.at>
---
 .../bindings/hwmon/ti,tps23861.yaml           | 76 +++++++++++++++++++
 1 file changed, 76 insertions(+)

Comments

Krzysztof Kozlowski Aug. 25, 2022, 2:49 p.m. UTC | #1
On 25/08/2022 17:37, Andreas Böhler wrote:
> The tps23861 driver does not initialize the chip and relies on it being
> in auto-mode by default. On some devices, these controllers default to
> OFF-Mode and hence cannot be used at all.
> 

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

> This brings minimal support for initializing the controller in a user-
> defined mode.
> 
> Signed-off-by: Andreas Böhler <dev@aboehler.at>

Use subject prefixes matching the subsystem (git log --oneline -- ...).

> ---
>  .../bindings/hwmon/ti,tps23861.yaml           | 76 +++++++++++++++++++
>  1 file changed, 76 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml b/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
> index 3bc8e73dfbf0..ed3a703478fb 100644
> --- a/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
> +++ b/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
> @@ -35,6 +35,50 @@ required:
>    - compatible
>    - reg
>  
> +patternProperties:
> +  "^port@([0-3])$":

No need for ()

> +    type: object
> +    description: Represents ports of the device and their specific configuration.
> +
> +    properties:
> +      reg:
> +        description: The port number
> +        items:
> +          minimum: 0
> +          maximum: 3
> +
> +      mode:
> +        description: The operating mode the device should be initialized with
> +        items:

If this is real array, you need maxItems, but it looks one item, so no
need for "items".

> +          - enum:
> +              - auto
> +              - semiauto
> +              - manual
> +              - off

And how "off" is different from disabled or powered off?

> +
> +      enable:
> +        description: Whether the port should be enabled

This looks confusing... Looks like boolean property, but instead you
define some numbers. What are the values for these numbers? Why these
are numbers not booleans?

Second - what does it mean "enable"? We have a generic "status" property
for it - isn't this the same?

Third, all these properties (especially PoE) look like you keep
describing here network device but this is HWMON part.

> +        items:
> +          minimum: 0
> +          maximum: 1
> +
> +      power:
> +        description: Whether the port should be powered on
> +        items:
> +          minimum: 0
> +          maximum: 1
> +
> +      poe_plus:

No underscores in property names.

> +        description: Whether the port should support PoE+
> +        items:
> +          minimum: 0
> +          maximum: 1
> +


Best regards,
Krzysztof
Guenter Roeck Aug. 25, 2022, 3:02 p.m. UTC | #2
On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
> The tps23861 driver does not initialize the chip and relies on it being
> in auto-mode by default. On some devices, these controllers default to
> OFF-Mode and hence cannot be used at all.
> 
> This brings minimal support for initializing the controller in a user-
> defined mode.
> 
> Signed-off-by: Andreas Böhler <dev@aboehler.at>

nack for the series, sorry. The suggested properties are not hardware
monitoring but phy properties. There should be a separate phy driver
to manage those.

Also, as mentioned, the hwmon 'enable' attribute is abused to control
port functionality and should be removed.

Guenter
Robert Marko Aug. 25, 2022, 3:07 p.m. UTC | #3
On Thu, Aug 25, 2022 at 5:02 PM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
> > The tps23861 driver does not initialize the chip and relies on it being
> > in auto-mode by default. On some devices, these controllers default to
> > OFF-Mode and hence cannot be used at all.
> >
> > This brings minimal support for initializing the controller in a user-
> > defined mode.
> >
> > Signed-off-by: Andreas Böhler <dev@aboehler.at>
>
> nack for the series, sorry. The suggested properties are not hardware
> monitoring but phy properties. There should be a separate phy driver
> to manage those.
>
> Also, as mentioned, the hwmon 'enable' attribute is abused to control
> port functionality and should be removed.

Hi Guenter,
Are you referring to an ethernet PHY driver or the generic PHY framework?

Regards,
Robert
>
> Guenter
Guenter Roeck Aug. 25, 2022, 3:29 p.m. UTC | #4
On Thu, Aug 25, 2022 at 05:07:45PM +0200, Robert Marko wrote:
> On Thu, Aug 25, 2022 at 5:02 PM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
> > > The tps23861 driver does not initialize the chip and relies on it being
> > > in auto-mode by default. On some devices, these controllers default to
> > > OFF-Mode and hence cannot be used at all.
> > >
> > > This brings minimal support for initializing the controller in a user-
> > > defined mode.
> > >
> > > Signed-off-by: Andreas Böhler <dev@aboehler.at>
> >
> > nack for the series, sorry. The suggested properties are not hardware
> > monitoring but phy properties. There should be a separate phy driver
> > to manage those.
> >
> > Also, as mentioned, the hwmon 'enable' attribute is abused to control
> > port functionality and should be removed.
> 
> Hi Guenter,
> Are you referring to an ethernet PHY driver or the generic PHY framework?
> 

Could be both, though ethernet phy sounds about right for me.
I don't know where/how similar chips are handled. hwmon is most definitey
the wrong place.

Guenter
Robert Marko Aug. 25, 2022, 3:31 p.m. UTC | #5
On Thu, Aug 25, 2022 at 5:29 PM Guenter Roeck <linux@roeck-us.net> wrote:
>
> On Thu, Aug 25, 2022 at 05:07:45PM +0200, Robert Marko wrote:
> > On Thu, Aug 25, 2022 at 5:02 PM Guenter Roeck <linux@roeck-us.net> wrote:
> > >
> > > On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
> > > > The tps23861 driver does not initialize the chip and relies on it being
> > > > in auto-mode by default. On some devices, these controllers default to
> > > > OFF-Mode and hence cannot be used at all.
> > > >
> > > > This brings minimal support for initializing the controller in a user-
> > > > defined mode.
> > > >
> > > > Signed-off-by: Andreas Böhler <dev@aboehler.at>
> > >
> > > nack for the series, sorry. The suggested properties are not hardware
> > > monitoring but phy properties. There should be a separate phy driver
> > > to manage those.
> > >
> > > Also, as mentioned, the hwmon 'enable' attribute is abused to control
> > > port functionality and should be removed.
> >
> > Hi Guenter,
> > Are you referring to an ethernet PHY driver or the generic PHY framework?
> >
>
> Could be both, though ethernet phy sounds about right for me.
> I don't know where/how similar chips are handled. hwmon is most definitey
> the wrong place.

Hi,

Well, that is the thing, this is definitively not an ethernet PHY nor
a PHY of any other kind.
I dont see where it would fit if not hwmon, there is no more specific
subsystem in the
kernel.

Regards,
Robert

>
> Guenter
Rob Herring (Arm) Aug. 25, 2022, 6:51 p.m. UTC | #6
On Thu, 25 Aug 2022 16:37:36 +0200, Andreas Böhler wrote:
> The tps23861 driver does not initialize the chip and relies on it being
> in auto-mode by default. On some devices, these controllers default to
> OFF-Mode and hence cannot be used at all.
> 
> This brings minimal support for initializing the controller in a user-
> defined mode.
> 
> Signed-off-by: Andreas Böhler <dev@aboehler.at>
> ---
>  .../bindings/hwmon/ti,tps23861.yaml           | 76 +++++++++++++++++++
>  1 file changed, 76 insertions(+)
> 

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/hwmon/ti,tps23861.example.dts:28.23-33: Warning (reg_format): /example-0/i2c/tps23861@30/port@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:36.23-33: Warning (reg_format): /example-0/i2c/tps23861@30/port@1:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:44.23-33: Warning (reg_format): /example-0/i2c/tps23861@30/port@2:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:52.23-33: Warning (reg_format): /example-0/i2c/tps23861@30/port@3:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:27.26-33.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@0: Relying on default #address-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:27.26-33.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@0: Relying on default #size-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:35.26-41.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@1: Relying on default #address-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:35.26-41.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@1: Relying on default #size-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:43.26-49.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@2: Relying on default #address-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:43.26-49.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@2: Relying on default #size-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:51.26-57.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@3: Relying on default #address-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dts:51.26-57.21: Warning (avoid_default_addr_size): /example-0/i2c/tps23861@30/port@3: Relying on default #size-cells value
Documentation/devicetree/bindings/hwmon/ti,tps23861.example.dtb: Warning (unique_unit_address_if_enabled): Failed prerequisite 'avoid_default_addr_size'

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.
Krzysztof Kozlowski Aug. 26, 2022, 6:56 a.m. UTC | #7
On 25/08/2022 18:31, Robert Marko wrote:
> On Thu, Aug 25, 2022 at 5:29 PM Guenter Roeck <linux@roeck-us.net> wrote:
>>
>> On Thu, Aug 25, 2022 at 05:07:45PM +0200, Robert Marko wrote:
>>> On Thu, Aug 25, 2022 at 5:02 PM Guenter Roeck <linux@roeck-us.net> wrote:
>>>>
>>>> On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
>>>>> The tps23861 driver does not initialize the chip and relies on it being
>>>>> in auto-mode by default. On some devices, these controllers default to
>>>>> OFF-Mode and hence cannot be used at all.
>>>>>
>>>>> This brings minimal support for initializing the controller in a user-
>>>>> defined mode.
>>>>>
>>>>> Signed-off-by: Andreas Böhler <dev@aboehler.at>
>>>>
>>>> nack for the series, sorry. The suggested properties are not hardware
>>>> monitoring but phy properties. There should be a separate phy driver
>>>> to manage those.
>>>>
>>>> Also, as mentioned, the hwmon 'enable' attribute is abused to control
>>>> port functionality and should be removed.
>>>
>>> Hi Guenter,
>>> Are you referring to an ethernet PHY driver or the generic PHY framework?
>>>
>>
>> Could be both, though ethernet phy sounds about right for me.
>> I don't know where/how similar chips are handled. hwmon is most definitey
>> the wrong place.
> 
> Hi,
> 
> Well, that is the thing, this is definitively not an ethernet PHY nor
> a PHY of any other kind.
> I dont see where it would fit if not hwmon, there is no more specific
> subsystem in the
> kernel.

It's not hwmon. The device has monitoring capabilities, but it's only
one piece and calling something hwmon just because can provide sensor
data is like calling a plane a car, because it has wheels.

Maybe this is similar to these series:
https://lore.kernel.org/linux-devicetree/20220825130211.3730461-1-o.rempel@pengutronix.de/
?

The datasheet says it is a "PSE Controller" so looks similar to the
problem solved above...

Best regards,
Krzysztof
Guenter Roeck Aug. 26, 2022, 12:19 p.m. UTC | #8
On Fri, Aug 26, 2022 at 09:56:29AM +0300, Krzysztof Kozlowski wrote:
> On 25/08/2022 18:31, Robert Marko wrote:
> > On Thu, Aug 25, 2022 at 5:29 PM Guenter Roeck <linux@roeck-us.net> wrote:
> >>
> >> On Thu, Aug 25, 2022 at 05:07:45PM +0200, Robert Marko wrote:
> >>> On Thu, Aug 25, 2022 at 5:02 PM Guenter Roeck <linux@roeck-us.net> wrote:
> >>>>
> >>>> On Thu, Aug 25, 2022 at 04:37:36PM +0200, Andreas Böhler wrote:
> >>>>> The tps23861 driver does not initialize the chip and relies on it being
> >>>>> in auto-mode by default. On some devices, these controllers default to
> >>>>> OFF-Mode and hence cannot be used at all.
> >>>>>
> >>>>> This brings minimal support for initializing the controller in a user-
> >>>>> defined mode.
> >>>>>
> >>>>> Signed-off-by: Andreas Böhler <dev@aboehler.at>
> >>>>
> >>>> nack for the series, sorry. The suggested properties are not hardware
> >>>> monitoring but phy properties. There should be a separate phy driver
> >>>> to manage those.
> >>>>
> >>>> Also, as mentioned, the hwmon 'enable' attribute is abused to control
> >>>> port functionality and should be removed.
> >>>
> >>> Hi Guenter,
> >>> Are you referring to an ethernet PHY driver or the generic PHY framework?
> >>>
> >>
> >> Could be both, though ethernet phy sounds about right for me.
> >> I don't know where/how similar chips are handled. hwmon is most definitey
> >> the wrong place.
> > 
> > Hi,
> > 
> > Well, that is the thing, this is definitively not an ethernet PHY nor
> > a PHY of any other kind.
> > I dont see where it would fit if not hwmon, there is no more specific
> > subsystem in the
> > kernel.
> 
> It's not hwmon. The device has monitoring capabilities, but it's only
> one piece and calling something hwmon just because can provide sensor
> data is like calling a plane a car, because it has wheels.
> 
> Maybe this is similar to these series:
> https://lore.kernel.org/linux-devicetree/20220825130211.3730461-1-o.rempel@pengutronix.de/
> ?
> 
> The datasheet says it is a "PSE Controller" so looks similar to the
> problem solved above...

Excellent find. That infrastructure is exactly what the driver for this chip
needs to tie into. I would suggest to get in touch with the author of that
series - it is quite likely that they are working on adding support for one
or more real PSE chips.

The only open question is if the hwmon driver should be retained as a
separate driver or be implemented as part of the PSE networking driver.
I am open to both.

Thanks,
Guenter
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml b/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
index 3bc8e73dfbf0..ed3a703478fb 100644
--- a/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
+++ b/Documentation/devicetree/bindings/hwmon/ti,tps23861.yaml
@@ -35,6 +35,50 @@  required:
   - compatible
   - reg
 
+patternProperties:
+  "^port@([0-3])$":
+    type: object
+    description: Represents ports of the device and their specific configuration.
+
+    properties:
+      reg:
+        description: The port number
+        items:
+          minimum: 0
+          maximum: 3
+
+      mode:
+        description: The operating mode the device should be initialized with
+        items:
+          - enum:
+              - auto
+              - semiauto
+              - manual
+              - off
+
+      enable:
+        description: Whether the port should be enabled
+        items:
+          minimum: 0
+          maximum: 1
+
+      power:
+        description: Whether the port should be powered on
+        items:
+          minimum: 0
+          maximum: 1
+
+      poe_plus:
+        description: Whether the port should support PoE+
+        items:
+          minimum: 0
+          maximum: 1
+
+    required:
+      - reg
+
+    additionalProperties: false
+
 additionalProperties: false
 
 examples:
@@ -47,5 +91,37 @@  examples:
               compatible = "ti,tps23861";
               reg = <0x30>;
               shunt-resistor-micro-ohms = <255000>;
+
+              port@0 {
+                  reg = <0>;
+                  mode = "auto";
+                  enable = <1>;
+                  power = <1>;
+                  poe_plus = <1>;
+              };
+
+              port@1 {
+                  reg = <1>;
+                  mode = "semiauto";
+                  enable = <1>;
+                  power = <0>;
+                  poe_plus = <1>;
+              };
+
+              port@2 {
+                  reg = <2>;
+                  mode = "manual";
+                  enable = <0>;
+                  power = <0>;
+                  poe_plus = <0>;
+              };
+
+              port@3 {
+                  reg = <3>;
+                  mode = "off";
+                  enable = <0>;
+                  power = <0>;
+                  poe_plus = <1>;
+              };
           };
     };