A recently introduced hardware revision of the Cudy WR3000H router uses the Motorcomm YT8821 PHY chip on its 2.5G WAN port. Backport the YT8821 enablement patch to the 6.6 kernel to make the new WR3000H supportable on OpenWrt 24.10. Signed-off-by: Jakub Vaněk <linuxtardis@gmail.com> Link: https://github.com/openwrt/openwrt/pull/21531 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> (cherry picked from commit f3de64751cfe5ff663ec8e168d184c9ede36b5e5)
48 lines
1.7 KiB
Diff
48 lines
1.7 KiB
Diff
From 8d878c87b5c45ae64b0aecd4aac71e210d19173f Mon Sep 17 00:00:00 2001
|
|
From: Frank Sae <Frank.Sae@motor-comm.com>
|
|
Date: Sun, 1 Sep 2024 01:35:25 -0700
|
|
Subject: [PATCH] net: phy: Optimize phy speed mask to be compatible to yt8821
|
|
|
|
yt8521 and yt8531s as Gigabit transceiver use bit15:14(bit9 reserved
|
|
default 0) as phy speed mask, yt8821 as 2.5G transceiver uses bit9 bit15:14
|
|
as phy speed mask.
|
|
|
|
Be compatible to yt8821, reform phy speed mask and phy speed macro.
|
|
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: Frank Sae <Frank.Sae@motor-comm.com>
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
---
|
|
drivers/net/phy/motorcomm.c | 13 +++++--------
|
|
1 file changed, 5 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/net/phy/motorcomm.c
|
|
+++ b/drivers/net/phy/motorcomm.c
|
|
@@ -46,12 +46,10 @@
|
|
|
|
/* Specific Status Register */
|
|
#define YTPHY_SPECIFIC_STATUS_REG 0x11
|
|
-#define YTPHY_SSR_SPEED_MODE_OFFSET 14
|
|
-
|
|
-#define YTPHY_SSR_SPEED_MODE_MASK (BIT(15) | BIT(14))
|
|
-#define YTPHY_SSR_SPEED_10M 0x0
|
|
-#define YTPHY_SSR_SPEED_100M 0x1
|
|
-#define YTPHY_SSR_SPEED_1000M 0x2
|
|
+#define YTPHY_SSR_SPEED_MASK ((0x3 << 14) | BIT(9))
|
|
+#define YTPHY_SSR_SPEED_10M ((0x0 << 14))
|
|
+#define YTPHY_SSR_SPEED_100M ((0x1 << 14))
|
|
+#define YTPHY_SSR_SPEED_1000M ((0x2 << 14))
|
|
#define YTPHY_SSR_DUPLEX_OFFSET 13
|
|
#define YTPHY_SSR_DUPLEX BIT(13)
|
|
#define YTPHY_SSR_PAGE_RECEIVED BIT(12)
|
|
@@ -1187,8 +1185,7 @@ static int yt8521_adjust_status(struct p
|
|
else
|
|
duplex = DUPLEX_FULL; /* for fiber, it always DUPLEX_FULL */
|
|
|
|
- speed_mode = (status & YTPHY_SSR_SPEED_MODE_MASK) >>
|
|
- YTPHY_SSR_SPEED_MODE_OFFSET;
|
|
+ speed_mode = status & YTPHY_SSR_SPEED_MASK;
|
|
|
|
switch (speed_mode) {
|
|
case YTPHY_SSR_SPEED_10M:
|