keystone_serdes.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Texas Instruments Keystone SerDes driver
  3. *
  4. * (C) Copyright 2014
  5. * Texas Instruments Incorporated, <www.ti.com>
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. #ifndef __TI_KEYSTONE_SERDES_H__
  10. #define __TI_KEYSTONE_SERDES_H__
  11. /* SERDES Reference clock */
  12. enum ks2_serdes_clock {
  13. SERDES_CLOCK_100M, /* 100 MHz */
  14. SERDES_CLOCK_122P88M, /* 122.88 MHz */
  15. SERDES_CLOCK_125M, /* 125 MHz */
  16. SERDES_CLOCK_156P25M, /* 156.25 MHz */
  17. SERDES_CLOCK_312P5M, /* 312.5 MHz */
  18. };
  19. /* SERDES Lane Baud Rate */
  20. enum ks2_serdes_rate {
  21. SERDES_RATE_4P9152G, /* 4.9152 GBaud */
  22. SERDES_RATE_5G, /* 5 GBaud */
  23. SERDES_RATE_6P144G, /* 6.144 GBaud */
  24. SERDES_RATE_6P25G, /* 6.25 GBaud */
  25. SERDES_RATE_10p3125g, /* 10.3215 GBaud */
  26. SERDES_RATE_12p5g, /* 12.5 GBaud */
  27. };
  28. /* SERDES Lane Rate Mode */
  29. enum ks2_serdes_rate_mode {
  30. SERDES_FULL_RATE,
  31. SERDES_HALF_RATE,
  32. SERDES_QUARTER_RATE,
  33. };
  34. /* SERDES PHY TYPE */
  35. enum ks2_serdes_interface {
  36. SERDES_PHY_SGMII,
  37. SERDES_PHY_PCSR, /* XGE SERDES */
  38. };
  39. struct ks2_serdes {
  40. enum ks2_serdes_clock clk;
  41. enum ks2_serdes_rate rate;
  42. enum ks2_serdes_rate_mode rate_mode;
  43. enum ks2_serdes_interface intf;
  44. u32 loopback;
  45. };
  46. int ks2_serdes_init(u32 base, struct ks2_serdes *serdes, u32 num_lanes);
  47. #endif /* __TI_KEYSTONE_SERDES_H__ */