2
0

736-net-phy-at803x-allow-to-configure-via-dt.patch 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. --- a/drivers/net/phy/at803x.c
  2. +++ b/drivers/net/phy/at803x.c
  3. @@ -354,6 +354,14 @@ static int at803x_config_init(struct phy
  4. AT803X_DEBUG_TX_CLK_DLY_EN, 0);
  5. }
  6. +#ifdef CONFIG_OF_MDIO
  7. + if (phydev->mdio.dev.of_node &&
  8. + of_property_read_bool(phydev->mdio.dev.of_node,
  9. + "at803x-disable-smarteee")) {
  10. + at803x_disable_smarteee(phydev);
  11. + }
  12. +#endif
  13. +
  14. return 0;
  15. }
  16. @@ -392,6 +400,7 @@ static void at803x_link_change_notify(st
  17. {
  18. struct at803x_priv *priv = phydev->priv;
  19. struct at803x_platform_data *pdata;
  20. + u8 fixup_rgmii_tx_delay = 0;
  21. pdata = dev_get_platdata(&phydev->mdio.dev);
  22. /*
  23. @@ -421,8 +430,19 @@ static void at803x_link_change_notify(st
  24. } else {
  25. priv->phy_reset = false;
  26. }
  27. - if (pdata && pdata->fixup_rgmii_tx_delay &&
  28. - phydev->speed != priv->prev_speed) {
  29. +
  30. + if (pdata && pdata->fixup_rgmii_tx_delay)
  31. + fixup_rgmii_tx_delay = 1;
  32. +
  33. +#ifdef CONFIG_OF_MDIO
  34. + if (phydev->mdio.dev.of_node &&
  35. + of_property_read_bool(phydev->mdio.dev.of_node,
  36. + "at803x-fixup-rgmii-tx-delay")) {
  37. + fixup_rgmii_tx_delay = 1;
  38. + }
  39. +#endif
  40. +
  41. + if (fixup_rgmii_tx_delay && phydev->speed != priv->prev_speed) {
  42. switch (phydev->speed) {
  43. case SPEED_10:
  44. case SPEED_100: