All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support
@ 2022-02-04 13:36 Enguerrand de Ribaucourt
  2022-02-04 13:36 ` [PATCH 1/2] " Enguerrand de Ribaucourt
  2022-02-04 13:36 ` [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table Enguerrand de Ribaucourt
  0 siblings, 2 replies; 7+ messages in thread
From: Enguerrand de Ribaucourt @ 2022-02-04 13:36 UTC (permalink / raw)
  To: netdev; +Cc: andrew, hkallweit1, linux

Hi,
I've recently used a KSZ9897 DSA switch that was connected to an i.MX6 CPU
through SPI for the DSA control, and RMII as the data cpu-port. The SPI/DSA was
well supported in drivers/net/dsa/microchip/ksz9477.c, but the RMII connection
was not working. I would like to upstream the patch I developped to add support
for the KSZ9897 RMII bus. This is required for the cpu-port capability of
the DSA switch and have a complete support of this DSA switch.

Since PHY_ID_KSZ9897 and PHY_ID_KSZ8081 are very close, I had to modify the mask
used for the latter. I don't have this one, so it would be very appreciated if
someone could test this patch with the KSZ8081 or KSZ8091. In particular, I'd
like to know the exact phy_id used by those models to check that the new mask is
valid, and that they don't collide with the KSZ9897. The phy_ids cannot be found
in the datasheet, so I couldn't verify that myself.

My definition of the struct phy_driver was copied from the similar
PHY_ID_KSZ8873MLL and proved to work on a 5.4 kernel. However, my patch may not
support the Gigabit Ethernet but works reliably otherwise.

The second patch fixes an issue with the KSZ9477 declaration I noticed. I
couldn't find PHY_ID_KSZ9477, or an equivalent mask in the MODULE_DEVICE_TABLE
declaration. I fear the driver is not initialized properly with this PHY. I
don't have this model either so it would be great if someone could test this.



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

* [PATCH 1/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support
  2022-02-04 13:36 [PATCH 0/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support Enguerrand de Ribaucourt
@ 2022-02-04 13:36 ` Enguerrand de Ribaucourt
  2022-02-04 14:05   ` Andrew Lunn
  2022-02-04 13:36 ` [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table Enguerrand de Ribaucourt
  1 sibling, 1 reply; 7+ messages in thread
From: Enguerrand de Ribaucourt @ 2022-02-04 13:36 UTC (permalink / raw)
  To: netdev; +Cc: andrew, hkallweit1, linux, Enguerrand de Ribaucourt

Adding Microchip 9897 Phy included in KSZ9897 Switch.
The KSZ9897 shares the same prefix as the KSZ8081. The phy_id_mask was
updated to allow the KSZ9897 to be matched.

Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
---
 drivers/net/phy/micrel.c   | 15 +++++++++++++--
 include/linux/micrel_phy.h |  1 +
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 44a24b99c894..9b2047e26449 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -1726,7 +1726,7 @@ static struct phy_driver ksphy_driver[] = {
 }, {
 	.phy_id		= PHY_ID_KSZ8081,
 	.name		= "Micrel KSZ8081 or KSZ8091",
-	.phy_id_mask	= MICREL_PHY_ID_MASK,
+	.phy_id_mask	= 0x00ffffff,
 	.flags		= PHY_POLL_CABLE_TEST,
 	/* PHY_BASIC_FEATURES */
 	.driver_data	= &ksz8081_type,
@@ -1869,6 +1869,16 @@ static struct phy_driver ksphy_driver[] = {
 	.config_init	= kszphy_config_init,
 	.suspend	= genphy_suspend,
 	.resume		= genphy_resume,
+}, {
+	.phy_id		= PHY_ID_KSZ9897,
+	.phy_id_mask	= 0x00ffffff,
+	.name		= "Microchip KSZ9897",
+	/* PHY_BASIC_FEATURES */
+	.config_init	= kszphy_config_init,
+	.config_aneg	= ksz8873mll_config_aneg,
+	.read_status	= ksz8873mll_read_status,
+	.suspend	= genphy_suspend,
+	.resume		= genphy_resume,
 } };
 
 module_phy_driver(ksphy_driver);
@@ -1888,11 +1898,12 @@ static struct mdio_device_id __maybe_unused micrel_tbl[] = {
 	{ PHY_ID_KSZ8041, MICREL_PHY_ID_MASK },
 	{ PHY_ID_KSZ8051, MICREL_PHY_ID_MASK },
 	{ PHY_ID_KSZ8061, MICREL_PHY_ID_MASK },
-	{ PHY_ID_KSZ8081, MICREL_PHY_ID_MASK },
+	{ PHY_ID_KSZ8081, 0x00ffffff },
 	{ PHY_ID_KSZ8873MLL, MICREL_PHY_ID_MASK },
 	{ PHY_ID_KSZ886X, MICREL_PHY_ID_MASK },
 	{ PHY_ID_LAN8814, MICREL_PHY_ID_MASK },
 	{ PHY_ID_LAN8804, MICREL_PHY_ID_MASK },
+	{ PHY_ID_KSZ9897, 0x00ffffff },
 	{ }
 };
 
diff --git a/include/linux/micrel_phy.h b/include/linux/micrel_phy.h
index 1f7c33b2f5a3..8d09a732ddf3 100644
--- a/include/linux/micrel_phy.h
+++ b/include/linux/micrel_phy.h
@@ -36,6 +36,7 @@
 #define PHY_ID_KSZ87XX		0x00221550
 
 #define	PHY_ID_KSZ9477		0x00221631
+#define	PHY_ID_KSZ9897		0x00221561
 
 /* struct phy_device dev_flags definitions */
 #define MICREL_PHY_50MHZ_CLK	0x00000001
-- 
2.25.1


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

* [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table
  2022-02-04 13:36 [PATCH 0/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support Enguerrand de Ribaucourt
  2022-02-04 13:36 ` [PATCH 1/2] " Enguerrand de Ribaucourt
@ 2022-02-04 13:36 ` Enguerrand de Ribaucourt
  2022-02-04 14:06   ` Andrew Lunn
  1 sibling, 1 reply; 7+ messages in thread
From: Enguerrand de Ribaucourt @ 2022-02-04 13:36 UTC (permalink / raw)
  To: netdev; +Cc: andrew, hkallweit1, linux, Enguerrand de Ribaucourt

PHY_ID_KSZ9477 was supported but not added to the device table passed to
MODULE_DEVICE_TABLE.

Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
---
 drivers/net/phy/micrel.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 9b2047e26449..4502a4a7e03e 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -1903,6 +1903,7 @@ static struct mdio_device_id __maybe_unused micrel_tbl[] = {
 	{ PHY_ID_KSZ886X, MICREL_PHY_ID_MASK },
 	{ PHY_ID_LAN8814, MICREL_PHY_ID_MASK },
 	{ PHY_ID_LAN8804, MICREL_PHY_ID_MASK },
+	{ PHY_ID_KSZ9477, MICREL_PHY_ID_MASK },
 	{ PHY_ID_KSZ9897, 0x00ffffff },
 	{ }
 };
-- 
2.25.1


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

* Re: [PATCH 1/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support
  2022-02-04 13:36 ` [PATCH 1/2] " Enguerrand de Ribaucourt
@ 2022-02-04 14:05   ` Andrew Lunn
  2022-02-04 15:17     ` Enguerrand de Ribaucourt
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Lunn @ 2022-02-04 14:05 UTC (permalink / raw)
  To: Enguerrand de Ribaucourt; +Cc: netdev, hkallweit1, linux

On Fri, Feb 04, 2022 at 02:36:34PM +0100, Enguerrand de Ribaucourt wrote:
> Adding Microchip 9897 Phy included in KSZ9897 Switch.
> The KSZ9897 shares the same prefix as the KSZ8081. The phy_id_mask was
> updated to allow the KSZ9897 to be matched.
> 
> Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>
> ---
>  drivers/net/phy/micrel.c   | 15 +++++++++++++--
>  include/linux/micrel_phy.h |  1 +
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> index 44a24b99c894..9b2047e26449 100644
> --- a/drivers/net/phy/micrel.c
> +++ b/drivers/net/phy/micrel.c
> @@ -1726,7 +1726,7 @@ static struct phy_driver ksphy_driver[] = {
>  }, {
>  	.phy_id		= PHY_ID_KSZ8081,
>  	.name		= "Micrel KSZ8081 or KSZ8091",
> -	.phy_id_mask	= MICREL_PHY_ID_MASK,
> +	.phy_id_mask	= 0x00ffffff,

You can probably use PHY_ID_MATCH_EXACT().

>  	.flags		= PHY_POLL_CABLE_TEST,
>  	/* PHY_BASIC_FEATURES */
>  	.driver_data	= &ksz8081_type,
> @@ -1869,6 +1869,16 @@ static struct phy_driver ksphy_driver[] = {
>  	.config_init	= kszphy_config_init,
>  	.suspend	= genphy_suspend,
>  	.resume		= genphy_resume,
> +}, {
> +	.phy_id		= PHY_ID_KSZ9897,
> +	.phy_id_mask	= 0x00ffffff,

Here as well.

> +	.name		= "Microchip KSZ9897",
> +	/* PHY_BASIC_FEATURES */
> +	.config_init	= kszphy_config_init,
> +	.config_aneg	= ksz8873mll_config_aneg,
> +	.read_status	= ksz8873mll_read_status,
> +	.suspend	= genphy_suspend,
> +	.resume		= genphy_resume,
>  } };
>  
>  module_phy_driver(ksphy_driver);
> @@ -1888,11 +1898,12 @@ static struct mdio_device_id __maybe_unused micrel_tbl[] = {
>  	{ PHY_ID_KSZ8041, MICREL_PHY_ID_MASK },
>  	{ PHY_ID_KSZ8051, MICREL_PHY_ID_MASK },
>  	{ PHY_ID_KSZ8061, MICREL_PHY_ID_MASK },
> -	{ PHY_ID_KSZ8081, MICREL_PHY_ID_MASK },
> +	{ PHY_ID_KSZ8081, 0x00ffffff },

And here.

>  	{ PHY_ID_KSZ8873MLL, MICREL_PHY_ID_MASK },
>  	{ PHY_ID_KSZ886X, MICREL_PHY_ID_MASK },
>  	{ PHY_ID_LAN8814, MICREL_PHY_ID_MASK },
>  	{ PHY_ID_LAN8804, MICREL_PHY_ID_MASK },
> +	{ PHY_ID_KSZ9897, 0x00ffffff },

etc.

	Andrew

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

* Re: [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table
  2022-02-04 13:36 ` [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table Enguerrand de Ribaucourt
@ 2022-02-04 14:06   ` Andrew Lunn
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Lunn @ 2022-02-04 14:06 UTC (permalink / raw)
  To: Enguerrand de Ribaucourt; +Cc: netdev, hkallweit1, linux

On Fri, Feb 04, 2022 at 02:36:35PM +0100, Enguerrand de Ribaucourt wrote:
> PHY_ID_KSZ9477 was supported but not added to the device table passed to
> MODULE_DEVICE_TABLE.
> 
> Signed-off-by: Enguerrand de Ribaucourt <enguerrand.de-ribaucourt@savoirfairelinux.com>

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

    Andrew

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

* Re: [PATCH 1/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support
  2022-02-04 14:05   ` Andrew Lunn
@ 2022-02-04 15:17     ` Enguerrand de Ribaucourt
  2022-02-04 17:04       ` Andrew Lunn
  0 siblings, 1 reply; 7+ messages in thread
From: Enguerrand de Ribaucourt @ 2022-02-04 15:17 UTC (permalink / raw)
  To: Andrew Lunn; +Cc: netdev, hkallweit1, linux

----- Original Message -----
> From: "Andrew Lunn" <andrew@lunn.ch>
> To: "Enguerrand de Ribaucourt" <enguerrand.de-ribaucourt@savoirfairelinux.com>
> Cc: netdev@vger.kernel.org, hkallweit1@gmail.com, linux@armlinux.org.uk
> Sent: Friday, February 4, 2022 3:05:05 PM
> Subject: Re: [PATCH 1/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support

> On Fri, Feb 04, 2022 at 02:36:34PM +0100, Enguerrand de Ribaucourt wrote:
> > Adding Microchip 9897 Phy included in KSZ9897 Switch.
> > The KSZ9897 shares the same prefix as the KSZ8081. The phy_id_mask was
> > updated to allow the KSZ9897 to be matched.

>> Signed-off-by: Enguerrand de Ribaucourt
> > <enguerrand.de-ribaucourt@savoirfairelinux.com>
> > ---
> > drivers/net/phy/micrel.c | 15 +++++++++++++--
> > include/linux/micrel_phy.h | 1 +
> > 2 files changed, 14 insertions(+), 2 deletions(-)

> > diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
> > index 44a24b99c894..9b2047e26449 100644
> > --- a/drivers/net/phy/micrel.c
> > +++ b/drivers/net/phy/micrel.c
> > @@ -1726,7 +1726,7 @@ static struct phy_driver ksphy_driver[] = {
> > }, {
> > .phy_id = PHY_ID_KSZ8081,
> > .name = "Micrel KSZ8081 or KSZ8091",
> > - .phy_id_mask = MICREL_PHY_ID_MASK,
> > + .phy_id_mask = 0x00ffffff,

> You can probably use PHY_ID_MATCH_EXACT().

Thank you for your feedback! The rest of the driver always uses
this style instead of PHY_ID_MATCH_EXACT().
Shouldn't I stick to it for consistency in micrel.c ?

Example:
	.phy_id		= PHY_ID_KSZ8031,
	.phy_id_mask	= 0x00ffffff,
	.name		= "Micrel KSZ8031",


> > .flags = PHY_POLL_CABLE_TEST,
> > /* PHY_BASIC_FEATURES */
> > .driver_data = &ksz8081_type,
> > @@ -1869,6 +1869,16 @@ static struct phy_driver ksphy_driver[] = {
> > .config_init = kszphy_config_init,
> > .suspend = genphy_suspend,
> > .resume = genphy_resume,
> > +}, {
> > + .phy_id = PHY_ID_KSZ9897,
> > + .phy_id_mask = 0x00ffffff,

> Here as well.

> > + .name = "Microchip KSZ9897",
> > + /* PHY_BASIC_FEATURES */
> > + .config_init = kszphy_config_init,
> > + .config_aneg = ksz8873mll_config_aneg,
> > + .read_status = ksz8873mll_read_status,
> > + .suspend = genphy_suspend,
> > + .resume = genphy_resume,
> > } };

> > module_phy_driver(ksphy_driver);
>> @@ -1888,11 +1898,12 @@ static struct mdio_device_id __maybe_unused micrel_tbl[]
> > = {
> > { PHY_ID_KSZ8041, MICREL_PHY_ID_MASK },
> > { PHY_ID_KSZ8051, MICREL_PHY_ID_MASK },
> > { PHY_ID_KSZ8061, MICREL_PHY_ID_MASK },
> > - { PHY_ID_KSZ8081, MICREL_PHY_ID_MASK },
> > + { PHY_ID_KSZ8081, 0x00ffffff },

> And here.

> > { PHY_ID_KSZ8873MLL, MICREL_PHY_ID_MASK },
> > { PHY_ID_KSZ886X, MICREL_PHY_ID_MASK },
> > { PHY_ID_LAN8814, MICREL_PHY_ID_MASK },
> > { PHY_ID_LAN8804, MICREL_PHY_ID_MASK },
> > + { PHY_ID_KSZ9897, 0x00ffffff },

> etc.

> Andrew

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

* Re: [PATCH 1/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support
  2022-02-04 15:17     ` Enguerrand de Ribaucourt
@ 2022-02-04 17:04       ` Andrew Lunn
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Lunn @ 2022-02-04 17:04 UTC (permalink / raw)
  To: Enguerrand de Ribaucourt; +Cc: netdev, hkallweit1, linux

> > You can probably use PHY_ID_MATCH_EXACT().
> 
> Thank you for your feedback! The rest of the driver always uses
> this style instead of PHY_ID_MATCH_EXACT().

You could add another patch converting them. It looks like some could
also use PHY_ID_MATCH_MODEL(). Up to you, depending on how much time
you want to spend on this.

      Andrew

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

end of thread, other threads:[~2022-02-04 17:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-04 13:36 [PATCH 0/2] net: phy: micrel: add Microchip KSZ 9897 Switch PHY support Enguerrand de Ribaucourt
2022-02-04 13:36 ` [PATCH 1/2] " Enguerrand de Ribaucourt
2022-02-04 14:05   ` Andrew Lunn
2022-02-04 15:17     ` Enguerrand de Ribaucourt
2022-02-04 17:04       ` Andrew Lunn
2022-02-04 13:36 ` [PATCH 2/2] net: phy: micrel: add Microchip KSZ 9477 to the device table Enguerrand de Ribaucourt
2022-02-04 14:06   ` Andrew Lunn

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.