1
2
3
4
5
6
7
8
9#ifndef __TI_KEYSTONE_SERDES_H__
10#define __TI_KEYSTONE_SERDES_H__
11
12
13enum ks2_serdes_clock {
14 SERDES_CLOCK_100M,
15 SERDES_CLOCK_122P88M,
16 SERDES_CLOCK_125M,
17 SERDES_CLOCK_156P25M,
18 SERDES_CLOCK_312P5M,
19};
20
21
22enum ks2_serdes_rate {
23 SERDES_RATE_4P9152G,
24 SERDES_RATE_5G,
25 SERDES_RATE_6P144G,
26 SERDES_RATE_6P25G,
27 SERDES_RATE_10p3125g,
28 SERDES_RATE_12p5g,
29};
30
31
32enum ks2_serdes_rate_mode {
33 SERDES_FULL_RATE,
34 SERDES_HALF_RATE,
35 SERDES_QUARTER_RATE,
36};
37
38
39enum ks2_serdes_interface {
40 SERDES_PHY_SGMII,
41 SERDES_PHY_PCSR,
42};
43
44struct ks2_serdes {
45 enum ks2_serdes_clock clk;
46 enum ks2_serdes_rate rate;
47 enum ks2_serdes_rate_mode rate_mode;
48 enum ks2_serdes_interface intf;
49 u32 loopback;
50};
51
52int ks2_serdes_init(u32 base, struct ks2_serdes *serdes, u32 num_lanes);
53
54#endif
55