kernel: 5.15: backport v6.1 PHY changes required for Aquantia
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
@@ -21,7 +21,7 @@ Submitted-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -984,6 +984,10 @@ struct phy_driver {
|
||||
@@ -1009,6 +1009,10 @@ struct phy_driver {
|
||||
int (*led_blink_set)(struct phy_device *dev, u8 index,
|
||||
unsigned long *delay_on,
|
||||
unsigned long *delay_off);
|
||||
|
||||
@@ -21,7 +21,7 @@ Submitted-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/drivers/net/phy/phylink.c
|
||||
+++ b/drivers/net/phy/phylink.c
|
||||
@@ -1991,6 +1991,11 @@ int phylink_ethtool_ksettings_set(struct
|
||||
@@ -1994,6 +1994,11 @@ int phylink_ethtool_ksettings_set(struct
|
||||
* the presence of a PHY, this should not be changed as that
|
||||
* should be determined from the media side advertisement.
|
||||
*/
|
||||
@@ -33,7 +33,7 @@ Submitted-by: John Crispin <john@phrozen.org>
|
||||
return phy_ethtool_ksettings_set(pl->phydev, kset);
|
||||
}
|
||||
|
||||
@@ -2294,8 +2299,11 @@ int phylink_ethtool_get_eee(struct phyli
|
||||
@@ -2297,8 +2302,11 @@ int phylink_ethtool_get_eee(struct phyli
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
@@ -46,7 +46,7 @@ Submitted-by: John Crispin <john@phrozen.org>
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -2312,8 +2320,11 @@ int phylink_ethtool_set_eee(struct phyli
|
||||
@@ -2315,8 +2323,11 @@ int phylink_ethtool_set_eee(struct phyli
|
||||
|
||||
ASSERT_RTNL();
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Submitted-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
|
||||
--- a/drivers/net/phy/phylink.c
|
||||
+++ b/drivers/net/phy/phylink.c
|
||||
@@ -408,6 +408,7 @@ void phylink_get_linkmodes(unsigned long
|
||||
@@ -410,6 +410,7 @@ void phylink_get_linkmodes(unsigned long
|
||||
|
||||
case PHY_INTERFACE_MODE_XGMII:
|
||||
case PHY_INTERFACE_MODE_RXAUI:
|
||||
@@ -23,7 +23,7 @@ Submitted-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
case PHY_INTERFACE_MODE_XAUI:
|
||||
case PHY_INTERFACE_MODE_10GBASER:
|
||||
case PHY_INTERFACE_MODE_10GKR:
|
||||
@@ -662,6 +663,7 @@ static int phylink_parse_mode(struct phy
|
||||
@@ -665,6 +666,7 @@ static int phylink_parse_mode(struct phy
|
||||
fallthrough;
|
||||
case PHY_INTERFACE_MODE_USXGMII:
|
||||
case PHY_INTERFACE_MODE_10GKR:
|
||||
@@ -33,7 +33,7 @@ Submitted-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
phylink_set(pl->supported, 10baseT_Full);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -139,6 +139,7 @@ typedef enum {
|
||||
@@ -141,6 +141,7 @@ typedef enum {
|
||||
PHY_INTERFACE_MODE_XGMII,
|
||||
PHY_INTERFACE_MODE_XLGMII,
|
||||
PHY_INTERFACE_MODE_MOCA,
|
||||
@@ -41,7 +41,7 @@ Submitted-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
PHY_INTERFACE_MODE_QSGMII,
|
||||
PHY_INTERFACE_MODE_TRGMII,
|
||||
PHY_INTERFACE_MODE_100BASEX,
|
||||
@@ -244,6 +245,8 @@ static inline const char *phy_modes(phy_
|
||||
@@ -248,6 +249,8 @@ static inline const char *phy_modes(phy_
|
||||
return "xlgmii";
|
||||
case PHY_INTERFACE_MODE_MOCA:
|
||||
return "moca";
|
||||
|
||||
@@ -21,7 +21,7 @@ Submitted-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -280,7 +280,7 @@ static inline const char *phy_modes(phy_
|
||||
@@ -287,7 +287,7 @@ static inline const char *phy_modes(phy_
|
||||
#define PHY_INIT_TIMEOUT 100000
|
||||
#define PHY_FORCE_TIMEOUT 10
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
* @dev: target MDIO device
|
||||
--- a/drivers/net/phy/phy-core.c
|
||||
+++ b/drivers/net/phy/phy-core.c
|
||||
@@ -482,10 +482,16 @@ int __phy_read_mmd(struct phy_device *ph
|
||||
@@ -556,10 +556,16 @@ int __phy_read_mmd(struct phy_device *ph
|
||||
struct mii_bus *bus = phydev->mdio.bus;
|
||||
int phy_addr = phydev->mdio.addr;
|
||||
|
||||
@@ -464,7 +464,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
}
|
||||
return val;
|
||||
}
|
||||
@@ -538,12 +544,18 @@ int __phy_write_mmd(struct phy_device *p
|
||||
@@ -612,12 +618,18 @@ int __phy_write_mmd(struct phy_device *p
|
||||
struct mii_bus *bus = phydev->mdio.bus;
|
||||
int phy_addr = phydev->mdio.addr;
|
||||
|
||||
@@ -487,7 +487,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -749,6 +761,13 @@ EXPORT_SYMBOL_GPL(phy_modify_mmd);
|
||||
@@ -823,6 +835,13 @@ EXPORT_SYMBOL_GPL(phy_modify_mmd);
|
||||
|
||||
static int __phy_read_page(struct phy_device *phydev)
|
||||
{
|
||||
@@ -501,7 +501,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
if (WARN_ONCE(!phydev->drv->read_page, "read_page callback not available, PHY driver not loaded?\n"))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@@ -757,6 +776,13 @@ static int __phy_read_page(struct phy_de
|
||||
@@ -831,6 +850,13 @@ static int __phy_read_page(struct phy_de
|
||||
|
||||
static int __phy_write_page(struct phy_device *phydev, int page)
|
||||
{
|
||||
@@ -515,7 +515,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
if (WARN_ONCE(!phydev->drv->write_page, "write_page callback not available, PHY driver not loaded?\n"))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@@ -858,6 +884,18 @@ int phy_read_paged(struct phy_device *ph
|
||||
@@ -932,6 +958,18 @@ int phy_read_paged(struct phy_device *ph
|
||||
{
|
||||
int ret = 0, oldpage;
|
||||
|
||||
@@ -534,7 +534,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
oldpage = phy_select_page(phydev, page);
|
||||
if (oldpage >= 0)
|
||||
ret = __phy_read(phydev, regnum);
|
||||
@@ -879,6 +917,18 @@ int phy_write_paged(struct phy_device *p
|
||||
@@ -953,6 +991,18 @@ int phy_write_paged(struct phy_device *p
|
||||
{
|
||||
int ret = 0, oldpage;
|
||||
|
||||
@@ -665,7 +665,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
#define MDIO_DEVICE_IS_PHY 0x80000000
|
||||
|
||||
/**
|
||||
@@ -421,6 +422,22 @@ struct mii_bus {
|
||||
@@ -428,6 +429,22 @@ struct mii_bus {
|
||||
|
||||
/** @shared: shared state across different PHYs */
|
||||
struct phy_package_shared *shared[PHY_MAX_ADDR];
|
||||
@@ -688,7 +688,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
};
|
||||
#define to_mii_bus(d) container_of(d, struct mii_bus, dev)
|
||||
|
||||
@@ -1795,6 +1812,66 @@ static inline int __phy_package_read(str
|
||||
@@ -1825,6 +1842,66 @@ static inline int __phy_package_read(str
|
||||
return __mdiobus_read(phydev->mdio.bus, shared->addr, regnum);
|
||||
}
|
||||
|
||||
@@ -755,7 +755,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
static inline int phy_package_write(struct phy_device *phydev,
|
||||
u32 regnum, u16 val)
|
||||
{
|
||||
@@ -1817,6 +1894,72 @@ static inline int __phy_package_write(st
|
||||
@@ -1847,6 +1924,72 @@ static inline int __phy_package_write(st
|
||||
return __mdiobus_write(phydev->mdio.bus, shared->addr, regnum, val);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user