]> git.sur5r.net Git - u-boot/blob - drivers/usb/common/fsl-errata.c
Merge branch 'master' of git://git.denx.de/u-boot-nds32
[u-boot] / drivers / usb / common / fsl-errata.c
1 /*
2  * Freescale USB Controller
3  *
4  * Copyright 2013 Freescale Semiconductor, Inc.
5  *
6  * SPDX-License-Identifier:     GPL-2.0+
7  */
8
9 #include <common.h>
10 #include <fsl_errata.h>
11 #include<fsl_usb.h>
12
13 /* USB Erratum Checking code */
14 #if defined(CONFIG_PPC) || defined(CONFIG_ARM)
15 bool has_dual_phy(void)
16 {
17         u32 svr = get_svr();
18         u32 soc = SVR_SOC_VER(svr);
19
20         switch (soc) {
21 #ifdef CONFIG_PPC
22         case SVR_T1023:
23         case SVR_T1024:
24         case SVR_T1013:
25         case SVR_T1014:
26                 return IS_SVR_REV(svr, 1, 0);
27         case SVR_T1040:
28         case SVR_T1042:
29         case SVR_T1020:
30         case SVR_T1022:
31         case SVR_T2080:
32         case SVR_T2081:
33                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
34         case SVR_T4240:
35         case SVR_T4160:
36         case SVR_T4080:
37                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
38 #endif
39         }
40
41         return false;
42 }
43
44 bool has_erratum_a006261(void)
45 {
46         u32 svr = get_svr();
47         u32 soc = SVR_SOC_VER(svr);
48
49         switch (soc) {
50 #ifdef CONFIG_PPC
51         case SVR_P1010:
52                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
53         case SVR_P2041:
54         case SVR_P2040:
55                 return IS_SVR_REV(svr, 1, 0) ||
56                         IS_SVR_REV(svr, 1, 1) ||
57                         IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
58         case SVR_P3041:
59                 return IS_SVR_REV(svr, 1, 0) ||
60                         IS_SVR_REV(svr, 1, 1) ||
61                         IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
62         case SVR_P5010:
63         case SVR_P5020:
64         case SVR_P5021:
65                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
66         case SVR_T4240:
67                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
68         case SVR_P5040:
69                 return IS_SVR_REV(svr, 1, 0) ||
70                         IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1);
71 #endif
72         }
73
74         return false;
75 }
76
77 bool has_erratum_a007075(void)
78 {
79         u32 svr = get_svr();
80         u32 soc = SVR_SOC_VER(svr);
81
82         switch (soc) {
83 #ifdef CONFIG_PPC
84         case SVR_B4860:
85         case SVR_B4420:
86                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
87         case SVR_P1010:
88                 return IS_SVR_REV(svr, 1, 0);
89         case SVR_P4080:
90                 return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0);
91 #endif
92         }
93         return false;
94 }
95
96 bool has_erratum_a007798(void)
97 {
98 #ifdef CONFIG_PPC
99         return SVR_SOC_VER(get_svr()) == SVR_T4240 &&
100                 IS_SVR_REV(get_svr(), 2, 0);
101 #endif
102         return false;
103 }
104
105 bool has_erratum_a007792(void)
106 {
107         u32 svr = get_svr();
108         u32 soc = SVR_SOC_VER(svr);
109
110         switch (soc) {
111 #ifdef CONFIG_PPC
112         case SVR_T4240:
113         case SVR_T4160:
114         case SVR_T4080:
115                 return IS_SVR_REV(svr, 2, 0);
116         case SVR_T1024:
117         case SVR_T1023:
118                 return IS_SVR_REV(svr, 1, 0);
119         case SVR_T1040:
120         case SVR_T1042:
121         case SVR_T1020:
122         case SVR_T1022:
123         case SVR_T2080:
124         case SVR_T2081:
125                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
126 #endif
127         }
128         return false;
129 }
130
131 bool has_erratum_a005697(void)
132 {
133         u32 svr = get_svr();
134         u32 soc = SVR_SOC_VER(svr);
135
136         switch (soc) {
137 #ifdef CONFIG_PPC
138         case SVR_9131:
139         case SVR_9132:
140                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
141 #endif
142         }
143         return false;
144 }
145
146 bool has_erratum_a004477(void)
147 {
148         u32 svr = get_svr();
149         u32 soc = SVR_SOC_VER(svr);
150
151         switch (soc) {
152 #ifdef CONFIG_PPC
153         case SVR_P1010:
154                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
155         case SVR_P1022:
156         case SVR_9131:
157         case SVR_9132:
158                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
159         case SVR_P2020:
160                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0) ||
161                         IS_SVR_REV(svr, 2, 1);
162         case SVR_B4860:
163         case SVR_B4420:
164                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
165         case SVR_P4080:
166                 return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0);
167 #endif
168         }
169
170         return false;
171 }
172
173 bool has_erratum_a008751(void)
174 {
175         u32 svr = get_svr();
176         u32 soc = SVR_SOC_VER(svr);
177
178         switch (soc) {
179 #ifdef CONFIG_ARM64
180         case SVR_LS2080A:
181         case SVR_LS2085A:
182                 return IS_SVR_REV(svr, 1, 0);
183 #endif
184         }
185         return false;
186 }
187
188 bool has_erratum_a010151(void)
189 {
190         u32 svr = get_svr();
191         u32 soc = SVR_SOC_VER(svr);
192
193         switch (soc) {
194 #ifdef CONFIG_ARM64
195         case SVR_LS2080A:
196         case SVR_LS2085A:
197         case SVR_LS1046A:
198         case SVR_LS1012A:
199                 return IS_SVR_REV(svr, 1, 0);
200         case SVR_LS1043A:
201                 return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
202 #endif
203 #ifdef CONFIG_LS102XA
204         case SOC_VER_LS1020:
205         case SOC_VER_LS1021:
206         case SOC_VER_LS1022:
207         case SOC_VER_SLS1020:
208                 return IS_SVR_REV(svr, 2, 0);
209 #endif
210         }
211         return false;
212 }
213
214 #endif