* [PATCH net-next v6 0/2] net: dsa: microchip: enable setting rmii reference @ 2023-11-27 13:20 Ante Knezic 2023-11-27 13:20 ` [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic 2023-11-27 13:20 ` [PATCH net-next v6 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic 0 siblings, 2 replies; 5+ messages in thread From: Ante Knezic @ 2023-11-27 13:20 UTC (permalink / raw) To: netdev Cc: woojung.huh, andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver, Ante Knezic KSZ88X3 devices can select between internal and external RMII reference clock. This patch series introduces new device tree property for setting reference clock to internal. --- V6: - use dev->cpu_port and dsa_to_port() instead of parsing the device tree. V5: - move rmii-clk-internal to be a port device tree property. V4: - remove rmii_clk_internal from ksz_device, as its not needed any more - move rmii clk config as well as ksz8795_cpu_interface_select to ksz8_config_cpu_port V3: - move ksz_cfg from global switch config to port config as suggested by Vladimir Oltean - reverse patch order as suggested by Vladimir Oltean - adapt dt schema as suggested by Conor Dooley V2: - don't rely on default register settings - enforce set/clear property as suggested by Andrew Lunn - enforce dt schema as suggested by Conor Dooley Ante Knezic (2): dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal net: dsa: microchip: add property to select internal RMII reference clock .../devicetree/bindings/net/dsa/microchip,ksz.yaml | 38 +++++++++++++++++++++- drivers/net/dsa/microchip/ksz8795.c | 29 +++++++++++++---- drivers/net/dsa/microchip/ksz8795_reg.h | 3 ++ 3 files changed, 63 insertions(+), 7 deletions(-) -- 2.11.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal 2023-11-27 13:20 [PATCH net-next v6 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic @ 2023-11-27 13:20 ` Ante Knezic 2023-11-28 15:02 ` Rob Herring 2023-11-27 13:20 ` [PATCH net-next v6 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic 1 sibling, 1 reply; 5+ messages in thread From: Ante Knezic @ 2023-11-27 13:20 UTC (permalink / raw) To: netdev Cc: woojung.huh, andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver, Ante Knezic Add documentation for selecting reference rmii clock on KSZ88X3 devices Signed-off-by: Ante Knezic <ante.knezic@helmholz.de> --- .../devicetree/bindings/net/dsa/microchip,ksz.yaml | 38 +++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml index b3029c64d0d5..6fd482f2656b 100644 --- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml +++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml @@ -11,7 +11,6 @@ maintainers: - Woojung Huh <Woojung.Huh@microchip.com> allOf: - - $ref: dsa.yaml#/$defs/ethernet-ports - $ref: /schemas/spi/spi-peripheral-props.yaml# properties: @@ -78,6 +77,43 @@ required: - compatible - reg +if: + not: + properties: + compatible: + enum: + - microchip,ksz8863 + - microchip,ksz8873 +then: + $ref: dsa.yaml#/$defs/ethernet-ports +else: + patternProperties: + "^(ethernet-)?ports$": + patternProperties: + "^(ethernet-)?port@[0-2]$": + $ref: dsa-port.yaml# + properties: + microchip,rmii-clk-internal: + $ref: /schemas/types.yaml#/definitions/flag + description: + When ksz88x3 is acting as clock provier (via REFCLKO) it + can select between internal and external RMII reference + clock. Internal reference clock means that the clock for + the RMII of ksz88x3 is provided by the ksz88x3 internally + and the REFCLKI pin is unconnected. For the external + reference clock, the clock needs to be fed back to ksz88x3 + via REFCLKI. + If microchip,rmii-clk-internal is set, ksz88x3 will provide + rmii reference clock internally, otherwise reference clock + should be provided externally. + if: + not: + required: [ ethernet ] + then: + properties: + microchip,rmii-clk-internal: false + unevaluatedProperties: false + unevaluatedProperties: false examples: -- 2.11.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal 2023-11-27 13:20 ` [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic @ 2023-11-28 15:02 ` Rob Herring 2023-11-28 17:29 ` Conor Dooley 0 siblings, 1 reply; 5+ messages in thread From: Rob Herring @ 2023-11-28 15:02 UTC (permalink / raw) To: Ante Knezic Cc: netdev, woojung.huh, andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni, krzysztof.kozlowski+dt, conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver On Mon, Nov 27, 2023 at 02:20:42PM +0100, Ante Knezic wrote: > Add documentation for selecting reference rmii clock on KSZ88X3 devices > > Signed-off-by: Ante Knezic <ante.knezic@helmholz.de> > --- > .../devicetree/bindings/net/dsa/microchip,ksz.yaml | 38 +++++++++++++++++++++- > 1 file changed, 37 insertions(+), 1 deletion(-) You forgot Conor's ack. > > diff --git a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml > index b3029c64d0d5..6fd482f2656b 100644 > --- a/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml > +++ b/Documentation/devicetree/bindings/net/dsa/microchip,ksz.yaml > @@ -11,7 +11,6 @@ maintainers: > - Woojung Huh <Woojung.Huh@microchip.com> > > allOf: > - - $ref: dsa.yaml#/$defs/ethernet-ports > - $ref: /schemas/spi/spi-peripheral-props.yaml# > > properties: > @@ -78,6 +77,43 @@ required: > - compatible > - reg > > +if: > + not: > + properties: > + compatible: > + enum: > + - microchip,ksz8863 > + - microchip,ksz8873 > +then: > + $ref: dsa.yaml#/$defs/ethernet-ports > +else: > + patternProperties: > + "^(ethernet-)?ports$": > + patternProperties: > + "^(ethernet-)?port@[0-2]$": > + $ref: dsa-port.yaml# > + properties: > + microchip,rmii-clk-internal: > + $ref: /schemas/types.yaml#/definitions/flag > + description: > + When ksz88x3 is acting as clock provier (via REFCLKO) it > + can select between internal and external RMII reference > + clock. Internal reference clock means that the clock for > + the RMII of ksz88x3 is provided by the ksz88x3 internally > + and the REFCLKI pin is unconnected. For the external > + reference clock, the clock needs to be fed back to ksz88x3 > + via REFCLKI. > + If microchip,rmii-clk-internal is set, ksz88x3 will provide > + rmii reference clock internally, otherwise reference clock > + should be provided externally. > + if: > + not: > + required: [ ethernet ] > + then: > + properties: > + microchip,rmii-clk-internal: false This can be expressed as: dependencies: microchip,rmii-clk-internal: [ethernet] > + unevaluatedProperties: false Move this under the $ref. > + > unevaluatedProperties: false > > examples: > -- > 2.11.0 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal 2023-11-28 15:02 ` Rob Herring @ 2023-11-28 17:29 ` Conor Dooley 0 siblings, 0 replies; 5+ messages in thread From: Conor Dooley @ 2023-11-28 17:29 UTC (permalink / raw) To: Rob Herring Cc: Ante Knezic, netdev, woojung.huh, andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni, krzysztof.kozlowski+dt, conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver [-- Attachment #1: Type: text/plain, Size: 553 bytes --] On Tue, Nov 28, 2023 at 09:02:03AM -0600, Rob Herring wrote: > On Mon, Nov 27, 2023 at 02:20:42PM +0100, Ante Knezic wrote: > > Add documentation for selecting reference rmii clock on KSZ88X3 devices > > > > Signed-off-by: Ante Knezic <ante.knezic@helmholz.de> > > --- > > .../devicetree/bindings/net/dsa/microchip,ksz.yaml | 38 +++++++++++++++++++++- > > 1 file changed, 37 insertions(+), 1 deletion(-) > > You forgot Conor's ack. I think that's for the better, v5 and v6 look to have changed a decent amount from what I acked in v4. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next v6 2/2] net: dsa: microchip: add property to select internal RMII reference clock 2023-11-27 13:20 [PATCH net-next v6 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic 2023-11-27 13:20 ` [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic @ 2023-11-27 13:20 ` Ante Knezic 1 sibling, 0 replies; 5+ messages in thread From: Ante Knezic @ 2023-11-27 13:20 UTC (permalink / raw) To: netdev Cc: woojung.huh, andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver, Ante Knezic Microchip KSZ8863/KSZ8873 have the ability to select between internal and external RMII reference clock. By default, reference clock needs to be provided via REFCLKI_3 pin. If required, device can be setup to provide RMII clock internally so that REFCLKI_3 pin can be left unconnected. Add a new "microchip,rmii-clk-internal" property which will set RMII clock reference to internal. If property is not set, reference clock needs to be provided externally. While at it, move the ksz8795_cpu_interface_select() to ksz8_config_cpu_port() to get a cleaner call path for cpu port. Signed-off-by: Ante Knezic <ante.knezic@helmholz.de> --- drivers/net/dsa/microchip/ksz8795.c | 29 +++++++++++++++++++++++------ drivers/net/dsa/microchip/ksz8795_reg.h | 3 +++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 4bf4d67557dc..9fd2be9c4022 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1358,6 +1358,9 @@ static void ksz8795_cpu_interface_select(struct ksz_device *dev, int port) { struct ksz_port *p = &dev->ports[port]; + if (!ksz_is_ksz87xx(dev)) + return; + if (!p->interface && dev->compat_interface) { dev_warn(dev->dev, "Using legacy switch \"phy-mode\" property, because it is missing on port %d node. " @@ -1391,18 +1394,29 @@ void ksz8_port_setup(struct ksz_device *dev, int port, bool cpu_port) /* enable 802.1p priority */ ksz_port_cfg(dev, port, P_PRIO_CTRL, PORT_802_1P_ENABLE, true); - if (cpu_port) { - if (!ksz_is_ksz88x3(dev)) - ksz8795_cpu_interface_select(dev, port); - + if (cpu_port) member = dsa_user_ports(ds); - } else { + else member = BIT(dsa_upstream_port(ds, port)); - } ksz8_cfg_port_member(dev, port, member); } +static void ksz88x3_config_rmii_clk(struct ksz_device *dev) +{ + struct dsa_port *cpu_dp = dsa_to_port(dev->ds, dev->cpu_port); + bool rmii_clk_internal; + + if (!ksz_is_ksz88x3(dev)) + return; + + rmii_clk_internal = of_property_read_bool(cpu_dp->dn, + "microchip,rmii-clk-internal"); + + ksz_cfg(dev, KSZ88X3_REG_FVID_AND_HOST_MODE, + KSZ88X3_PORT3_RMII_CLK_INTERNAL, rmii_clk_internal); +} + void ksz8_config_cpu_port(struct dsa_switch *ds) { struct ksz_device *dev = ds->priv; @@ -1419,6 +1433,9 @@ void ksz8_config_cpu_port(struct dsa_switch *ds) ksz8_port_setup(dev, dev->cpu_port, true); + ksz8795_cpu_interface_select(dev, dev->cpu_port); + ksz88x3_config_rmii_clk(dev); + for (i = 0; i < dev->phy_port_cnt; i++) { ksz_port_stp_state_set(ds, i, BR_STATE_DISABLED); } diff --git a/drivers/net/dsa/microchip/ksz8795_reg.h b/drivers/net/dsa/microchip/ksz8795_reg.h index 3c9dae53e4d8..beca974e0171 100644 --- a/drivers/net/dsa/microchip/ksz8795_reg.h +++ b/drivers/net/dsa/microchip/ksz8795_reg.h @@ -22,6 +22,9 @@ #define KSZ8863_GLOBAL_SOFTWARE_RESET BIT(4) #define KSZ8863_PCS_RESET BIT(0) +#define KSZ88X3_REG_FVID_AND_HOST_MODE 0xC6 +#define KSZ88X3_PORT3_RMII_CLK_INTERNAL BIT(3) + #define REG_SW_CTRL_0 0x02 #define SW_NEW_BACKOFF BIT(7) -- 2.11.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-11-28 17:29 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-11-27 13:20 [PATCH net-next v6 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic 2023-11-27 13:20 ` [PATCH net-next v6 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic 2023-11-28 15:02 ` Rob Herring 2023-11-28 17:29 ` Conor Dooley 2023-11-27 13:20 ` [PATCH net-next v6 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).