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:
Rafał Miłecki
2024-01-26 06:35:27 +01:00
parent 7441c2bef6
commit 2df8a0ccb0
21 changed files with 641 additions and 59 deletions

View File

@@ -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);

View File

@@ -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();

View File

@@ -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";

View File

@@ -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

View File

@@ -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);
}