1
2
3
4
5
6#include <common.h>
7#include <spl.h>
8#include <asm/io.h>
9#include <asm/arch/cpu.h>
10#include <asm/arch/soc.h>
11
12#include "high_speed_env_spec.h"
13
14MV_SERDES_CHANGE_M_PHY serdes_change_m_phy[] = {
15
16 {
17
18 SERDES_UNIT_PEX, 0x0,
19 (0x0F << 16) | 0x2a21, 0x0, (0x0F << 16) | 0x2a21
20 }, {
21
22 SERDES_UNIT_PEX, 0x0,
23 (0x4F << 16) | 0x6219, 0x0, (0x4F << 16) | 0x6219
24 }, {
25
26 SERDES_UNIT_SATA, 0x0083C, 0x8a31, 0x0083C, 0x8a31
27 }, {
28
29 SERDES_UNIT_SATA, 0x00834, 0xc928, 0x00834, 0xc928
30 }, {
31
32 SERDES_UNIT_SATA, 0x00838, 0x30f0, 0x00838, 0x30f0
33 }, {
34
35 SERDES_UNIT_SATA, 0x00840, 0x30f5, 0x00840, 0x30f5
36 }, {
37
38 SERDES_UNIT_SGMII0, 0x00E18, 0x989F, 0x00E18, 0x989F
39 }, {
40
41 SERDES_UNIT_SGMII0, 0x00E38, 0x10FA, 0x00E38, 0x10FA
42 }, {
43
44 SERDES_UNIT_SGMII0, 0x00E34, 0xC968, 0x00E34, 0xC66C
45 }, {
46
47 SERDES_UNIT_QSGMII, 0x72E34, 0xaa58, 0x72E34, 0xaa58
48 }, {
49
50 SERDES_UNIT_QSGMII, 0x72e38, 0x10aF, 0x72e38, 0x10aF
51 }, {
52
53 SERDES_UNIT_QSGMII, 0x72e18, 0x98AC, 0x72e18, 0x98AC
54 }, {
55
56 SERDES_UNIT_UNCONNECTED, 0, 0
57 }
58};
59
60MV_BIN_SERDES_CFG db88f78xx0_serdes_cfg[] = {
61
62 {MV_PEX_ROOT_COMPLEX, 0x32221111, 0x11111111,
63 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
64 0x0030, serdes_change_m_phy},
65 {MV_PEX_ROOT_COMPLEX, 0x31211111, 0x11111111,
66 {PEX_BUS_MODE_X1, PEX_BUS_MODE_X1, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
67 0x0030, serdes_change_m_phy},
68
69 {MV_PEX_ROOT_COMPLEX, 0x32220000, 0x00000000,
70 {PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED,
71 PEX_BUS_DISABLED}, 0x0030, serdes_change_m_phy},
72 {MV_PEX_ROOT_COMPLEX, 0x31210000, 0x00000000,
73 {PEX_BUS_DISABLED, PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
74 0x0030, serdes_change_m_phy}
75};
76
77MV_BIN_SERDES_CFG db88f78xx0rev2_serdes_cfg[] = {
78
79 {MV_PEX_ROOT_COMPLEX, 0x33221111, 0x11111111,
80 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
81 0x0030, serdes_change_m_phy},
82 {MV_PEX_ROOT_COMPLEX, 0x33211111, 0x11111111,
83 {PEX_BUS_MODE_X1, PEX_BUS_MODE_X1, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
84 0x0030, serdes_change_m_phy},
85 {MV_PEX_ROOT_COMPLEX, 0x33221111, 0x11111111,
86 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
87 0x0030, serdes_change_m_phy},
88 {MV_PEX_ROOT_COMPLEX, 0x33211111, 0x11111111,
89 {PEX_BUS_MODE_X4, PEX_BUS_MODE_X1, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
90 0x0030, serdes_change_m_phy},
91 {MV_PEX_ROOT_COMPLEX, 0x11111111, 0x11111111,
92 {PEX_BUS_MODE_X1, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
93 0x0030, serdes_change_m_phy},
94 {MV_PEX_ROOT_COMPLEX, 0x11111111, 0x11111111,
95 {PEX_BUS_MODE_X4, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
96 0x0030, serdes_change_m_phy},
97};
98
99MV_BIN_SERDES_CFG rd78460nas_serdes_cfg[] = {
100 {MV_PEX_ROOT_COMPLEX, 0x00223001, 0x11111111,
101 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
102 0x0030, serdes_change_m_phy},
103 {MV_PEX_ROOT_COMPLEX, 0x33320201, 0x11111111,
104 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
105 0x00f4, serdes_change_m_phy},
106};
107
108MV_BIN_SERDES_CFG rd78460_serdes_cfg[] = {
109 {MV_PEX_ROOT_COMPLEX, 0x22321111, 0x00000000,
110 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
111 0x0010, serdes_change_m_phy},
112 {MV_PEX_ROOT_COMPLEX, 0x00321111, 0x00000000,
113 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
114 0x0010, serdes_change_m_phy}
115};
116
117MV_BIN_SERDES_CFG rd78460server_rev2_serdes_cfg[] = {
118 {MV_PEX_ROOT_COMPLEX, 0x00321111, 0x00000000,
119 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
120 0x0010, serdes_change_m_phy},
121 {MV_PEX_ROOT_COMPLEX, 0x00321111, 0x00000000,
122 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
123 0x0010, serdes_change_m_phy}
124};
125
126MV_BIN_SERDES_CFG db78X60pcac_serdes_cfg[] = {
127 {MV_PEX_END_POINT, 0x22321111, 0x00000000,
128 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
129 0x0010, serdes_change_m_phy}
130};
131
132MV_BIN_SERDES_CFG db78X60pcacrev2_serdes_cfg[] = {
133 {MV_PEX_END_POINT, 0x23321111, 0x00000000,
134 {PEX_BUS_MODE_X4, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
135 0x0010, serdes_change_m_phy}
136};
137
138MV_BIN_SERDES_CFG fpga88f78xx0_serdes_cfg[] = {
139 {MV_PEX_ROOT_COMPLEX, 0x00000000, 0x00000000,
140 {PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED, PEX_BUS_DISABLED},
141 0x0000, serdes_change_m_phy}
142};
143
144MV_BIN_SERDES_CFG db78X60amc_serdes_cfg[] = {
145 {MV_PEX_ROOT_COMPLEX, 0x33111111, 0x00010001,
146 {PEX_BUS_MODE_X4, PEX_BUS_MODE_X1, PEX_BUS_MODE_X1, PEX_BUS_MODE_X1},
147 0x0030, serdes_change_m_phy}
148};
149
150
151
152
153MV_BIN_SERDES_CFG rd78460customer_serdes_cfg[] = {
154 {MV_PEX_ROOT_COMPLEX, 0x00223001, 0x11111111,
155 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
156 0x00000030, serdes_change_m_phy},
157 {MV_PEX_ROOT_COMPLEX, 0x33320201, 0x11111111,
158 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
159 0x00000030, serdes_change_m_phy},
160};
161
162MV_BIN_SERDES_CFG rd78460AXP_GP_serdes_cfg[] = {
163 {MV_PEX_ROOT_COMPLEX, 0x00223001, 0x11111111,
164 {PEX_BUS_MODE_X1, PEX_BUS_DISABLED, PEX_BUS_MODE_X4, PEX_BUS_MODE_X4},
165 0x0030, serdes_change_m_phy}
166};
167
168MV_BIN_SERDES_CFG *serdes_info_tbl[] = {
169 db88f78xx0_serdes_cfg,
170 rd78460_serdes_cfg,
171 db78X60pcac_serdes_cfg,
172 fpga88f78xx0_serdes_cfg,
173 db88f78xx0rev2_serdes_cfg,
174 rd78460nas_serdes_cfg,
175 db78X60amc_serdes_cfg,
176 db78X60pcacrev2_serdes_cfg,
177 rd78460server_rev2_serdes_cfg,
178 rd78460AXP_GP_serdes_cfg,
179 rd78460customer_serdes_cfg
180};
181
182u8 rd78460gp_twsi_dev[] = { 0x4C, 0x4D, 0x4E };
183u8 db88f78xx0rev2_twsi_dev[] = { 0x4C, 0x4D, 0x4E, 0x4F };
184