From 0deefc5c2e7344009b4b04525acf3e7681ff9ca1 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Sat, 5 Nov 2022 11:46:08 +0000 Subject: [PATCH] net: phy: BCM54210PE does not support PTP BCM54213PE is an Ethernet PHY that supports PTP hardware timestamping. BCM54210PW ia another Ethernet PHY, but one without PTP support. Unfortunately the two PHYs return the same ID when queried, so some extra information is required to determine whether the PHY is PTP- capable. There are two Raspberry Pi products that use these PHYs - Pi 4B and CM4 - and fortunately they use different PHY addresses, so use that as a differentiator. Choose to treat a PHY with the same ID but another address as a BCM54210PE, which seems more common. See: https://github.com/raspberrypi/linux/issues/5104 Signed-off-by: Phil Elwell --- drivers/net/phy/bcm-phy-ptp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/net/phy/bcm-phy-ptp.c b/drivers/net/phy/bcm-phy-ptp.c index ef00d6163061fa..30ee23e73a4b3e 100644 --- a/drivers/net/phy/bcm-phy-ptp.c +++ b/drivers/net/phy/bcm-phy-ptp.c @@ -916,6 +916,18 @@ struct bcm_ptp_private *bcm_ptp_probe(struct phy_device *phydev) switch (BRCM_PHY_MODEL(phydev)) { case PHY_ID_BCM54210E: break; +#ifdef PHY_ID_BCM54213PE + case PHY_ID_BCM54213PE: + switch (phydev->mdio.addr) { + case 0: // CM4 - this is a BCM54210PE which supports PTP + break; + case 1: // 4B - this is a BCM54213PE which doesn't + return NULL; + default: // Unknown - assume it's BCM54210PE + break; + } + break; +#endif default: return NULL; }