* [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
* 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
* [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 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
* 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