* [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
* [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
* 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
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).