1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Author: Nicolas Pitre |
4 | * Created: Jun 15, 2001 |
5 | * Copyright: MontaVista Software Inc. |
6 | */ |
7 | |
8 | #ifndef __SOC_PXA_CPU_H |
9 | #define __SOC_PXA_CPU_H |
10 | |
11 | #ifdef CONFIG_ARM |
12 | #include <asm/cputype.h> |
13 | #endif |
14 | |
15 | /* |
16 | * CPU Stepping CPU_ID JTAG_ID |
17 | * |
18 | * PXA210 B0 0x69052922 0x2926C013 |
19 | * PXA210 B1 0x69052923 0x3926C013 |
20 | * PXA210 B2 0x69052924 0x4926C013 |
21 | * PXA210 C0 0x69052D25 0x5926C013 |
22 | * |
23 | * PXA250 A0 0x69052100 0x09264013 |
24 | * PXA250 A1 0x69052101 0x19264013 |
25 | * PXA250 B0 0x69052902 0x29264013 |
26 | * PXA250 B1 0x69052903 0x39264013 |
27 | * PXA250 B2 0x69052904 0x49264013 |
28 | * PXA250 C0 0x69052D05 0x59264013 |
29 | * |
30 | * PXA255 A0 0x69052D06 0x69264013 |
31 | * |
32 | * PXA26x A0 0x69052903 0x39264013 |
33 | * PXA26x B0 0x69052D05 0x59264013 |
34 | * |
35 | * PXA27x A0 0x69054110 0x09265013 |
36 | * PXA27x A1 0x69054111 0x19265013 |
37 | * PXA27x B0 0x69054112 0x29265013 |
38 | * PXA27x B1 0x69054113 0x39265013 |
39 | * PXA27x C0 0x69054114 0x49265013 |
40 | * PXA27x C5 0x69054117 0x79265013 |
41 | * |
42 | * PXA30x A0 0x69056880 0x0E648013 |
43 | * PXA30x A1 0x69056881 0x1E648013 |
44 | * PXA31x A0 0x69056890 0x0E649013 |
45 | * PXA31x A1 0x69056891 0x1E649013 |
46 | * PXA31x A2 0x69056892 0x2E649013 |
47 | * PXA32x B1 0x69056825 0x5E642013 |
48 | * PXA32x B2 0x69056826 0x6E642013 |
49 | * |
50 | * PXA930 B0 0x69056835 0x5E643013 |
51 | * PXA930 B1 0x69056837 0x7E643013 |
52 | * PXA930 B2 0x69056838 0x8E643013 |
53 | * |
54 | * PXA935 A0 0x56056931 0x1E653013 |
55 | * PXA935 B0 0x56056936 0x6E653013 |
56 | * PXA935 B1 0x56056938 0x8E653013 |
57 | */ |
58 | #ifdef CONFIG_PXA25x |
59 | #define __cpu_is_pxa210(id) \ |
60 | ({ \ |
61 | unsigned int _id = (id) & 0xf3f0; \ |
62 | _id == 0x2120; \ |
63 | }) |
64 | |
65 | #define __cpu_is_pxa250(id) \ |
66 | ({ \ |
67 | unsigned int _id = (id) & 0xf3ff; \ |
68 | _id <= 0x2105; \ |
69 | }) |
70 | |
71 | #define __cpu_is_pxa255(id) \ |
72 | ({ \ |
73 | unsigned int _id = (id) & 0xffff; \ |
74 | _id == 0x2d06; \ |
75 | }) |
76 | |
77 | #define __cpu_is_pxa25x(id) \ |
78 | ({ \ |
79 | unsigned int _id = (id) & 0xf300; \ |
80 | _id == 0x2100; \ |
81 | }) |
82 | #else |
83 | #define __cpu_is_pxa210(id) (0) |
84 | #define __cpu_is_pxa250(id) (0) |
85 | #define __cpu_is_pxa255(id) (0) |
86 | #define __cpu_is_pxa25x(id) (0) |
87 | #endif |
88 | |
89 | #ifdef CONFIG_PXA27x |
90 | #define __cpu_is_pxa27x(id) \ |
91 | ({ \ |
92 | unsigned int _id = (id) >> 4 & 0xfff; \ |
93 | _id == 0x411; \ |
94 | }) |
95 | #else |
96 | #define __cpu_is_pxa27x(id) (0) |
97 | #endif |
98 | |
99 | #ifdef CONFIG_CPU_PXA300 |
100 | #define __cpu_is_pxa300(id) \ |
101 | ({ \ |
102 | unsigned int _id = (id) >> 4 & 0xfff; \ |
103 | _id == 0x688; \ |
104 | }) |
105 | #else |
106 | #define __cpu_is_pxa300(id) (0) |
107 | #endif |
108 | |
109 | #ifdef CONFIG_CPU_PXA310 |
110 | #define __cpu_is_pxa310(id) \ |
111 | ({ \ |
112 | unsigned int _id = (id) >> 4 & 0xfff; \ |
113 | _id == 0x689; \ |
114 | }) |
115 | #else |
116 | #define __cpu_is_pxa310(id) (0) |
117 | #endif |
118 | |
119 | #ifdef CONFIG_CPU_PXA320 |
120 | #define __cpu_is_pxa320(id) \ |
121 | ({ \ |
122 | unsigned int _id = (id) >> 4 & 0xfff; \ |
123 | _id == 0x603 || _id == 0x682; \ |
124 | }) |
125 | #else |
126 | #define __cpu_is_pxa320(id) (0) |
127 | #endif |
128 | |
129 | #ifdef CONFIG_CPU_PXA930 |
130 | #define __cpu_is_pxa930(id) \ |
131 | ({ \ |
132 | unsigned int _id = (id) >> 4 & 0xfff; \ |
133 | _id == 0x683; \ |
134 | }) |
135 | #else |
136 | #define __cpu_is_pxa930(id) (0) |
137 | #endif |
138 | |
139 | #ifdef CONFIG_CPU_PXA935 |
140 | #define __cpu_is_pxa935(id) \ |
141 | ({ \ |
142 | unsigned int _id = (id) >> 4 & 0xfff; \ |
143 | _id == 0x693; \ |
144 | }) |
145 | #else |
146 | #define __cpu_is_pxa935(id) (0) |
147 | #endif |
148 | |
149 | #define cpu_is_pxa210() \ |
150 | ({ \ |
151 | __cpu_is_pxa210(read_cpuid_id()); \ |
152 | }) |
153 | |
154 | #define cpu_is_pxa250() \ |
155 | ({ \ |
156 | __cpu_is_pxa250(read_cpuid_id()); \ |
157 | }) |
158 | |
159 | #define cpu_is_pxa255() \ |
160 | ({ \ |
161 | __cpu_is_pxa255(read_cpuid_id()); \ |
162 | }) |
163 | |
164 | #define cpu_is_pxa25x() \ |
165 | ({ \ |
166 | __cpu_is_pxa25x(read_cpuid_id()); \ |
167 | }) |
168 | |
169 | #define cpu_is_pxa27x() \ |
170 | ({ \ |
171 | __cpu_is_pxa27x(read_cpuid_id()); \ |
172 | }) |
173 | |
174 | #define cpu_is_pxa300() \ |
175 | ({ \ |
176 | __cpu_is_pxa300(read_cpuid_id()); \ |
177 | }) |
178 | |
179 | #define cpu_is_pxa310() \ |
180 | ({ \ |
181 | __cpu_is_pxa310(read_cpuid_id()); \ |
182 | }) |
183 | |
184 | #define cpu_is_pxa320() \ |
185 | ({ \ |
186 | __cpu_is_pxa320(read_cpuid_id()); \ |
187 | }) |
188 | |
189 | #define cpu_is_pxa930() \ |
190 | ({ \ |
191 | __cpu_is_pxa930(read_cpuid_id()); \ |
192 | }) |
193 | |
194 | #define cpu_is_pxa935() \ |
195 | ({ \ |
196 | __cpu_is_pxa935(read_cpuid_id()); \ |
197 | }) |
198 | |
199 | |
200 | |
201 | /* |
202 | * CPUID Core Generation Bit |
203 | * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x |
204 | */ |
205 | #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x) |
206 | #define __cpu_is_pxa2xx(id) \ |
207 | ({ \ |
208 | unsigned int _id = (id) >> 13 & 0x7; \ |
209 | _id <= 0x2; \ |
210 | }) |
211 | #else |
212 | #define __cpu_is_pxa2xx(id) (0) |
213 | #endif |
214 | |
215 | #ifdef CONFIG_PXA3xx |
216 | #define __cpu_is_pxa3xx(id) \ |
217 | ({ \ |
218 | __cpu_is_pxa300(id) \ |
219 | || __cpu_is_pxa310(id) \ |
220 | || __cpu_is_pxa320(id) \ |
221 | || __cpu_is_pxa93x(id); \ |
222 | }) |
223 | #else |
224 | #define __cpu_is_pxa3xx(id) (0) |
225 | #endif |
226 | |
227 | #if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935) |
228 | #define __cpu_is_pxa93x(id) \ |
229 | ({ \ |
230 | __cpu_is_pxa930(id) \ |
231 | || __cpu_is_pxa935(id); \ |
232 | }) |
233 | #else |
234 | #define __cpu_is_pxa93x(id) (0) |
235 | #endif |
236 | |
237 | #define cpu_is_pxa2xx() \ |
238 | ({ \ |
239 | __cpu_is_pxa2xx(read_cpuid_id()); \ |
240 | }) |
241 | |
242 | #define cpu_is_pxa3xx() \ |
243 | ({ \ |
244 | __cpu_is_pxa3xx(read_cpuid_id()); \ |
245 | }) |
246 | |
247 | #define cpu_is_pxa93x() \ |
248 | ({ \ |
249 | __cpu_is_pxa93x(read_cpuid_id()); \ |
250 | }) |
251 | |
252 | #endif |
253 | |