711-v6.8-04-net-phy-at803x-make-read_status-more-generic.patch 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From c34d9452d4e5d98a655d7b625e85466320885416 Mon Sep 17 00:00:00 2001
  2. From: Christian Marangi <[email protected]>
  3. Date: Thu, 4 Jan 2024 22:30:41 +0100
  4. Subject: [PATCH 4/4] net: phy: at803x: make read_status more generic
  5. Make read_status more generic in preparation on moving it to shared
  6. library as other PHY Family Driver will have the exact same
  7. implementation.
  8. The only specific part was a check for AR8031/33 if 1000basex was used.
  9. The check is moved to a dedicated function specific for those PHYs.
  10. Signed-off-by: Christian Marangi <[email protected]>
  11. Reviewed-by: Simon Horman <[email protected]>
  12. Signed-off-by: David S. Miller <[email protected]>
  13. ---
  14. drivers/net/phy/at803x.c | 17 ++++++++++++-----
  15. 1 file changed, 12 insertions(+), 5 deletions(-)
  16. --- a/drivers/net/phy/at803x.c
  17. +++ b/drivers/net/phy/at803x.c
  18. @@ -1020,13 +1020,9 @@ static int at803x_read_specific_status(s
  19. static int at803x_read_status(struct phy_device *phydev)
  20. {
  21. - struct at803x_priv *priv = phydev->priv;
  22. struct at803x_ss_mask ss_mask = { 0 };
  23. int err, old_link = phydev->link;
  24. - if (priv->is_1000basex)
  25. - return genphy_c37_read_status(phydev);
  26. -
  27. /* Update the link, but return if there was an error */
  28. err = genphy_update_link(phydev);
  29. if (err)
  30. @@ -1618,6 +1614,17 @@ static int at8031_config_intr(struct phy
  31. return at803x_config_intr(phydev);
  32. }
  33. +/* AR8031 and AR8033 share the same read status logic */
  34. +static int at8031_read_status(struct phy_device *phydev)
  35. +{
  36. + struct at803x_priv *priv = phydev->priv;
  37. +
  38. + if (priv->is_1000basex)
  39. + return genphy_c37_read_status(phydev);
  40. +
  41. + return at803x_read_status(phydev);
  42. +}
  43. +
  44. /* AR8031 and AR8035 share the same cable test get status reg */
  45. static int at8031_cable_test_get_status(struct phy_device *phydev,
  46. bool *finished)
  47. @@ -2281,7 +2288,7 @@ static struct phy_driver at803x_driver[]
  48. .read_page = at803x_read_page,
  49. .write_page = at803x_write_page,
  50. .get_features = at803x_get_features,
  51. - .read_status = at803x_read_status,
  52. + .read_status = at8031_read_status,
  53. .config_intr = at8031_config_intr,
  54. .handle_interrupt = at803x_handle_interrupt,
  55. .get_tunable = at803x_get_tunable,