822-rgmii-fixed-link.patch 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From f27ef8941ca29b2d10428754be51e8ee06bb1263 Mon Sep 17 00:00:00 2001
  2. From: Mathew McBride <[email protected]>
  3. Date: Mon, 7 Aug 2017 10:19:48 +1000
  4. Subject: [PATCH] Recognize when an RGMII Link is set as fixed (in the device
  5. tree) and set up the MAC accordingly
  6. ---
  7. drivers/net/ethernet/freescale/sdk_dpaa/mac.c | 1
  8. drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/memac.c | 13 ++++++++++
  9. 2 files changed, 14 insertions(+)
  10. --- a/drivers/net/ethernet/freescale/sdk_dpaa/mac.c
  11. +++ b/drivers/net/ethernet/freescale/sdk_dpaa/mac.c
  12. @@ -386,6 +386,7 @@ static int __cold mac_probe(struct platf
  13. mac_dev->fixed_link->duplex = phy->duplex;
  14. mac_dev->fixed_link->pause = phy->pause;
  15. mac_dev->fixed_link->asym_pause = phy->asym_pause;
  16. + printk(KERN_INFO "Setting up fixed link, speed %d duplex %d\n", mac_dev->fixed_link->speed, mac_dev->fixed_link->duplex);
  17. }
  18. _errno = mac_dev->init(mac_dev);
  19. --- a/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/memac.c
  20. +++ b/drivers/net/ethernet/freescale/sdk_fman/Peripherals/FM/MAC/memac.c
  21. @@ -36,6 +36,8 @@
  22. @Description FM mEMAC driver
  23. *//***************************************************************************/
  24. +#include <../../../../sdk_dpaa/mac.h>
  25. +#include <linux/phy_fixed.h>
  26. #include "std_ext.h"
  27. #include "string_ext.h"
  28. @@ -48,6 +50,8 @@
  29. #include "memac.h"
  30. +static t_Error MemacAdjustLink(t_Handle h_Memac, e_EnetSpeed speed, bool fullDuplex);
  31. +
  32. /*****************************************************************************/
  33. /* Internal routines */
  34. /*****************************************************************************/
  35. @@ -276,11 +280,20 @@ static t_Error MemacEnable(t_Handle h_Me
  36. {
  37. t_Memac *p_Memac = (t_Memac *)h_Memac;
  38. + struct mac_device *mac_dev = (struct mac_device *)p_Memac->h_App;
  39. +
  40. SANITY_CHECK_RETURN_ERROR(p_Memac, E_INVALID_HANDLE);
  41. SANITY_CHECK_RETURN_ERROR(!p_Memac->p_MemacDriverParam, E_INVALID_STATE);
  42. fman_memac_enable(p_Memac->p_MemMap, (mode & e_COMM_MODE_RX), (mode & e_COMM_MODE_TX));
  43. + if (ENET_INTERFACE_FROM_MODE(p_Memac->enetMode) == e_ENET_IF_RGMII) {
  44. + if (mac_dev->fixed_link) {
  45. + printk(KERN_INFO "This is a fixed-link, forcing speed %d duplex %d\n",mac_dev->fixed_link->speed,mac_dev->fixed_link->duplex);
  46. + MemacAdjustLink(h_Memac,mac_dev->fixed_link->speed,mac_dev->fixed_link->duplex);
  47. + }
  48. + }
  49. +
  50. return E_OK;
  51. }