linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset()
@ 2020-04-28 23:06 Michael Walle
  2020-04-28 23:06 ` [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask Michael Walle
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Michael Walle @ 2020-04-28 23:06 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Russell King,
	David S . Miller, Michael Walle

Set the .soft_reset() op to be sure there will be a reset even if there
is no hardware reset line registered.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
changes since v1:
 - added reviewed-by tags

 drivers/net/phy/bcm54140.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/phy/bcm54140.c b/drivers/net/phy/bcm54140.c
index 7341f0126cc4..eb5dbacc1253 100644
--- a/drivers/net/phy/bcm54140.c
+++ b/drivers/net/phy/bcm54140.c
@@ -862,6 +862,7 @@ static struct phy_driver bcm54140_drivers[] = {
 		.probe		= bcm54140_probe,
 		.suspend	= genphy_suspend,
 		.resume		= genphy_resume,
+		.soft_reset	= genphy_soft_reset,
 		.get_tunable	= bcm54140_get_tunable,
 		.set_tunable	= bcm54140_set_tunable,
 	},
-- 
2.20.1


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

* [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask
  2020-04-28 23:06 [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() Michael Walle
@ 2020-04-28 23:06 ` Michael Walle
  2020-05-01  3:56   ` David Miller
  2020-04-28 23:06 ` [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips Michael Walle
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Michael Walle @ 2020-04-28 23:06 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Russell King,
	David S . Miller, Michael Walle

Broadcom defines the bits for this PHY as follows:
  { oui[24:3], model[6:0], revision[2:0] }

Thus we have to mask the lower three bits only.

Fixes: 6937602ed3f9 ("net: phy: add Broadcom BCM54140 support")
Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
changes since v1:
 - added reviewed-by tags

 drivers/net/phy/bcm54140.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/bcm54140.c b/drivers/net/phy/bcm54140.c
index eb5dbacc1253..edafc9dc2f63 100644
--- a/drivers/net/phy/bcm54140.c
+++ b/drivers/net/phy/bcm54140.c
@@ -852,7 +852,7 @@ static int bcm54140_set_tunable(struct phy_device *phydev,
 static struct phy_driver bcm54140_drivers[] = {
 	{
 		.phy_id         = PHY_ID_BCM54140,
-		.phy_id_mask    = 0xfffffff0,
+		.phy_id_mask    = 0xfffffff8,
 		.name           = "Broadcom BCM54140",
 		.features       = PHY_GBIT_FEATURES,
 		.config_init    = bcm54140_config_init,
@@ -870,7 +870,7 @@ static struct phy_driver bcm54140_drivers[] = {
 module_phy_driver(bcm54140_drivers);
 
 static struct mdio_device_id __maybe_unused bcm54140_tbl[] = {
-	{ PHY_ID_BCM54140, 0xfffffff0 },
+	{ PHY_ID_BCM54140, 0xfffffff8 },
 	{ }
 };
 
-- 
2.20.1


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

* [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips
  2020-04-28 23:06 [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() Michael Walle
  2020-04-28 23:06 ` [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask Michael Walle
@ 2020-04-28 23:06 ` Michael Walle
  2020-05-01  3:56   ` David Miller
  2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
  2020-05-01  3:56 ` [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() David Miller
  3 siblings, 1 reply; 10+ messages in thread
From: Michael Walle @ 2020-04-28 23:06 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Russell King,
	David S . Miller, Michael Walle

The lower three bits of the phy_id specifies the chip stepping. The
workaround is specifically for the B0 stepping. Apply it only on these
chips.

Signed-off-by: Michael Walle <michael@walle.cc>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
---
changes since v1:
 - added reviewed-by tags

 drivers/net/phy/bcm54140.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/bcm54140.c b/drivers/net/phy/bcm54140.c
index edafc9dc2f63..d73cbddbc69b 100644
--- a/drivers/net/phy/bcm54140.c
+++ b/drivers/net/phy/bcm54140.c
@@ -115,6 +115,9 @@
 #define BCM54140_HWMON_IN_ALARM_BIT(ch) ((ch) ? BCM54140_RDB_MON_ISR_3V3 \
 					      : BCM54140_RDB_MON_ISR_1V0)
 
+#define BCM54140_PHY_ID_REV(phy_id)	((phy_id) & 0x7)
+#define BCM54140_REV_B0			1
+
 #define BCM54140_DEFAULT_DOWNSHIFT 5
 #define BCM54140_MAX_DOWNSHIFT 9
 
@@ -632,9 +635,11 @@ static int bcm54140_config_init(struct phy_device *phydev)
 	int ret;
 
 	/* Apply hardware errata */
-	ret = bcm54140_b0_workaround(phydev);
-	if (ret)
-		return ret;
+	if (BCM54140_PHY_ID_REV(phydev->phy_id) == BCM54140_REV_B0) {
+		ret = bcm54140_b0_workaround(phydev);
+		if (ret)
+			return ret;
+	}
 
 	/* Unmask events we are interested in. */
 	reg &= ~(BCM54140_RDB_INT_DUPLEX |
-- 
2.20.1


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

* [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID
  2020-04-28 23:06 [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() Michael Walle
  2020-04-28 23:06 ` [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask Michael Walle
  2020-04-28 23:06 ` [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips Michael Walle
@ 2020-04-28 23:06 ` Michael Walle
  2020-04-29  0:12   ` Andrew Lunn
                     ` (2 more replies)
  2020-05-01  3:56 ` [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() David Miller
  3 siblings, 3 replies; 10+ messages in thread
From: Michael Walle @ 2020-04-28 23:06 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Andrew Lunn, Florian Fainelli, Heiner Kallweit, Russell King,
	David S . Miller, Michael Walle

This PHY has two PHY IDs depending on its mode. Adjust the mask so that
it includes both IDs.

Signed-off-by: Michael Walle <michael@walle.cc>
---
changes since v1:
 - leave the PHY ID in brcmphy.h but clear the masked bit
 - fixed typo in commit message

 drivers/net/phy/bcm54140.c | 11 +++++++++--
 include/linux/brcmphy.h    |  2 +-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/net/phy/bcm54140.c b/drivers/net/phy/bcm54140.c
index d73cbddbc69b..b5325157206a 100644
--- a/drivers/net/phy/bcm54140.c
+++ b/drivers/net/phy/bcm54140.c
@@ -115,6 +115,13 @@
 #define BCM54140_HWMON_IN_ALARM_BIT(ch) ((ch) ? BCM54140_RDB_MON_ISR_3V3 \
 					      : BCM54140_RDB_MON_ISR_1V0)
 
+/* This PHY has two different PHY IDs depening on its MODE_SEL pin. This
+ * pin choses between 4x SGMII and QSGMII mode:
+ *   AE02_5009 4x SGMII
+ *   AE02_5019 QSGMII
+ */
+#define BCM54140_PHY_ID_MASK	0xffffffe8
+
 #define BCM54140_PHY_ID_REV(phy_id)	((phy_id) & 0x7)
 #define BCM54140_REV_B0			1
 
@@ -857,7 +864,7 @@ static int bcm54140_set_tunable(struct phy_device *phydev,
 static struct phy_driver bcm54140_drivers[] = {
 	{
 		.phy_id         = PHY_ID_BCM54140,
-		.phy_id_mask    = 0xfffffff8,
+		.phy_id_mask    = BCM54140_PHY_ID_MASK,
 		.name           = "Broadcom BCM54140",
 		.features       = PHY_GBIT_FEATURES,
 		.config_init    = bcm54140_config_init,
@@ -875,7 +882,7 @@ static struct phy_driver bcm54140_drivers[] = {
 module_phy_driver(bcm54140_drivers);
 
 static struct mdio_device_id __maybe_unused bcm54140_tbl[] = {
-	{ PHY_ID_BCM54140, 0xfffffff8 },
+	{ PHY_ID_BCM54140, BCM54140_PHY_ID_MASK },
 	{ }
 };
 
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
index 8be150e69c7c..58d0150acc3e 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -25,7 +25,7 @@
 #define PHY_ID_BCM5461			0x002060c0
 #define PHY_ID_BCM54612E		0x03625e60
 #define PHY_ID_BCM54616S		0x03625d10
-#define PHY_ID_BCM54140			0xae025019
+#define PHY_ID_BCM54140			0xae025009
 #define PHY_ID_BCM57780			0x03625d90
 #define PHY_ID_BCM89610			0x03625cd0
 
-- 
2.20.1


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

* Re: [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID
  2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
@ 2020-04-29  0:12   ` Andrew Lunn
  2020-04-29  4:16   ` Florian Fainelli
  2020-05-01  3:56   ` David Miller
  2 siblings, 0 replies; 10+ messages in thread
From: Andrew Lunn @ 2020-04-29  0:12 UTC (permalink / raw)
  To: Michael Walle
  Cc: netdev, linux-kernel, Florian Fainelli, Heiner Kallweit,
	Russell King, David S . Miller

On Wed, Apr 29, 2020 at 01:06:59AM +0200, Michael Walle wrote:
> This PHY has two PHY IDs depending on its mode. Adjust the mask so that
> it includes both IDs.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>

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

    Andrew

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

* Re: [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID
  2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
  2020-04-29  0:12   ` Andrew Lunn
@ 2020-04-29  4:16   ` Florian Fainelli
  2020-05-01  3:56   ` David Miller
  2 siblings, 0 replies; 10+ messages in thread
From: Florian Fainelli @ 2020-04-29  4:16 UTC (permalink / raw)
  To: Michael Walle, netdev, linux-kernel
  Cc: Andrew Lunn, Heiner Kallweit, Russell King, David S . Miller



On 4/28/2020 4:06 PM, Michael Walle wrote:
> This PHY has two PHY IDs depending on its mode. Adjust the mask so that
> it includes both IDs.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>

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

For future submissions to netdev, if you have a patch count > 1, please
include a cover letter:

Thanks!
-- 
Florian

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

* Re: [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset()
  2020-04-28 23:06 [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() Michael Walle
                   ` (2 preceding siblings ...)
  2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
@ 2020-05-01  3:56 ` David Miller
  3 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2020-05-01  3:56 UTC (permalink / raw)
  To: michael; +Cc: netdev, linux-kernel, andrew, f.fainelli, hkallweit1, linux

From: Michael Walle <michael@walle.cc>
Date: Wed, 29 Apr 2020 01:06:56 +0200

> Set the .soft_reset() op to be sure there will be a reset even if there
> is no hardware reset line registered.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Applied.

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

* Re: [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask
  2020-04-28 23:06 ` [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask Michael Walle
@ 2020-05-01  3:56   ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2020-05-01  3:56 UTC (permalink / raw)
  To: michael; +Cc: netdev, linux-kernel, andrew, f.fainelli, hkallweit1, linux

From: Michael Walle <michael@walle.cc>
Date: Wed, 29 Apr 2020 01:06:57 +0200

> Broadcom defines the bits for this PHY as follows:
>   { oui[24:3], model[6:0], revision[2:0] }
> 
> Thus we have to mask the lower three bits only.
> 
> Fixes: 6937602ed3f9 ("net: phy: add Broadcom BCM54140 support")
> Signed-off-by: Michael Walle <michael@walle.cc>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Applied.

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

* Re: [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips
  2020-04-28 23:06 ` [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips Michael Walle
@ 2020-05-01  3:56   ` David Miller
  0 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2020-05-01  3:56 UTC (permalink / raw)
  To: michael; +Cc: netdev, linux-kernel, andrew, f.fainelli, hkallweit1, linux

From: Michael Walle <michael@walle.cc>
Date: Wed, 29 Apr 2020 01:06:58 +0200

> The lower three bits of the phy_id specifies the chip stepping. The
> workaround is specifically for the B0 stepping. Apply it only on these
> chips.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>

Applied.

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

* Re: [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID
  2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
  2020-04-29  0:12   ` Andrew Lunn
  2020-04-29  4:16   ` Florian Fainelli
@ 2020-05-01  3:56   ` David Miller
  2 siblings, 0 replies; 10+ messages in thread
From: David Miller @ 2020-05-01  3:56 UTC (permalink / raw)
  To: michael; +Cc: netdev, linux-kernel, andrew, f.fainelli, hkallweit1, linux

From: Michael Walle <michael@walle.cc>
Date: Wed, 29 Apr 2020 01:06:59 +0200

> This PHY has two PHY IDs depending on its mode. Adjust the mask so that
> it includes both IDs.
> 
> Signed-off-by: Michael Walle <michael@walle.cc>

Applied.

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

end of thread, other threads:[~2020-05-01  3:56 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-28 23:06 [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() Michael Walle
2020-04-28 23:06 ` [PATCH net-next v2 2/4] net: phy: bcm54140: fix phy_id_mask Michael Walle
2020-05-01  3:56   ` David Miller
2020-04-28 23:06 ` [PATCH net-next v2 3/4] net: phy: bcm54140: apply the workaround on b0 chips Michael Walle
2020-05-01  3:56   ` David Miller
2020-04-28 23:06 ` [PATCH net-next v2 4/4] net: phy: bcm54140: add second PHY ID Michael Walle
2020-04-29  0:12   ` Andrew Lunn
2020-04-29  4:16   ` Florian Fainelli
2020-05-01  3:56   ` David Miller
2020-05-01  3:56 ` [PATCH net-next v2 1/4] net: phy: bcm54140: use genphy_soft_reset() David Miller

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