difos/target/linux/bcm27xx/patches-6.12/950-0160-net-phy-BCM54210PE-does-not-support-PTP.patch
Álvaro Fernández Rojas 8f9e91ad03 bcm27xx: add 6.12 patches from RPi repo
These patches were generated from:
https://github.com/raspberrypi/linux/commits/rpi-6.12.y
With the following command:
git format-patch -N v6.12.27..HEAD
(HEAD -> 8d3206ee456a5ecdf9ddbfd8e5e231e4f0cd716e)

Exceptions:
- (def)configs patches
- github workflows patches
- applied & reverted patches
- readme patches
- wireless patches

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-05-21 11:32:18 +02:00

44 lines
1.5 KiB
Diff

From 6965f374819de4d1b808afe9d393b3a4f2202e21 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
@@ -913,6 +913,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;
}