707-v6.8-05-net-phy-at803x-move-specific-DT-option-for-at8031-to.patch 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. From 900eef75cc5018e149c52fe305c9c3fe424c52a7 Mon Sep 17 00:00:00 2001
  2. From: Christian Marangi <[email protected]>
  3. Date: Fri, 8 Dec 2023 15:51:52 +0100
  4. Subject: [PATCH 05/13] net: phy: at803x: move specific DT option for at8031 to
  5. specific probe
  6. Move specific DT options for at8031 to specific probe to tidy things up
  7. and make at803x_parse_dt more generic.
  8. Signed-off-by: Christian Marangi <[email protected]>
  9. Reviewed-by: Andrew Lunn <[email protected]>
  10. Signed-off-by: David S. Miller <[email protected]>
  11. ---
  12. drivers/net/phy/at803x.c | 55 ++++++++++++++++++++++------------------
  13. 1 file changed, 31 insertions(+), 24 deletions(-)
  14. --- a/drivers/net/phy/at803x.c
  15. +++ b/drivers/net/phy/at803x.c
  16. @@ -825,30 +825,6 @@ static int at803x_parse_dt(struct phy_de
  17. }
  18. }
  19. - /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
  20. - * options.
  21. - */
  22. - if (phydev->drv->phy_id == ATH8031_PHY_ID) {
  23. - if (of_property_read_bool(node, "qca,keep-pll-enabled"))
  24. - priv->flags |= AT803X_KEEP_PLL_ENABLED;
  25. -
  26. - ret = at8031_register_regulators(phydev);
  27. - if (ret < 0)
  28. - return ret;
  29. -
  30. - ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
  31. - "vddio");
  32. - if (ret) {
  33. - phydev_err(phydev, "failed to get VDDIO regulator\n");
  34. - return ret;
  35. - }
  36. -
  37. - /* Only AR8031/8033 support 1000Base-X for SFP modules */
  38. - ret = phy_sfp_probe(phydev, &at803x_sfp_ops);
  39. - if (ret < 0)
  40. - return ret;
  41. - }
  42. -
  43. return 0;
  44. }
  45. @@ -1582,6 +1558,30 @@ static int at803x_cable_test_start(struc
  46. return 0;
  47. }
  48. +static int at8031_parse_dt(struct phy_device *phydev)
  49. +{
  50. + struct device_node *node = phydev->mdio.dev.of_node;
  51. + struct at803x_priv *priv = phydev->priv;
  52. + int ret;
  53. +
  54. + if (of_property_read_bool(node, "qca,keep-pll-enabled"))
  55. + priv->flags |= AT803X_KEEP_PLL_ENABLED;
  56. +
  57. + ret = at8031_register_regulators(phydev);
  58. + if (ret < 0)
  59. + return ret;
  60. +
  61. + ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
  62. + "vddio");
  63. + if (ret) {
  64. + phydev_err(phydev, "failed to get VDDIO regulator\n");
  65. + return ret;
  66. + }
  67. +
  68. + /* Only AR8031/8033 support 1000Base-X for SFP modules */
  69. + return phy_sfp_probe(phydev, &at803x_sfp_ops);
  70. +}
  71. +
  72. static int at8031_probe(struct phy_device *phydev)
  73. {
  74. int ret;
  75. @@ -1590,6 +1590,13 @@ static int at8031_probe(struct phy_devic
  76. if (ret)
  77. return ret;
  78. + /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
  79. + * options.
  80. + */
  81. + ret = at8031_parse_dt(phydev);
  82. + if (ret)
  83. + return ret;
  84. +
  85. /* Disable WoL in 1588 register which is enabled
  86. * by default
  87. */