ramips: port 0034-NET-multi-phy-support.patch to 5.4
This hack is needed for old ethernet driver: On mt7620, we have two exposed RGMII ports that connects to builtin switch. However, swconfig has no way to interact with phy subsystem. As a result, we have to register both PHYs to ethernet mac instead and this patch prevents main ethernet interface from going down due to phy link changes. Also rename the patch for its actual purpose. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
This commit is contained in:
parent
05dee5833a
commit
6fcba5eec3
|
@ -0,0 +1,47 @@
|
||||||
|
From 0b6eb1e68290243d439ee330ea8d0b239a5aec69 Mon Sep 17 00:00:00 2001
|
||||||
|
From: John Crispin <blogic@openwrt.org>
|
||||||
|
Date: Sun, 27 Jul 2014 09:38:50 +0100
|
||||||
|
Subject: [PATCH 34/53] NET: multi phy support
|
||||||
|
|
||||||
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
---
|
||||||
|
drivers/net/phy/phy.c | 9 ++++++---
|
||||||
|
include/linux/phy.h | 1 +
|
||||||
|
2 files changed, 7 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
--- a/drivers/net/phy/phy.c
|
||||||
|
+++ b/drivers/net/phy/phy.c
|
||||||
|
@@ -546,7 +546,10 @@ static int phy_check_link_status(struct
|
||||||
|
phy_link_up(phydev);
|
||||||
|
} else if (!phydev->link && phydev->state != PHY_NOLINK) {
|
||||||
|
phydev->state = PHY_NOLINK;
|
||||||
|
- phy_link_down(phydev, true);
|
||||||
|
+ if (!phydev->no_auto_carrier_off)
|
||||||
|
+ phy_link_down(phydev, true);
|
||||||
|
+ else
|
||||||
|
+ phy_link_down(phydev, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
@@ -926,7 +929,10 @@ void phy_state_machine(struct work_struc
|
||||||
|
case PHY_HALTED:
|
||||||
|
if (phydev->link) {
|
||||||
|
phydev->link = 0;
|
||||||
|
- phy_link_down(phydev, true);
|
||||||
|
+ if (!phydev->no_auto_carrier_off)
|
||||||
|
+ phy_link_down(phydev, true);
|
||||||
|
+ else
|
||||||
|
+ phy_link_down(phydev, false);
|
||||||
|
}
|
||||||
|
do_suspend = true;
|
||||||
|
break;
|
||||||
|
--- a/include/linux/phy.h
|
||||||
|
+++ b/include/linux/phy.h
|
||||||
|
@@ -380,6 +380,7 @@ struct phy_device {
|
||||||
|
unsigned suspended_by_mdio_bus:1;
|
||||||
|
unsigned sysfs_links:1;
|
||||||
|
unsigned loopback_enabled:1;
|
||||||
|
+ unsigned no_auto_carrier_off:1;
|
||||||
|
|
||||||
|
unsigned autoneg:1;
|
||||||
|
/* The most recently read link state */
|
Loading…
Reference in New Issue