netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC net-next 09/23] net: dsa: lantiq_gswip: add support for SWAPI version 2.3
@ 2025-08-16 19:52 Daniel Golle
  2025-08-17 15:36 ` Andrew Lunn
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Golle @ 2025-08-16 19:52 UTC (permalink / raw)
  To: Andrew Lunn, Vladimir Oltean, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Hauke Mehrtens, Simon Horman,
	Russell King, Florian Fainelli, Arkadi Sharshevsky, linux-kernel,
	netdev
  Cc: Andreas Schirm, Lukas Stockmann, Alexander Sverdlin,
	Peter Christen, Avinash Jayaraman, Bing tao Xu, Liang Xu,
	Juraj Povazanec, Fanni (Fang-Yi) Chan, Benny (Ying-Tsan) Weng,
	Livia M. Rosu, John Crispin

Add definition for switch API version 2.3 and a macro to make comparing
the version more conveniant.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 drivers/net/dsa/lantiq_gswip.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/dsa/lantiq_gswip.h b/drivers/net/dsa/lantiq_gswip.h
index 433b65b047dd..fd0c01edb914 100644
--- a/drivers/net/dsa/lantiq_gswip.h
+++ b/drivers/net/dsa/lantiq_gswip.h
@@ -7,6 +7,7 @@
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 #include <linux/reset.h>
+#include <linux/swab.h>
 #include <net/dsa.h>
 
 /* GSWIP MDIO Registers */
@@ -93,6 +94,8 @@
 #define   GSWIP_VERSION_2_1		0x021
 #define   GSWIP_VERSION_2_2		0x122
 #define   GSWIP_VERSION_2_2_ETC		0x022
+#define   GSWIP_VERSION_2_3		0x023
+#define GSWIP_VERSION_GE(priv, ver)	(swab16(priv->version) >= swab16(ver))
 
 #define GSWIP_BM_RAM_VAL(x)		(0x043 - (x))
 #define GSWIP_BM_RAM_ADDR		0x044
-- 
2.50.1

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

* Re: [PATCH RFC net-next 09/23] net: dsa: lantiq_gswip: add support for SWAPI version 2.3
  2025-08-16 19:52 [PATCH RFC net-next 09/23] net: dsa: lantiq_gswip: add support for SWAPI version 2.3 Daniel Golle
@ 2025-08-17 15:36 ` Andrew Lunn
  2025-08-17 20:16   ` Daniel Golle
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Lunn @ 2025-08-17 15:36 UTC (permalink / raw)
  To: Daniel Golle
  Cc: Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Hauke Mehrtens, Simon Horman, Russell King,
	Florian Fainelli, Arkadi Sharshevsky, linux-kernel, netdev,
	Andreas Schirm, Lukas Stockmann, Alexander Sverdlin,
	Peter Christen, Avinash Jayaraman, Bing tao Xu, Liang Xu,
	Juraj Povazanec, Fanni (Fang-Yi) Chan, Benny (Ying-Tsan) Weng,
	Livia M. Rosu, John Crispin

On Sat, Aug 16, 2025 at 08:52:42PM +0100, Daniel Golle wrote:
> Add definition for switch API version 2.3 and a macro to make comparing
> the version more conveniant.
> 
> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> ---
>  drivers/net/dsa/lantiq_gswip.h | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/dsa/lantiq_gswip.h b/drivers/net/dsa/lantiq_gswip.h
> index 433b65b047dd..fd0c01edb914 100644
> --- a/drivers/net/dsa/lantiq_gswip.h
> +++ b/drivers/net/dsa/lantiq_gswip.h
> @@ -7,6 +7,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/regmap.h>
>  #include <linux/reset.h>
> +#include <linux/swab.h>
>  #include <net/dsa.h>
>  
>  /* GSWIP MDIO Registers */
> @@ -93,6 +94,8 @@
>  #define   GSWIP_VERSION_2_1		0x021
>  #define   GSWIP_VERSION_2_2		0x122
>  #define   GSWIP_VERSION_2_2_ETC		0x022
> +#define   GSWIP_VERSION_2_3		0x023
> +#define GSWIP_VERSION_GE(priv, ver)	(swab16(priv->version) >= swab16(ver))

Don't this depend on the endiannes of the CPU?

It seems like it would be better to make your new version member cpu
endian, and when writing to it, do le16_to_cpu().

Also, if i remember correctly, you made version a u32. Should it
really be a u16?

	Andrew

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

* Re: [PATCH RFC net-next 09/23] net: dsa: lantiq_gswip: add support for SWAPI version 2.3
  2025-08-17 15:36 ` Andrew Lunn
@ 2025-08-17 20:16   ` Daniel Golle
  0 siblings, 0 replies; 3+ messages in thread
From: Daniel Golle @ 2025-08-17 20:16 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Hauke Mehrtens, Simon Horman, Russell King,
	Florian Fainelli, Arkadi Sharshevsky, linux-kernel, netdev,
	Andreas Schirm, Lukas Stockmann, Alexander Sverdlin,
	Peter Christen, Avinash Jayaraman, Bing tao Xu, Liang Xu,
	Juraj Povazanec, Fanni (Fang-Yi) Chan, Benny (Ying-Tsan) Weng,
	Livia M. Rosu, John Crispin

On Sun, Aug 17, 2025 at 05:36:13PM +0200, Andrew Lunn wrote:
> On Sat, Aug 16, 2025 at 08:52:42PM +0100, Daniel Golle wrote:
> > Add definition for switch API version 2.3 and a macro to make comparing
> > the version more conveniant.
> > 
> > Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> > ---
> >  drivers/net/dsa/lantiq_gswip.h | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/net/dsa/lantiq_gswip.h b/drivers/net/dsa/lantiq_gswip.h
> > index 433b65b047dd..fd0c01edb914 100644
> > --- a/drivers/net/dsa/lantiq_gswip.h
> > +++ b/drivers/net/dsa/lantiq_gswip.h
> > @@ -7,6 +7,7 @@
> >  #include <linux/platform_device.h>
> >  #include <linux/regmap.h>
> >  #include <linux/reset.h>
> > +#include <linux/swab.h>
> >  #include <net/dsa.h>
> >  
> >  /* GSWIP MDIO Registers */
> > @@ -93,6 +94,8 @@
> >  #define   GSWIP_VERSION_2_1		0x021
> >  #define   GSWIP_VERSION_2_2		0x122
> >  #define   GSWIP_VERSION_2_2_ETC		0x022
> > +#define   GSWIP_VERSION_2_3		0x023
> > +#define GSWIP_VERSION_GE(priv, ver)	(swab16(priv->version) >= swab16(ver))
> 
> Don't this depend on the endiannes of the CPU?
> 
> It seems like it would be better to make your new version member cpu
> endian, and when writing to it, do le16_to_cpu().

Yes, that does make sense.

> 
> Also, if i remember correctly, you made version a u32. Should it
> really be a u16?

True, it should probably be u16. It would complicate things a bit though
as the (existing, currently supported) MMIO switches built-into the Lantiq
SoCs use 32-bit memory operations to access the 16-bit switch registers,
where the upper 16-bit are always all zero... Hence I got to use
.val_bits = 32 to not end up with bus errors, and also .reg_shift = -2
is needed as each 16-bit register address needs to be multiplied by 4 (ie.
addr =<< 2, which is what .reg_shift = -2 is doing).
So up to now, eg. when passed as a function paramter in existing code paths,
the version has been a u32 type. When using a different type for the version
stored in the priv struct, that would create quite a bit of confusion imho:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/dsa/lantiq_gswip.c?h=v6.16#n2018

Let me know what you think.


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

end of thread, other threads:[~2025-08-17 20:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-16 19:52 [PATCH RFC net-next 09/23] net: dsa: lantiq_gswip: add support for SWAPI version 2.3 Daniel Golle
2025-08-17 15:36 ` Andrew Lunn
2025-08-17 20:16   ` Daniel Golle

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