linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports
@ 2023-03-20 15:50 Álvaro Fernández Rojas
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
                   ` (4 more replies)
  0 siblings, 5 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 15:50 UTC (permalink / raw)
  To: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM63268 need special configuration for their RGMII ports, so we need to be
able to identify them as a special BCM63xx switch.
In the meantime, let's add some missing BCM63xx SoCs to B53 MMAP device table.

This should be applied after "net: dsa: b53: add support for BCM63xx RGMIIs":
https://patchwork.kernel.org/project/netdevbpf/patch/20230319220805.124024-1-noltari@gmail.com/

Álvaro Fernández Rojas (4):
  dt-bindings: net: dsa: b53: add more 63xx SoCs
  net: dsa: b53: mmap: add more BCM63xx SoCs
  net: dsa: b53: mmap: allow passing a chip ID
  net: dsa: b53: add BCM63268 RGMII configuration

 .../devicetree/bindings/net/dsa/brcm,b53.yaml |  3 ++
 drivers/net/dsa/b53/b53_common.c              |  6 +++-
 drivers/net/dsa/b53/b53_mmap.c                | 29 +++++++++++++++----
 drivers/net/dsa/b53/b53_priv.h                |  9 +++++-
 drivers/net/dsa/b53/b53_regs.h                |  1 +
 5 files changed, 40 insertions(+), 8 deletions(-)

-- 
2.30.2


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

* [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
  2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
@ 2023-03-20 15:50 ` Álvaro Fernández Rojas
  2023-03-20 19:49   ` Simon Horman
                     ` (2 more replies)
  2023-03-20 15:50 ` [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs Álvaro Fernández Rojas
                   ` (3 subsequent siblings)
  4 siblings, 3 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 15:50 UTC (permalink / raw)
  To: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
index 5bef4128d175..57e0ef93b134 100644
--- a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
@@ -57,8 +57,11 @@ properties:
       - items:
           - enum:
               - brcm,bcm3384-switch
+              - brcm,bcm6318-switch
               - brcm,bcm6328-switch
+              - brcm,bcm6362-switch
               - brcm,bcm6368-switch
+              - brcm,bcm63268-switch
           - const: brcm,bcm63xx-switch
 
 required:
-- 
2.30.2


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

