All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference
@ 2023-12-05 10:03 Ante Knezic
  2023-12-05 10:03 ` [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Ante Knezic @ 2023-12-05 10:03 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.

---
V7:
  - adapt dt schema as suggested by Rob Herring
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 | 34 +++++++++++++++++++++-
 drivers/net/dsa/microchip/ksz8795.c                | 29 ++++++++++++++----
 drivers/net/dsa/microchip/ksz8795_reg.h            |  3 ++
 3 files changed, 59 insertions(+), 7 deletions(-)

-- 
2.11.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal
  2023-12-05 10:03 [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic
@ 2023-12-05 10:03 ` Ante Knezic
  2023-12-06 14:23   ` Rob Herring
  2023-12-05 10:03 ` [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic
  2023-12-07 10:30 ` [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Ante Knezic @ 2023-12-05 10:03 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 | 34 +++++++++++++++++++++-
 1 file changed, 33 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..c963dc09e8e1 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,39 @@ 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#
+          unevaluatedProperties: false
+          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.
+          dependencies:
+            microchip,rmii-clk-internal: [ethernet]
+
 unevaluatedProperties: false
 
 examples:
-- 
2.11.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock
  2023-12-05 10:03 [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic
  2023-12-05 10:03 ` [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic
@ 2023-12-05 10:03 ` Ante Knezic
  2023-12-06 15:39   ` Andrew Lunn
  2023-12-07 10:30 ` [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference patchwork-bot+netdevbpf
  2 siblings, 1 reply; 6+ messages in thread
From: Ante Knezic @ 2023-12-05 10:03 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 ec1ddfcf7473..61b71bcfe396 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] 6+ messages in thread

* Re: [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal
  2023-12-05 10:03 ` [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic
@ 2023-12-06 14:23   ` Rob Herring
  0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring @ 2023-12-06 14:23 UTC (permalink / raw)
  To: Ante Knezic
  Cc: f.fainelli, krzysztof.kozlowski+dt, devicetree, netdev, marex,
	UNGLinuxDriver, edumazet, davem, linux-kernel, woojung.huh,
	conor+dt, pabeni, kuba, olteanv, robh+dt, andrew


On Tue, 05 Dec 2023 11:03:38 +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 | 34 +++++++++++++++++++++-
>  1 file changed, 33 insertions(+), 1 deletion(-)
> 

Reviewed-by: Rob Herring <robh@kernel.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock
  2023-12-05 10:03 ` [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic
@ 2023-12-06 15:39   ` Andrew Lunn
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Lunn @ 2023-12-06 15:39 UTC (permalink / raw)
  To: Ante Knezic
  Cc: netdev, woojung.huh, f.fainelli, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, conor+dt, marex,
	devicetree, linux-kernel, UNGLinuxDriver

On Tue, Dec 05, 2023 at 11:03:39AM +0100, Ante Knezic wrote:
> 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>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference
  2023-12-05 10:03 [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic
  2023-12-05 10:03 ` [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic
  2023-12-05 10:03 ` [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic
@ 2023-12-07 10:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-12-07 10:30 UTC (permalink / raw)
  To: Ante Knezic
  Cc: netdev, woojung.huh, andrew, f.fainelli, olteanv, davem,
	edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt,
	conor+dt, marex, devicetree, linux-kernel, UNGLinuxDriver

Hello:

This series was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:

On Tue, 5 Dec 2023 11:03:37 +0100 you wrote:
> 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.
> 
> ---
> V7:
>   - adapt dt schema as suggested by Rob Herring
> 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
> 
> [...]

Here is the summary with links:
  - [net-next,v7,1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal
    https://git.kernel.org/netdev/net-next/c/8e3bfaab2ad9
  - [net-next,v7,2/2] net: dsa: microchip: add property to select internal RMII reference clock
    https://git.kernel.org/netdev/net-next/c/9f19a4ebc80a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-12-07 10:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-05 10:03 [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference Ante Knezic
2023-12-05 10:03 ` [PATCH net-next v7 1/2] dt-bindings: net: microchip,ksz: document microchip,rmii-clk-internal Ante Knezic
2023-12-06 14:23   ` Rob Herring
2023-12-05 10:03 ` [PATCH net-next v7 2/2] net: dsa: microchip: add property to select internal RMII reference clock Ante Knezic
2023-12-06 15:39   ` Andrew Lunn
2023-12-07 10:30 ` [PATCH net-next v7 0/2] net: dsa: microchip: enable setting rmii reference patchwork-bot+netdevbpf

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.