mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 14:13:16 +00:00
45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
|
From b7bdb564eb5b2d0672d0c49d8b6b4c14196f71ca Mon Sep 17 00:00:00 2001
|
||
|
From: Phil Elwell <phil@raspberrypi.com>
|
||
|
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 <phil@raspberrypi.com>
|
||
|
---
|
||
|
drivers/net/phy/bcm-phy-ptp.c | 12 ++++++++++++
|
||
|
1 file changed, 12 insertions(+)
|
||
|
|
||
|
--- 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(st
|
||
|
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;
|
||
|
}
|