* [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs
  2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
@ 2023-03-20 15:50 ` Álvaro Fernández Rojas
  2023-03-20 19:52   ` Florian Fainelli
  2023-03-20 19:54   ` Simon Horman
  2023-03-20 15:50 ` [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 15:50 UTC (permalink / raw)
  To: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/net/dsa/b53/b53_mmap.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index 70887e0aece3..464c77e10f60 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -331,8 +331,11 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
 
 static const struct of_device_id b53_mmap_of_table[] = {
 	{ .compatible = "brcm,bcm3384-switch" },
+	{ .compatible = "brcm,bcm6318-switch" },
 	{ .compatible = "brcm,bcm6328-switch" },
+	{ .compatible = "brcm,bcm6362-switch" },
 	{ .compatible = "brcm,bcm6368-switch" },
+	{ .compatible = "brcm,bcm63268-switch" },
 	{ .compatible = "brcm,bcm63xx-switch" },
 	{ /* sentinel */ },
 };
-- 
2.30.2


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

* [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
  2023-03-20 15:50 ` [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs Álvaro Fernández Rojas
@ 2023-03-20 15:50 ` Álvaro Fernández Rojas
  2023-03-20 19:57   ` Florian Fainelli
  2023-03-20 20:01   ` Simon Horman
  2023-03-20 15:50 ` [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
  4 siblings, 2 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 15:50 UTC (permalink / raw)
  To: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM63268 SoCs require a special handling for their RGMIIs, so we should be
able to identify them as a special BCM63xx switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/net/dsa/b53/b53_mmap.c | 32 +++++++++++++++++++++++---------
 drivers/net/dsa/b53/b53_priv.h |  9 ++++++++-
 2 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index 464c77e10f60..706df04b6cee 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -248,7 +248,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
 		return -ENOMEM;
 
 	pdata->regs = mem;
-	pdata->chip_id = BCM63XX_DEVICE_ID;
+	pdata->chip_id = (u32)device_get_match_data(dev);
 	pdata->big_endian = of_property_read_bool(np, "big-endian");
 
 	of_ports = of_get_child_by_name(np, "ports");
@@ -330,14 +330,28 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
 }
 
 static const struct of_device_id b53_mmap_of_table[] = {
-	{ .compatible = "brcm,bcm3384-switch" },
-	{ .compatible = "brcm,bcm6318-switch" },
-	{ .compatible = "brcm,bcm6328-switch" },
-	{ .compatible = "brcm,bcm6362-switch" },
-	{ .compatible = "brcm,bcm6368-switch" },
-	{ .compatible = "brcm,bcm63268-switch" },
-	{ .compatible = "brcm,bcm63xx-switch" },
-	{ /* sentinel */ },
+	{
+		.compatible = "brcm,bcm3384-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6318-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6328-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6362-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6368-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm63268-switch",
+		.data = (void *)BCM63268_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm63xx-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, b53_mmap_of_table);
 
diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h
index 4cf9f540696e..a689a6950189 100644
--- a/drivers/net/dsa/b53/b53_priv.h
+++ b/drivers/net/dsa/b53/b53_priv.h
@@ -70,6 +70,7 @@ enum {
 	BCM53125_DEVICE_ID = 0x53125,
 	BCM53128_DEVICE_ID = 0x53128,
 	BCM63XX_DEVICE_ID = 0x6300,
+	BCM63268_DEVICE_ID = 0x63268,
 	BCM53010_DEVICE_ID = 0x53010,
 	BCM53011_DEVICE_ID = 0x53011,
 	BCM53012_DEVICE_ID = 0x53012,
@@ -191,7 +192,13 @@ static inline int is531x5(struct b53_device *dev)
 
 static inline int is63xx(struct b53_device *dev)
 {
-	return dev->chip_id == BCM63XX_DEVICE_ID;
+	return dev->chip_id == BCM63XX_DEVICE_ID ||
+		dev->chip_id == BCM63268_DEVICE_ID;
+}
+
+static inline int is63268(struct b53_device *dev)
+{
+	return dev->chip_id == BCM63268_DEVICE_ID;
 }
 
 static inline int is5301x(struct b53_device *dev)
-- 
2.30.2


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

* [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration
  2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
                   ` (2 preceding siblings ...)
  2023-03-20 15:50 ` [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
@ 2023-03-20 15:50 ` Álvaro Fernández Rojas
  2023-03-20 20:00   ` Florian Fainelli
  2023-03-20 20:07   ` Simon Horman
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
  4 siblings, 2 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 15:50 UTC (permalink / raw)
  To: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM63268 requires special RGMII configuration to work.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 drivers/net/dsa/b53/b53_common.c | 6 +++++-
 drivers/net/dsa/b53/b53_regs.h   | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 6e212f6f1cb9..d0a22c8a55c9 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
 		break;
 	}
 
-	if (port != dev->imp_port)
+	if (port != dev->imp_port) {
+		if (is63268(dev))
+			rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
+
 		rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
+	}
 
 	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
 
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index b2c539a42154..bfbcb66bef66 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -138,6 +138,7 @@
 
 #define B53_RGMII_CTRL_IMP		0x60
 #define   RGMII_CTRL_ENABLE_GMII	BIT(7)
+#define   RGMII_CTRL_MII_OVERRIDE	BIT(6)
 #define   RGMII_CTRL_TIMING_SEL		BIT(2)
 #define   RGMII_CTRL_DLL_RXC		BIT(1)
 #define   RGMII_CTRL_DLL_TXC		BIT(0)
-- 
2.30.2


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

* Re: [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
@ 2023-03-20 19:49   ` Simon Horman
  2023-03-20 19:51   ` Florian Fainelli
  2023-03-21  7:14   ` Krzysztof Kozlowski
  2 siblings, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-20 19:49 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Mon, Mar 20, 2023 at 04:50:21PM +0100, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>


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

* Re: [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
  2023-03-20 19:49   ` Simon Horman
@ 2023-03-20 19:51   ` Florian Fainelli
  2023-03-21  7:14   ` Krzysztof Kozlowski
  2 siblings, 0 replies; 26+ messages in thread
From: Florian Fainelli @ 2023-03-20 19:51 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, andrew, olteanv, davem,
	edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, netdev,
	devicetree, linux-kernel

On 3/20/23 08:50, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian


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

* Re: [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs
  2023-03-20 15:50 ` [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs Álvaro Fernández Rojas
@ 2023-03-20 19:52   ` Florian Fainelli
  2023-03-20 19:54   ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Florian Fainelli @ 2023-03-20 19:52 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, andrew, olteanv, davem,
	edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, netdev,
	devicetree, linux-kernel

On 3/20/23 08:50, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian


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

* Re: [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs
  2023-03-20 15:50 ` [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs Álvaro Fernández Rojas
  2023-03-20 19:52   ` Florian Fainelli
@ 2023-03-20 19:54   ` Simon Horman
  2023-03-20 19:56     ` Álvaro Fernández Rojas
  1 sibling, 1 reply; 26+ messages in thread
From: Simon Horman @ 2023-03-20 19:54 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Mon, Mar 20, 2023 at 04:50:22PM +0100, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  drivers/net/dsa/b53/b53_mmap.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> index 70887e0aece3..464c77e10f60 100644
> --- a/drivers/net/dsa/b53/b53_mmap.c
> +++ b/drivers/net/dsa/b53/b53_mmap.c
> @@ -331,8 +331,11 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
>  
>  static const struct of_device_id b53_mmap_of_table[] = {
>  	{ .compatible = "brcm,bcm3384-switch" },
> +	{ .compatible = "brcm,bcm6318-switch" },
>  	{ .compatible = "brcm,bcm6328-switch" },
> +	{ .compatible = "brcm,bcm6362-switch" },
>  	{ .compatible = "brcm,bcm6368-switch" },
> +	{ .compatible = "brcm,bcm63268-switch" },

This patch adds support to this driver for "brcm,bcm63268-switch".
However, less I am mistaken, this support doesn't work without
patches 3/4 and 4/4 of this series.

I think it would be better to re-range this series so
that support for "brcm,bcm63268-switch" works when it is
added to/enabled in the driver.

>  	{ .compatible = "brcm,bcm63xx-switch" },
>  	{ /* sentinel */ },
>  };
> -- 
> 2.30.2
> 

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

* Re: [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs
  2023-03-20 19:54   ` Simon Horman
@ 2023-03-20 19:56     ` Álvaro Fernández Rojas
  2023-03-20 20:11       ` Simon Horman
  0 siblings, 1 reply; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-20 19:56 UTC (permalink / raw)
  To: Simon Horman
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

El lun, 20 mar 2023 a las 20:54, Simon Horman
(<simon.horman@corigine.com>) escribió:
>
> On Mon, Mar 20, 2023 at 04:50:22PM +0100, Álvaro Fernández Rojas wrote:
> > BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> >
> > Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> > ---
> >  drivers/net/dsa/b53/b53_mmap.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> > index 70887e0aece3..464c77e10f60 100644
> > --- a/drivers/net/dsa/b53/b53_mmap.c
> > +++ b/drivers/net/dsa/b53/b53_mmap.c
> > @@ -331,8 +331,11 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
> >
> >  static const struct of_device_id b53_mmap_of_table[] = {
> >       { .compatible = "brcm,bcm3384-switch" },
> > +     { .compatible = "brcm,bcm6318-switch" },
> >       { .compatible = "brcm,bcm6328-switch" },
> > +     { .compatible = "brcm,bcm6362-switch" },
> >       { .compatible = "brcm,bcm6368-switch" },
> > +     { .compatible = "brcm,bcm63268-switch" },
>
> This patch adds support to this driver for "brcm,bcm63268-switch".
> However, less I am mistaken, this support doesn't work without
> patches 3/4 and 4/4 of this series.

It works for those devices which only use ports 0-3 (Comtrend VR-3032u
for example).
If the device has a external switch or uses any of the RGMIIs then it
won't configure those ports properly.

>
> I think it would be better to re-range this series so
> that support for "brcm,bcm63268-switch" works when it is
> added to/enabled in the driver.
>
> >       { .compatible = "brcm,bcm63xx-switch" },
> >       { /* sentinel */ },
> >  };
> > --
> > 2.30.2
> >

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

* Re: [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-20 15:50 ` [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
@ 2023-03-20 19:57   ` Florian Fainelli
  2023-03-20 20:01   ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Florian Fainelli @ 2023-03-20 19:57 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, andrew, olteanv, davem,
	edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, netdev,
	devicetree, linux-kernel

On 3/20/23 08:50, Álvaro Fernández Rojas wrote:
> BCM63268 SoCs require a special handling for their RGMIIs, so we should be
> able to identify them as a special BCM63xx switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>   drivers/net/dsa/b53/b53_mmap.c | 32 +++++++++++++++++++++++---------
>   drivers/net/dsa/b53/b53_priv.h |  9 ++++++++-
>   2 files changed, 31 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> index 464c77e10f60..706df04b6cee 100644
> --- a/drivers/net/dsa/b53/b53_mmap.c
> +++ b/drivers/net/dsa/b53/b53_mmap.c
> @@ -248,7 +248,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
>   		return -ENOMEM;
>   
>   	pdata->regs = mem;
> -	pdata->chip_id = BCM63XX_DEVICE_ID;
> +	pdata->chip_id = (u32)device_get_match_data(dev);
>   	pdata->big_endian = of_property_read_bool(np, "big-endian");
>   
>   	of_ports = of_get_child_by_name(np, "ports");
> @@ -330,14 +330,28 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
>   }
>   
>   static const struct of_device_id b53_mmap_of_table[] = {
> -	{ .compatible = "brcm,bcm3384-switch" },
> -	{ .compatible = "brcm,bcm6318-switch" },
> -	{ .compatible = "brcm,bcm6328-switch" },
> -	{ .compatible = "brcm,bcm6362-switch" },
> -	{ .compatible = "brcm,bcm6368-switch" },
> -	{ .compatible = "brcm,bcm63268-switch" },
> -	{ .compatible = "brcm,bcm63xx-switch" },
> -	{ /* sentinel */ },
> +	{
> +		.compatible = "brcm,bcm3384-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm6318-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,

You will want to also pass BCM63268_DEVICE_ID here, see my comment in 
patch 4.
-- 
Florian


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

* Re: [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration
  2023-03-20 15:50 ` [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
@ 2023-03-20 20:00   ` Florian Fainelli
  2023-03-21  9:10     ` Álvaro Fernández Rojas
  2023-03-20 20:07   ` Simon Horman
  1 sibling, 1 reply; 26+ messages in thread
From: Florian Fainelli @ 2023-03-20 20:00 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, andrew, olteanv, davem,
	edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt, netdev,
	devicetree, linux-kernel

On 3/20/23 08:50, Álvaro Fernández Rojas wrote:
> BCM63268 requires special RGMII configuration to work.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>   drivers/net/dsa/b53/b53_common.c | 6 +++++-
>   drivers/net/dsa/b53/b53_regs.h   | 1 +
>   2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
> index 6e212f6f1cb9..d0a22c8a55c9 100644
> --- a/drivers/net/dsa/b53/b53_common.c
> +++ b/drivers/net/dsa/b53/b53_common.c
> @@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
>   		break;
>   	}
>   
> -	if (port != dev->imp_port)
> +	if (port != dev->imp_port) {
> +		if (is63268(dev))
> +			rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;

AFAICT the override bit is defined and valid for both 63268 and 6318, 
essentially whenever more than one RGMII control register for port 4, 
but also for other ports, it seems like the bit becomes valid. The 
comment I have says that the override bit ensures that what is populated 
in bits 5:4 which is the actual RGMII interface mode is applied. That 
mode can be one of:

0b00: RGMII mode
0b01: MII mode
0b10: RVMII mode
0b11: GMII mode

even though this is not documented as such, I suspect that the override 
bit does not only set the mode, but also ensures that the delays are 
also applied.

Once you update patch 3, this LGTM and you may add:

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

For your v2. Thanks!
-- 
Florian


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

* Re: [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-20 15:50 ` [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
  2023-03-20 19:57   ` Florian Fainelli
@ 2023-03-20 20:01   ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-20 20:01 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Mon, Mar 20, 2023 at 04:50:23PM +0100, Álvaro Fernández Rojas wrote:
> BCM63268 SoCs require a special handling for their RGMIIs, so we should be
> able to identify them as a special BCM63xx switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
>  drivers/net/dsa/b53/b53_mmap.c | 32 +++++++++++++++++++++++---------
>  drivers/net/dsa/b53/b53_priv.h |  9 ++++++++-
>  2 files changed, 31 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> index 464c77e10f60..706df04b6cee 100644
> --- a/drivers/net/dsa/b53/b53_mmap.c
> +++ b/drivers/net/dsa/b53/b53_mmap.c
> @@ -248,7 +248,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
>  		return -ENOMEM;
>  
>  	pdata->regs = mem;
> -	pdata->chip_id = BCM63XX_DEVICE_ID;
> +	pdata->chip_id = (u32)device_get_match_data(dev);

make W=1 with gcc-12 tells me:

drivers/net/dsa/b53/b53_mmap.c: In function 'b53_mmap_probe_of':
drivers/net/dsa/b53/b53_mmap.c:251:26: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
  251 |         pdata->chip_id = (u32)device_get_match_data(dev);

I don't like casts much, but looking in b53_srab.c I see what appears to be
a solution to this problem:

	 pdata->chip_id = (u32)(unsigned long)of_id->data;

>  	pdata->big_endian = of_property_read_bool(np, "big-endian");
>  
>  	of_ports = of_get_child_by_name(np, "ports");
> @@ -330,14 +330,28 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
>  }
>  
>  static const struct of_device_id b53_mmap_of_table[] = {
> -	{ .compatible = "brcm,bcm3384-switch" },
> -	{ .compatible = "brcm,bcm6318-switch" },
> -	{ .compatible = "brcm,bcm6328-switch" },
> -	{ .compatible = "brcm,bcm6362-switch" },
> -	{ .compatible = "brcm,bcm6368-switch" },
> -	{ .compatible = "brcm,bcm63268-switch" },
> -	{ .compatible = "brcm,bcm63xx-switch" },
> -	{ /* sentinel */ },
> +	{
> +		.compatible = "brcm,bcm3384-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm6318-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm6328-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm6362-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm6368-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm63268-switch",
> +		.data = (void *)BCM63268_DEVICE_ID,
> +	}, {
> +		.compatible = "brcm,bcm63xx-switch",
> +		.data = (void *)BCM63XX_DEVICE_ID,
> +	}, { /* sentinel */ }

This boilerplate doesn't seem ideal.
But it does seem to follow other examples in drivers/net/dsa/

FWIIW, I might have used of_device_is_compatible() without .data.
Or only provided data for the exception case(s) and used something like this.
(*completely untested*!)

	pdata->chip_id = (u32)(unsigned long)of_id->data ? : BCM63XX_DEVICE_ID;

>  };
>  MODULE_DEVICE_TABLE(of, b53_mmap_of_table);
>  
> diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h
> index 4cf9f540696e..a689a6950189 100644
> --- a/drivers/net/dsa/b53/b53_priv.h
> +++ b/drivers/net/dsa/b53/b53_priv.h
> @@ -70,6 +70,7 @@ enum {
>  	BCM53125_DEVICE_ID = 0x53125,
>  	BCM53128_DEVICE_ID = 0x53128,
>  	BCM63XX_DEVICE_ID = 0x6300,
> +	BCM63268_DEVICE_ID = 0x63268,
>  	BCM53010_DEVICE_ID = 0x53010,
>  	BCM53011_DEVICE_ID = 0x53011,
>  	BCM53012_DEVICE_ID = 0x53012,
> @@ -191,7 +192,13 @@ static inline int is531x5(struct b53_device *dev)
>  
>  static inline int is63xx(struct b53_device *dev)
>  {
> -	return dev->chip_id == BCM63XX_DEVICE_ID;
> +	return dev->chip_id == BCM63XX_DEVICE_ID ||
> +		dev->chip_id == BCM63268_DEVICE_ID;
> +}
> +
> +static inline int is63268(struct b53_device *dev)
> +{
> +	return dev->chip_id == BCM63268_DEVICE_ID;
>  }
>  
>  static inline int is5301x(struct b53_device *dev)
> -- 
> 2.30.2
> 

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

* Re: [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration
  2023-03-20 15:50 ` [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
  2023-03-20 20:00   ` Florian Fainelli
@ 2023-03-20 20:07   ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-20 20:07 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Mon, Mar 20, 2023 at 04:50:24PM +0100, Álvaro Fernández Rojas wrote:
> BCM63268 requires special RGMII configuration to work.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>

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

* Re: [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs
  2023-03-20 19:56     ` Álvaro Fernández Rojas
@ 2023-03-20 20:11       ` Simon Horman
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-20 20:11 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, andrew, olteanv, davem, edumazet, kuba, pabeni,
	robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Mon, Mar 20, 2023 at 08:56:58PM +0100, Álvaro Fernández Rojas wrote:
> El lun, 20 mar 2023 a las 20:54, Simon Horman
> (<simon.horman@corigine.com>) escribió:
> >
> > On Mon, Mar 20, 2023 at 04:50:22PM +0100, Álvaro Fernández Rojas wrote:
> > > BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> > >
> > > Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> > > ---
> > >  drivers/net/dsa/b53/b53_mmap.c | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
> > > index 70887e0aece3..464c77e10f60 100644
> > > --- a/drivers/net/dsa/b53/b53_mmap.c
> > > +++ b/drivers/net/dsa/b53/b53_mmap.c
> > > @@ -331,8 +331,11 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
> > >
> > >  static const struct of_device_id b53_mmap_of_table[] = {
> > >       { .compatible = "brcm,bcm3384-switch" },
> > > +     { .compatible = "brcm,bcm6318-switch" },
> > >       { .compatible = "brcm,bcm6328-switch" },
> > > +     { .compatible = "brcm,bcm6362-switch" },
> > >       { .compatible = "brcm,bcm6368-switch" },
> > > +     { .compatible = "brcm,bcm63268-switch" },
> >
> > This patch adds support to this driver for "brcm,bcm63268-switch".
> > However, less I am mistaken, this support doesn't work without
> > patches 3/4 and 4/4 of this series.
> 
> It works for those devices which only use ports 0-3 (Comtrend VR-3032u
> for example).
> If the device has a external switch or uses any of the RGMIIs then it
> won't configure those ports properly.

Ok, I guess that all drivers have incomplete support,
so from that point of view I guess this is fine.

> > I think it would be better to re-range this series so
> > that support for "brcm,bcm63268-switch" works when it is
> > added to/enabled in the driver.
> >
> > >       { .compatible = "brcm,bcm63xx-switch" },
> > >       { /* sentinel */ },
> > >  };
> > > --
> > > 2.30.2
> > >

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

* Re: [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
  2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
  2023-03-20 19:49   ` Simon Horman
  2023-03-20 19:51   ` Florian Fainelli
@ 2023-03-21  7:14   ` Krzysztof Kozlowski
  2 siblings, 0 replies; 26+ messages in thread
From: Krzysztof Kozlowski @ 2023-03-21  7:14 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, f.fainelli, andrew, olteanv,
	davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt,
	netdev, devicetree, linux-kernel

On 20/03/2023 16:50, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---

Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof


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

* Re: [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration
  2023-03-20 20:00   ` Florian Fainelli
@ 2023-03-21  9:10     ` Álvaro Fernández Rojas
  0 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21  9:10 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: andrew, olteanv, davem, edumazet, kuba, pabeni, robh+dt,
	krzysztof.kozlowski+dt, netdev, devicetree, linux-kernel

(Excuse me for my previous email in HTML, but I forgot Android Gmail
app uses HTML)

2023-03-20 21:00 GMT+01:00, Florian Fainelli <f.fainelli@gmail.com>:
> On 3/20/23 08:50, Álvaro Fernández Rojas wrote:
>> BCM63268 requires special RGMII configuration to work.
>>
>> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
>> ---
>>   drivers/net/dsa/b53/b53_common.c | 6 +++++-
>>   drivers/net/dsa/b53/b53_regs.h   | 1 +
>>   2 files changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/net/dsa/b53/b53_common.c
>> b/drivers/net/dsa/b53/b53_common.c
>> index 6e212f6f1cb9..d0a22c8a55c9 100644
>> --- a/drivers/net/dsa/b53/b53_common.c
>> +++ b/drivers/net/dsa/b53/b53_common.c
>> @@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch
>> *ds, int port,
>>   		break;
>>   	}
>>
>> -	if (port != dev->imp_port)
>> +	if (port != dev->imp_port) {
>> +		if (is63268(dev))
>> +			rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
>
> AFAICT the override bit is defined and valid for both 63268 and 6318,

Should we add a specific ID for the 6318?
I don't know if it's different enough from the 63268 to need a special
treatment such as is6318()...

> essentially whenever more than one RGMII control register for port 4,
> but also for other ports, it seems like the bit becomes valid. The
> comment I have says that the override bit ensures that what is populated
> in bits 5:4 which is the actual RGMII interface mode is applied. That
> mode can be one of:
>
> 0b00: RGMII mode
> 0b01: MII mode
> 0b10: RVMII mode
> 0b11: GMII mode

This is interesting since we never set those bits in the bcm63xx
enetsw controller...
Should we add configuration for those bits in future patches?
Which SoCs hace those bits? Only 6318 and 63268 or every 63xx has them?

>
> even though this is not documented as such, I suspect that the override
> bit does not only set the mode, but also ensures that the delays are
> also applied.
>
> Once you update patch 3, this LGTM and you may add:
>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>
> For your v2. Thanks!
> --
> Florian
>
>

--
Álvaro

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

* [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports
  2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
                   ` (3 preceding siblings ...)
  2023-03-20 15:50 ` [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
@ 2023-03-21 17:33 ` Álvaro Fernández Rojas
  2023-03-21 17:33   ` [PATCH v2 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
                     ` (4 more replies)
  4 siblings, 5 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21 17:33 UTC (permalink / raw)
  To: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM6318 and BCM63268 need special configuration for their RGMII ports, so we
need to be able to identify them as a special BCM63xx switch.
In the meantime, let's add some missing BCM63xx SoCs to B53 MMAP device table.

This should be applied after "net: dsa: b53: add support for BCM63xx RGMIIs":
https://patchwork.kernel.org/project/netdevbpf/patch/20230319220805.124024-1-noltari@gmail.com/

Álvaro Fernández Rojas (4):
  dt-bindings: net: dsa: b53: add more 63xx SoCs
  net: dsa: b53: mmap: add more 63xx SoCs
  net: dsa: b53: mmap: allow passing a chip ID
  net: dsa: b53: add BCM63268 RGMII configuration

 .../devicetree/bindings/net/dsa/brcm,b53.yaml |  3 ++
 drivers/net/dsa/b53/b53_common.c              | 19 +++++++++++-
 drivers/net/dsa/b53/b53_mmap.c                | 29 +++++++++++++++----
 drivers/net/dsa/b53/b53_priv.h                |  9 +++++-
 drivers/net/dsa/b53/b53_regs.h                |  1 +
 5 files changed, 53 insertions(+), 8 deletions(-)

-- 
2.30.2


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

* [PATCH v2 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
@ 2023-03-21 17:33   ` Álvaro Fernández Rojas
  2023-03-21 17:33   ` [PATCH v2 2/4] net: dsa: b53: mmap: " Álvaro Fernández Rojas
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21 17:33 UTC (permalink / raw)
  To: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas, Simon Horman, Krzysztof Kozlowski

BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 v2: no changes.

 Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
index 5bef4128d175..57e0ef93b134 100644
--- a/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
+++ b/Documentation/devicetree/bindings/net/dsa/brcm,b53.yaml
@@ -57,8 +57,11 @@ properties:
       - items:
           - enum:
               - brcm,bcm3384-switch
+              - brcm,bcm6318-switch
               - brcm,bcm6328-switch
+              - brcm,bcm6362-switch
               - brcm,bcm6368-switch
+              - brcm,bcm63268-switch
           - const: brcm,bcm63xx-switch
 
 required:
-- 
2.30.2


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

* [PATCH v2 2/4] net: dsa: b53: mmap: add more 63xx SoCs
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
  2023-03-21 17:33   ` [PATCH v2 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
@ 2023-03-21 17:33   ` Álvaro Fernández Rojas
  2023-03-22 11:11     ` Simon Horman
  2023-03-21 17:33   ` [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21 17:33 UTC (permalink / raw)
  To: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
 v2: no changes.

 drivers/net/dsa/b53/b53_mmap.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index e968322dfbf0..f63aebd445e8 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -331,8 +331,11 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
 
 static const struct of_device_id b53_mmap_of_table[] = {
 	{ .compatible = "brcm,bcm3384-switch" },
+	{ .compatible = "brcm,bcm6318-switch" },
 	{ .compatible = "brcm,bcm6328-switch" },
+	{ .compatible = "brcm,bcm6362-switch" },
 	{ .compatible = "brcm,bcm6368-switch" },
+	{ .compatible = "brcm,bcm63268-switch" },
 	{ .compatible = "brcm,bcm63xx-switch" },
 	{ /* sentinel */ },
 };
-- 
2.30.2


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

* [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
  2023-03-21 17:33   ` [PATCH v2 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
  2023-03-21 17:33   ` [PATCH v2 2/4] net: dsa: b53: mmap: " Álvaro Fernández Rojas
@ 2023-03-21 17:33   ` Álvaro Fernández Rojas
  2023-03-21 18:19     ` Florian Fainelli
  2023-03-22 11:12     ` Simon Horman
  2023-03-21 17:33   ` [PATCH v2 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
  2023-03-23  4:50   ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports patchwork-bot+netdevbpf
  4 siblings, 2 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21 17:33 UTC (permalink / raw)
  To: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas

BCM6318 and BCM63268 SoCs require a special handling for their RGMIIs, so we
should be able to identify them as a special BCM63xx switch.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---
 v2:
  - Add missing chip to b53_switch_chips[].
  - Fix device_get_match_data() casting warning.
  - Add BCM63268_DEVICE_ID to BCM6318 too.
  - Add BCM6318 in commit description.

 drivers/net/dsa/b53/b53_common.c | 13 +++++++++++++
 drivers/net/dsa/b53/b53_mmap.c   | 32 +++++++++++++++++++++++---------
 drivers/net/dsa/b53/b53_priv.h   |  9 ++++++++-
 3 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 6e212f6f1cb9..97327d7a6760 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -2465,6 +2465,19 @@ static const struct b53_chip_data b53_switch_chips[] = {
 		.jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX,
 		.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
 	},
+	{
+		.chip_id = BCM63268_DEVICE_ID,
+		.dev_name = "BCM63268",
+		.vlans = 4096,
+		.enabled_ports = 0, /* pdata must provide them */
+		.arl_bins = 4,
+		.arl_buckets = 1024,
+		.imp_port = 8,
+		.vta_regs = B53_VTA_REGS_63XX,
+		.duplex_reg = B53_DUPLEX_STAT_63XX,
+		.jumbo_pm_reg = B53_JUMBO_PORT_MASK_63XX,
+		.jumbo_size_reg = B53_JUMBO_MAX_SIZE_63XX,
+	},
 	{
 		.chip_id = BCM53010_DEVICE_ID,
 		.dev_name = "BCM53010",
diff --git a/drivers/net/dsa/b53/b53_mmap.c b/drivers/net/dsa/b53/b53_mmap.c
index f63aebd445e8..a83a0c9d6939 100644
--- a/drivers/net/dsa/b53/b53_mmap.c
+++ b/drivers/net/dsa/b53/b53_mmap.c
@@ -248,7 +248,7 @@ static int b53_mmap_probe_of(struct platform_device *pdev,
 		return -ENOMEM;
 
 	pdata->regs = mem;
-	pdata->chip_id = BCM63XX_DEVICE_ID;
+	pdata->chip_id = (u32)(unsigned long)device_get_match_data(dev);
 	pdata->big_endian = of_property_read_bool(np, "big-endian");
 
 	of_ports = of_get_child_by_name(np, "ports");
@@ -330,14 +330,28 @@ static void b53_mmap_shutdown(struct platform_device *pdev)
 }
 
 static const struct of_device_id b53_mmap_of_table[] = {
-	{ .compatible = "brcm,bcm3384-switch" },
-	{ .compatible = "brcm,bcm6318-switch" },
-	{ .compatible = "brcm,bcm6328-switch" },
-	{ .compatible = "brcm,bcm6362-switch" },
-	{ .compatible = "brcm,bcm6368-switch" },
-	{ .compatible = "brcm,bcm63268-switch" },
-	{ .compatible = "brcm,bcm63xx-switch" },
-	{ /* sentinel */ },
+	{
+		.compatible = "brcm,bcm3384-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6318-switch",
+		.data = (void *)BCM63268_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6328-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6362-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm6368-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm63268-switch",
+		.data = (void *)BCM63268_DEVICE_ID,
+	}, {
+		.compatible = "brcm,bcm63xx-switch",
+		.data = (void *)BCM63XX_DEVICE_ID,
+	}, { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, b53_mmap_of_table);
 
diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h
index 4cf9f540696e..a689a6950189 100644
--- a/drivers/net/dsa/b53/b53_priv.h
+++ b/drivers/net/dsa/b53/b53_priv.h
@@ -70,6 +70,7 @@ enum {
 	BCM53125_DEVICE_ID = 0x53125,
 	BCM53128_DEVICE_ID = 0x53128,
 	BCM63XX_DEVICE_ID = 0x6300,
+	BCM63268_DEVICE_ID = 0x63268,
 	BCM53010_DEVICE_ID = 0x53010,
 	BCM53011_DEVICE_ID = 0x53011,
 	BCM53012_DEVICE_ID = 0x53012,
@@ -191,7 +192,13 @@ static inline int is531x5(struct b53_device *dev)
 
 static inline int is63xx(struct b53_device *dev)
 {
-	return dev->chip_id == BCM63XX_DEVICE_ID;
+	return dev->chip_id == BCM63XX_DEVICE_ID ||
+		dev->chip_id == BCM63268_DEVICE_ID;
+}
+
+static inline int is63268(struct b53_device *dev)
+{
+	return dev->chip_id == BCM63268_DEVICE_ID;
 }
 
 static inline int is5301x(struct b53_device *dev)
-- 
2.30.2


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

* [PATCH v2 4/4] net: dsa: b53: add BCM63268 RGMII configuration
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
                     ` (2 preceding siblings ...)
  2023-03-21 17:33   ` [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
@ 2023-03-21 17:33   ` Álvaro Fernández Rojas
  2023-03-23  4:50   ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports patchwork-bot+netdevbpf
  4 siblings, 0 replies; 26+ messages in thread
From: Álvaro Fernández Rojas @ 2023-03-21 17:33 UTC (permalink / raw)
  To: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel
  Cc: Álvaro Fernández Rojas, Simon Horman

BCM63268 requires special RGMII configuration to work.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
---
 v2: no changes.

 drivers/net/dsa/b53/b53_common.c | 6 +++++-
 drivers/net/dsa/b53/b53_regs.h   | 1 +
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 97327d7a6760..1f9b251a5452 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1240,8 +1240,12 @@ static void b53_adjust_63xx_rgmii(struct dsa_switch *ds, int port,
 		break;
 	}
 
-	if (port != dev->imp_port)
+	if (port != dev->imp_port) {
+		if (is63268(dev))
+			rgmii_ctrl |= RGMII_CTRL_MII_OVERRIDE;
+
 		rgmii_ctrl |= RGMII_CTRL_ENABLE_GMII;
+	}
 
 	b53_write8(dev, B53_CTRL_PAGE, off, rgmii_ctrl);
 
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index b2c539a42154..bfbcb66bef66 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -138,6 +138,7 @@
 
 #define B53_RGMII_CTRL_IMP		0x60
 #define   RGMII_CTRL_ENABLE_GMII	BIT(7)
+#define   RGMII_CTRL_MII_OVERRIDE	BIT(6)
 #define   RGMII_CTRL_TIMING_SEL		BIT(2)
 #define   RGMII_CTRL_DLL_RXC		BIT(1)
 #define   RGMII_CTRL_DLL_TXC		BIT(0)
-- 
2.30.2


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

* Re: [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-21 17:33   ` [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
@ 2023-03-21 18:19     ` Florian Fainelli
  2023-03-22 11:12     ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Florian Fainelli @ 2023-03-21 18:19 UTC (permalink / raw)
  To: Álvaro Fernández Rojas, jonas.gorski, andrew, olteanv,
	davem, edumazet, kuba, pabeni, robh+dt, krzysztof.kozlowski+dt,
	netdev, devicetree, linux-kernel

On 3/21/23 10:33, Álvaro Fernández Rojas wrote:
> BCM6318 and BCM63268 SoCs require a special handling for their RGMIIs, so we
> should be able to identify them as a special BCM63xx switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian


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

* Re: [PATCH v2 2/4] net: dsa: b53: mmap: add more 63xx SoCs
  2023-03-21 17:33   ` [PATCH v2 2/4] net: dsa: b53: mmap: " Álvaro Fernández Rojas
@ 2023-03-22 11:11     ` Simon Horman
  0 siblings, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-22 11:11 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Tue, Mar 21, 2023 at 06:33:57PM +0100, Álvaro Fernández Rojas wrote:
> BCM6318, BCM6362 and BCM63268 are SoCs with a B53 MMAP switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>


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

* Re: [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID
  2023-03-21 17:33   ` [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
  2023-03-21 18:19     ` Florian Fainelli
@ 2023-03-22 11:12     ` Simon Horman
  1 sibling, 0 replies; 26+ messages in thread
From: Simon Horman @ 2023-03-22 11:12 UTC (permalink / raw)
  To: Álvaro Fernández Rojas
  Cc: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

On Tue, Mar 21, 2023 at 06:33:58PM +0100, Álvaro Fernández Rojas wrote:
> BCM6318 and BCM63268 SoCs require a special handling for their RGMIIs, so we
> should be able to identify them as a special BCM63xx switch.
> 
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

Reviewed-by: Simon Horman <simon.horman@corigine.com>


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

* Re: [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports
  2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
                     ` (3 preceding siblings ...)
  2023-03-21 17:33   ` [PATCH v2 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
@ 2023-03-23  4:50   ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 26+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-03-23  4:50 UTC (permalink / raw)
  To: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas_=3Cnoltari=40gmail=2Ecom=3E?=
  Cc: f.fainelli, jonas.gorski, andrew, olteanv, davem, edumazet, kuba,
	pabeni, robh+dt, krzysztof.kozlowski+dt, netdev, devicetree,
	linux-kernel

Hello:

This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Tue, 21 Mar 2023 18:33:55 +0100 you wrote:
> BCM6318 and BCM63268 need special configuration for their RGMII ports, so we
> need to be able to identify them as a special BCM63xx switch.
> In the meantime, let's add some missing BCM63xx SoCs to B53 MMAP device table.
> 
> This should be applied after "net: dsa: b53: add support for BCM63xx RGMIIs":
> https://patchwork.kernel.org/project/netdevbpf/patch/20230319220805.124024-1-noltari@gmail.com/
> 
> [...]

Here is the summary with links:
  - [v2,1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs
    https://git.kernel.org/netdev/net-next/c/3ec5ac3133b5
  - [v2,2/4] net: dsa: b53: mmap: add more 63xx SoCs
    https://git.kernel.org/netdev/net-next/c/a2b212fe5c32
  - [v2,3/4] net: dsa: b53: mmap: allow passing a chip ID
    https://git.kernel.org/netdev/net-next/c/260887c770eb
  - [v2,4/4] net: dsa: b53: add BCM63268 RGMII configuration
    https://git.kernel.org/netdev/net-next/c/594c6c2e3ea2

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] 26+ messages in thread

end of thread, other threads:[~2023-03-23  4:51 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-20 15:50 [PATCH 0/4] net: dsa: b53: configure BCM63268 RGMII ports Álvaro Fernández Rojas
2023-03-20 15:50 ` [PATCH 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
2023-03-20 19:49   ` Simon Horman
2023-03-20 19:51   ` Florian Fainelli
2023-03-21  7:14   ` Krzysztof Kozlowski
2023-03-20 15:50 ` [PATCH 2/4] net: dsa: b53: mmap: add more BCM63xx SoCs Álvaro Fernández Rojas
2023-03-20 19:52   ` Florian Fainelli
2023-03-20 19:54   ` Simon Horman
2023-03-20 19:56     ` Álvaro Fernández Rojas
2023-03-20 20:11       ` Simon Horman
2023-03-20 15:50 ` [PATCH 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
2023-03-20 19:57   ` Florian Fainelli
2023-03-20 20:01   ` Simon Horman
2023-03-20 15:50 ` [PATCH 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
2023-03-20 20:00   ` Florian Fainelli
2023-03-21  9:10     ` Álvaro Fernández Rojas
2023-03-20 20:07   ` Simon Horman
2023-03-21 17:33 ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports Álvaro Fernández Rojas
2023-03-21 17:33   ` [PATCH v2 1/4] dt-bindings: net: dsa: b53: add more 63xx SoCs Álvaro Fernández Rojas
2023-03-21 17:33   ` [PATCH v2 2/4] net: dsa: b53: mmap: " Álvaro Fernández Rojas
2023-03-22 11:11     ` Simon Horman
2023-03-21 17:33   ` [PATCH v2 3/4] net: dsa: b53: mmap: allow passing a chip ID Álvaro Fernández Rojas
2023-03-21 18:19     ` Florian Fainelli
2023-03-22 11:12     ` Simon Horman
2023-03-21 17:33   ` [PATCH v2 4/4] net: dsa: b53: add BCM63268 RGMII configuration Álvaro Fernández Rojas
2023-03-23  4:50   ` [PATCH v2 0/4] net: dsa: b53: configure 6318 and 63268 RGMII ports patchwork-bot+netdevbpf

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