All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Stefan Eichenberger <eichest@gmail.com>
Cc: andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, krzk+dt@kernel.org,
	conor+dt@kernel.org, netdev@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Stefan Eichenberger <stefan.eichenberger@toradex.com>
Subject: Re: [PATCH v2 1/2] dt-bindings: net: micrel: Convert to DT schema
Date: Tue, 13 Jan 2026 17:05:48 -0600	[thread overview]
Message-ID: <20260113230548.GA392296-robh@kernel.org> (raw)
In-Reply-To: <aWC6e9N0rJt1JHsw@eichest-laptop>

On Fri, Jan 09, 2026 at 09:21:15AM +0100, Stefan Eichenberger wrote:
> On Thu, Jan 08, 2026 at 12:48:45PM -0600, Rob Herring wrote:
> > On Thu, Jan 08, 2026 at 01:51:27PM +0100, Stefan Eichenberger wrote:
> > > From: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> > > 
> > > Convert the devicetree bindings for the Micrel PHYs and switches to DT
> > > schema.
> > > 
> > > Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> > > ---
> > >  .../devicetree/bindings/net/micrel.txt        |  57 --------
> > >  .../devicetree/bindings/net/micrel.yaml       | 133 ++++++++++++++++++
> > >  2 files changed, 133 insertions(+), 57 deletions(-)
> > >  delete mode 100644 Documentation/devicetree/bindings/net/micrel.txt
> > >  create mode 100644 Documentation/devicetree/bindings/net/micrel.yaml
> > > 
> > > diff --git a/Documentation/devicetree/bindings/net/micrel.txt b/Documentation/devicetree/bindings/net/micrel.txt
> > > deleted file mode 100644
> > > index 01622ce58112..000000000000
> > > --- a/Documentation/devicetree/bindings/net/micrel.txt
> > > +++ /dev/null
> > > @@ -1,57 +0,0 @@
> > > -Micrel PHY properties.
> > > -
> > > -These properties cover the base properties Micrel PHYs.
> > > -
> > > -Optional properties:
> > > -
> > > - - micrel,led-mode : LED mode value to set for PHYs with configurable LEDs.
> > > -
> > > -	Configure the LED mode with single value. The list of PHYs and the
> > > -	bits that are currently supported:
> > > -
> > > -	KSZ8001: register 0x1e, bits 15..14
> > > -	KSZ8041: register 0x1e, bits 15..14
> > > -	KSZ8021: register 0x1f, bits 5..4
> > > -	KSZ8031: register 0x1f, bits 5..4
> > > -	KSZ8051: register 0x1f, bits 5..4
> > > -	KSZ8081: register 0x1f, bits 5..4
> > > -	KSZ8091: register 0x1f, bits 5..4
> > > -	LAN8814: register EP5.0, bit 6
> > > -
> > > -	See the respective PHY datasheet for the mode values.
> > > -
> > > - - micrel,rmii-reference-clock-select-25-mhz: RMII Reference Clock Select
> > > -						bit selects 25 MHz mode
> > > -
> > > -	Setting the RMII Reference Clock Select bit enables 25 MHz rather
> > > -	than 50 MHz clock mode.
> > > -
> > > -	Note that this option is only needed for certain PHY revisions with a
> > > -	non-standard, inverted function of this configuration bit.
> > > -	Specifically, a clock reference ("rmii-ref" below) is always needed to
> > > -	actually select a mode.
> > > -
> > > - - clocks, clock-names: contains clocks according to the common clock bindings.
> > > -
> > > -	supported clocks:
> > > -	- KSZ8021, KSZ8031, KSZ8081, KSZ8091: "rmii-ref": The RMII reference
> > > -	  input clock. Used to determine the XI input clock.
> > > -
> > > - - micrel,fiber-mode: If present the PHY is configured to operate in fiber mode
> > > -
> > > -	Some PHYs, such as the KSZ8041FTL variant, support fiber mode, enabled
> > > -	by the FXEN boot strapping pin. It can't be determined from the PHY
> > > -	registers whether the PHY is in fiber mode, so this boolean device tree
> > > -	property can be used to describe it.
> > > -
> > > -	In fiber mode, auto-negotiation is disabled and the PHY can only work in
> > > -	100base-fx (full and half duplex) modes.
> > > -
> > > - - coma-mode-gpios: If present the given gpio will be deasserted when the
> > > -		    PHY is probed.
> > > -
> > > -	Some PHYs have a COMA mode input pin which puts the PHY into
> > > -	isolate and power-down mode. On some boards this input is connected
> > > -	to a GPIO of the SoC.
> > > -
> > > -	Supported on the LAN8814.
> > > diff --git a/Documentation/devicetree/bindings/net/micrel.yaml b/Documentation/devicetree/bindings/net/micrel.yaml
> > > new file mode 100644
> > > index 000000000000..52d1b187e1d3
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/net/micrel.yaml
> > > @@ -0,0 +1,133 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/net/micrel.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Micrel KSZ series PHYs and switches
> > > +
> > > +maintainers:
> > > +  - Andrew Lunn <andrew@lunn.ch>
> > > +  - Stefan Eichenberger <eichest@gmail.com>
> > > +
> > > +description:
> > > +  The Micrel KSZ series contains different network phys and switches.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    enum:
> > > +      - ethernet-phy-id000e.7237  # KSZ8873MLL
> > > +      - ethernet-phy-id0022.1430  # KSZ886X
> > > +      - ethernet-phy-id0022.1435  # KSZ8863
> > > +      - ethernet-phy-id0022.1510  # KSZ8041
> > > +      - ethernet-phy-id0022.1537  # KSZ8041RNLI
> > > +      - ethernet-phy-id0022.1550  # KSZ8051
> > > +      - ethernet-phy-id0022.1555  # KSZ8021
> > > +      - ethernet-phy-id0022.1556  # KSZ8031
> > > +      - ethernet-phy-id0022.1560  # KSZ8081, KSZ8091
> > > +      - ethernet-phy-id0022.1570  # KSZ8061
> > > +      - ethernet-phy-id0022.161a  # KSZ8001
> > > +      - ethernet-phy-id0022.1720  # KS8737
> > > +
> > > +  micrel,fiber-mode:
> > > +    type: boolean
> > > +    description: |
> > > +      If present the PHY is configured to operate in fiber mode.
> > > +
> > > +      The KSZ8041FTL variant supports fiber mode, enabled by the FXEN
> > > +      boot strapping pin. It can't be determined from the PHY registers
> > > +      whether the PHY is in fiber mode, so this boolean device tree
> > > +      property can be used to describe it.
> > > +
> > > +      In fiber mode, auto-negotiation is disabled and the PHY can only
> > > +      work in 100base-fx (full and half duplex) modes.
> > > +
> > > +  micrel,led-mode:
> > > +    $ref: /schemas/types.yaml#/definitions/uint32
> > > +    description: |
> > > +      LED mode value to set for PHYs with configurable LEDs.
> > > +
> > > +      Configure the LED mode with single value. The list of PHYs and the
> > > +      bits that are currently supported:
> > > +
> > > +      KSZ8001: register 0x1e, bits 15..14
> > > +      KSZ8041: register 0x1e, bits 15..14
> > > +      KSZ8021: register 0x1f, bits 5..4
> > > +      KSZ8031: register 0x1f, bits 5..4
> > > +      KSZ8051: register 0x1f, bits 5..4
> > > +      KSZ8081: register 0x1f, bits 5..4
> > > +      KSZ8091: register 0x1f, bits 5..4
> > > +
> > > +      See the respective PHY datasheet for the mode values.
> > > +    minimum: 0
> > > +    maximum: 3
> > > +
> > > +allOf:
> > > +  - $ref: ethernet-phy.yaml#
> > > +  - if:
> > > +      not:
> > > +        properties:
> > > +          compatible:
> > > +            contains:
> > > +              const: ethernet-phy-id0022.1510
> > > +    then:
> > > +      properties:
> > > +        micrel,fiber-mode: false
> > > +  - if:
> > > +      not:
> > > +        properties:
> > > +          compatible:
> > > +            contains:
> > > +              enum:
> > > +                - ethernet-phy-id0022.1510
> > > +                - ethernet-phy-id0022.1555
> > > +                - ethernet-phy-id0022.1556
> > > +                - ethernet-phy-id0022.1550
> > > +                - ethernet-phy-id0022.1560
> > > +                - ethernet-phy-id0022.161a
> > > +    then:
> > > +      properties:
> > > +        micrel,led-mode: false
> > > +  - if:
> > > +      properties:
> > > +        compatible:
> > > +          contains:
> > > +            enum:
> > > +              - ethernet-phy-id0022.1555
> > > +              - ethernet-phy-id0022.1556
> > > +              - ethernet-phy-id0022.1560
> > > +    then:
> > > +      properties:
> > > +        clocks:
> > > +          maxItems: 1
> > 
> > This has no effect because ethernet-phy.yaml already defines this.
> 
> Thanks for the info. That means I would only set the clock-names and
> remove maxItems. I will fix that in the next version.
> 
> > > +        clock-names:
> > > +          const: rmii-ref
> > > +          description:
> > > +            The RMII reference input clock. Used to determine the XI input
> > > +            clock.
> > > +        micrel,rmii-reference-clock-select-25-mhz:
> > > +          type: boolean
> > > +          description: |
> > > +            RMII Reference Clock Select bit selects 25 MHz mode
> > > +
> > > +            Setting the RMII Reference Clock Select bit enables 25 MHz rather
> > > +            than 50 MHz clock mode.
> > 
> > These should be defined at the top-level. Then use the if/then schema to 
> > disallow the properties.
> 
> The problem with this approach is, that because it has clock in its
> name, the DT schema valdiator will complain:
> devicetree/bindings/net/micrel.yaml: properties:micrel,rmii-reference-clock-select-25-mhz: 'anyOf' conditional failed, one must be fixed:
>         'maxItems' is a required property
>                 hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
>         'type' is not one of ['maxItems', 'description', 'deprecated']
>                 hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
>         Additional properties are not allowed ('type' was unexpected)
>                 hint: Arrays must be described with a combination of minItems/maxItems/items
>         'type' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
>         hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
>         from schema $id: http://devicetree.org/meta-schemas/cell.yaml
> 
> I couldn't find another way to define that Boolean type at top level. Is
> there an option to make the validator happy?

Ah, because it collides with the standard -mhz unit suffix...

Using '$ref: /schemas/types.yaml#/definitions/flag' instead of 'type: 
boolean' might happen to work. If not, just leave it as-is.

Rob

  reply	other threads:[~2026-01-13 23:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-08 12:51 [PATCH v2 0/2] Convert the Micrel bindings to DT schema Stefan Eichenberger
2026-01-08 12:51 ` [PATCH v2 1/2] dt-bindings: net: micrel: Convert " Stefan Eichenberger
2026-01-08 14:25   ` Rob Herring (Arm)
2026-01-08 18:48   ` Rob Herring
2026-01-09  8:21     ` Stefan Eichenberger
2026-01-13 23:05       ` Rob Herring [this message]
2026-01-14 13:59         ` Stefan Eichenberger
2026-01-08 12:51 ` [PATCH v2 2/2] dt-bindings: net: micrel: Convert micrel-ksz90x1.txt " Stefan Eichenberger
2026-01-13 23:09   ` Rob Herring (Arm)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260113230548.GA392296-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=eichest@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=stefan.eichenberger@toradex.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.