]> git.sur5r.net Git - u-boot/blob - arch/arm/include/asm/arch-fsl-layerscape/fsl_serdes.h
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / arch / arm / include / asm / arch-fsl-layerscape / fsl_serdes.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2015 Freescale Semiconductor, Inc.
4  */
5
6 #ifndef __FSL_SERDES_H__
7 #define __FSL_SERDES_H__
8
9 #include <config.h>
10
11 #ifdef CONFIG_FSL_LSCH3
12 enum srds_prtcl {
13         /*
14          * Nobody will check whether the device 'NONE' has been configured,
15          * So use it to indicate if the serdes_prtcl_map has been initialized.
16          */
17         NONE = 0,
18         PCIE1,
19         PCIE2,
20         PCIE3,
21         PCIE4,
22         SATA1,
23         SATA2,
24         XAUI1,
25         XAUI2,
26         XFI1,
27         XFI2,
28         XFI3,
29         XFI4,
30         XFI5,
31         XFI6,
32         XFI7,
33         XFI8,
34         SGMII1,
35         SGMII2,
36         SGMII3,
37         SGMII4,
38         SGMII5,
39         SGMII6,
40         SGMII7,
41         SGMII8,
42         SGMII9,
43         SGMII10,
44         SGMII11,
45         SGMII12,
46         SGMII13,
47         SGMII14,
48         SGMII15,
49         SGMII16,
50         QSGMII_A,
51         QSGMII_B,
52         QSGMII_C,
53         QSGMII_D,
54         SERDES_PRCTL_COUNT
55 };
56
57 enum srds {
58         FSL_SRDS_1  = 0,
59         FSL_SRDS_2  = 1,
60 };
61 #elif defined(CONFIG_FSL_LSCH2)
62 enum srds_prtcl {
63         /*
64          * Nobody will check whether the device 'NONE' has been configured,
65          * So use it to indicate if the serdes_prtcl_map has been initialized.
66          */
67         NONE = 0,
68         PCIE1,
69         PCIE2,
70         PCIE3,
71         PCIE4,
72         SATA1,
73         SATA2,
74         SRIO1,
75         SRIO2,
76         SGMII_FM1_DTSEC1,
77         SGMII_FM1_DTSEC2,
78         SGMII_FM1_DTSEC3,
79         SGMII_FM1_DTSEC4,
80         SGMII_FM1_DTSEC5,
81         SGMII_FM1_DTSEC6,
82         SGMII_FM1_DTSEC9,
83         SGMII_FM1_DTSEC10,
84         SGMII_FM2_DTSEC1,
85         SGMII_FM2_DTSEC2,
86         SGMII_FM2_DTSEC3,
87         SGMII_FM2_DTSEC4,
88         SGMII_FM2_DTSEC5,
89         SGMII_FM2_DTSEC6,
90         SGMII_FM2_DTSEC9,
91         SGMII_FM2_DTSEC10,
92         SGMII_TSEC1,
93         SGMII_TSEC2,
94         SGMII_TSEC3,
95         SGMII_TSEC4,
96         XAUI_FM1,
97         XAUI_FM2,
98         AURORA,
99         CPRI1,
100         CPRI2,
101         CPRI3,
102         CPRI4,
103         CPRI5,
104         CPRI6,
105         CPRI7,
106         CPRI8,
107         XAUI_FM1_MAC9,
108         XAUI_FM1_MAC10,
109         XAUI_FM2_MAC9,
110         XAUI_FM2_MAC10,
111         HIGIG_FM1_MAC9,
112         HIGIG_FM1_MAC10,
113         HIGIG_FM2_MAC9,
114         HIGIG_FM2_MAC10,
115         QSGMII_FM1_A,           /* A indicates MACs 1,2,5,6 */
116         QSGMII_FM1_B,           /* B indicates MACs 5,6,9,10 */
117         QSGMII_FM2_A,
118         QSGMII_FM2_B,
119         XFI_FM1_MAC1,
120         XFI_FM1_MAC2,
121         XFI_FM1_MAC9,
122         XFI_FM1_MAC10,
123         XFI_FM2_MAC9,
124         XFI_FM2_MAC10,
125         INTERLAKEN,
126         QSGMII_SW1_A,           /* Indicates ports on L2 Switch */
127         QSGMII_SW1_B,
128         SGMII_2500_FM1_DTSEC1,
129         SGMII_2500_FM1_DTSEC2,
130         SGMII_2500_FM1_DTSEC3,
131         SGMII_2500_FM1_DTSEC4,
132         SGMII_2500_FM1_DTSEC5,
133         SGMII_2500_FM1_DTSEC6,
134         SGMII_2500_FM1_DTSEC9,
135         SGMII_2500_FM1_DTSEC10,
136         SGMII_2500_FM2_DTSEC1,
137         SGMII_2500_FM2_DTSEC2,
138         SGMII_2500_FM2_DTSEC3,
139         SGMII_2500_FM2_DTSEC4,
140         SGMII_2500_FM2_DTSEC5,
141         SGMII_2500_FM2_DTSEC6,
142         SGMII_2500_FM2_DTSEC9,
143         SGMII_2500_FM2_DTSEC10,
144         TX_CLK,
145         SERDES_PRCTL_COUNT
146 };
147
148 enum srds {
149         FSL_SRDS_1  = 0,
150         FSL_SRDS_2  = 1,
151 };
152
153 #endif
154
155 int is_serdes_configured(enum srds_prtcl device);
156 void fsl_serdes_init(void);
157 int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
158 enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
159 int is_serdes_prtcl_valid(int serdes, u32 prtcl);
160 int serdes_get_number(int serdes, int cfg);
161 void fsl_rgmii_init(void);
162
163 #ifdef CONFIG_FSL_LSCH2
164 const char *serdes_clock_to_string(u32 clock);
165 int get_serdes_protocol(void);
166 #endif
167 #ifdef CONFIG_SYS_HAS_SERDES
168 /* Get the volt of SVDD in unit mV */
169 int get_serdes_volt(void);
170 /* Set the volt of SVDD in unit mV */
171 int set_serdes_volt(int svdd);
172 /* The target volt of SVDD in unit mV */
173 int setup_serdes_volt(u32 svdd);
174 #endif
175
176 #endif /* __FSL_SERDES_H__ */