Loading...
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
4 */
5
6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7
8#include <linux/kernel.h>
9#include <linux/types.h>
10#include <linux/bug.h>
11#include <asm/hardware/cp14.h>
12
13#include "coresight-etm.h"
14
15int etm_readl_cp14(u32 reg, unsigned int *val)
16{
17 switch (reg) {
18 case ETMCR:
19 *val = etm_read(ETMCR);
20 return 0;
21 case ETMCCR:
22 *val = etm_read(ETMCCR);
23 return 0;
24 case ETMTRIGGER:
25 *val = etm_read(ETMTRIGGER);
26 return 0;
27 case ETMSR:
28 *val = etm_read(ETMSR);
29 return 0;
30 case ETMSCR:
31 *val = etm_read(ETMSCR);
32 return 0;
33 case ETMTSSCR:
34 *val = etm_read(ETMTSSCR);
35 return 0;
36 case ETMTEEVR:
37 *val = etm_read(ETMTEEVR);
38 return 0;
39 case ETMTECR1:
40 *val = etm_read(ETMTECR1);
41 return 0;
42 case ETMFFLR:
43 *val = etm_read(ETMFFLR);
44 return 0;
45 case ETMACVRn(0):
46 *val = etm_read(ETMACVR0);
47 return 0;
48 case ETMACVRn(1):
49 *val = etm_read(ETMACVR1);
50 return 0;
51 case ETMACVRn(2):
52 *val = etm_read(ETMACVR2);
53 return 0;
54 case ETMACVRn(3):
55 *val = etm_read(ETMACVR3);
56 return 0;
57 case ETMACVRn(4):
58 *val = etm_read(ETMACVR4);
59 return 0;
60 case ETMACVRn(5):
61 *val = etm_read(ETMACVR5);
62 return 0;
63 case ETMACVRn(6):
64 *val = etm_read(ETMACVR6);
65 return 0;
66 case ETMACVRn(7):
67 *val = etm_read(ETMACVR7);
68 return 0;
69 case ETMACVRn(8):
70 *val = etm_read(ETMACVR8);
71 return 0;
72 case ETMACVRn(9):
73 *val = etm_read(ETMACVR9);
74 return 0;
75 case ETMACVRn(10):
76 *val = etm_read(ETMACVR10);
77 return 0;
78 case ETMACVRn(11):
79 *val = etm_read(ETMACVR11);
80 return 0;
81 case ETMACVRn(12):
82 *val = etm_read(ETMACVR12);
83 return 0;
84 case ETMACVRn(13):
85 *val = etm_read(ETMACVR13);
86 return 0;
87 case ETMACVRn(14):
88 *val = etm_read(ETMACVR14);
89 return 0;
90 case ETMACVRn(15):
91 *val = etm_read(ETMACVR15);
92 return 0;
93 case ETMACTRn(0):
94 *val = etm_read(ETMACTR0);
95 return 0;
96 case ETMACTRn(1):
97 *val = etm_read(ETMACTR1);
98 return 0;
99 case ETMACTRn(2):
100 *val = etm_read(ETMACTR2);
101 return 0;
102 case ETMACTRn(3):
103 *val = etm_read(ETMACTR3);
104 return 0;
105 case ETMACTRn(4):
106 *val = etm_read(ETMACTR4);
107 return 0;
108 case ETMACTRn(5):
109 *val = etm_read(ETMACTR5);
110 return 0;
111 case ETMACTRn(6):
112 *val = etm_read(ETMACTR6);
113 return 0;
114 case ETMACTRn(7):
115 *val = etm_read(ETMACTR7);
116 return 0;
117 case ETMACTRn(8):
118 *val = etm_read(ETMACTR8);
119 return 0;
120 case ETMACTRn(9):
121 *val = etm_read(ETMACTR9);
122 return 0;
123 case ETMACTRn(10):
124 *val = etm_read(ETMACTR10);
125 return 0;
126 case ETMACTRn(11):
127 *val = etm_read(ETMACTR11);
128 return 0;
129 case ETMACTRn(12):
130 *val = etm_read(ETMACTR12);
131 return 0;
132 case ETMACTRn(13):
133 *val = etm_read(ETMACTR13);
134 return 0;
135 case ETMACTRn(14):
136 *val = etm_read(ETMACTR14);
137 return 0;
138 case ETMACTRn(15):
139 *val = etm_read(ETMACTR15);
140 return 0;
141 case ETMCNTRLDVRn(0):
142 *val = etm_read(ETMCNTRLDVR0);
143 return 0;
144 case ETMCNTRLDVRn(1):
145 *val = etm_read(ETMCNTRLDVR1);
146 return 0;
147 case ETMCNTRLDVRn(2):
148 *val = etm_read(ETMCNTRLDVR2);
149 return 0;
150 case ETMCNTRLDVRn(3):
151 *val = etm_read(ETMCNTRLDVR3);
152 return 0;
153 case ETMCNTENRn(0):
154 *val = etm_read(ETMCNTENR0);
155 return 0;
156 case ETMCNTENRn(1):
157 *val = etm_read(ETMCNTENR1);
158 return 0;
159 case ETMCNTENRn(2):
160 *val = etm_read(ETMCNTENR2);
161 return 0;
162 case ETMCNTENRn(3):
163 *val = etm_read(ETMCNTENR3);
164 return 0;
165 case ETMCNTRLDEVRn(0):
166 *val = etm_read(ETMCNTRLDEVR0);
167 return 0;
168 case ETMCNTRLDEVRn(1):
169 *val = etm_read(ETMCNTRLDEVR1);
170 return 0;
171 case ETMCNTRLDEVRn(2):
172 *val = etm_read(ETMCNTRLDEVR2);
173 return 0;
174 case ETMCNTRLDEVRn(3):
175 *val = etm_read(ETMCNTRLDEVR3);
176 return 0;
177 case ETMCNTVRn(0):
178 *val = etm_read(ETMCNTVR0);
179 return 0;
180 case ETMCNTVRn(1):
181 *val = etm_read(ETMCNTVR1);
182 return 0;
183 case ETMCNTVRn(2):
184 *val = etm_read(ETMCNTVR2);
185 return 0;
186 case ETMCNTVRn(3):
187 *val = etm_read(ETMCNTVR3);
188 return 0;
189 case ETMSQ12EVR:
190 *val = etm_read(ETMSQ12EVR);
191 return 0;
192 case ETMSQ21EVR:
193 *val = etm_read(ETMSQ21EVR);
194 return 0;
195 case ETMSQ23EVR:
196 *val = etm_read(ETMSQ23EVR);
197 return 0;
198 case ETMSQ31EVR:
199 *val = etm_read(ETMSQ31EVR);
200 return 0;
201 case ETMSQ32EVR:
202 *val = etm_read(ETMSQ32EVR);
203 return 0;
204 case ETMSQ13EVR:
205 *val = etm_read(ETMSQ13EVR);
206 return 0;
207 case ETMSQR:
208 *val = etm_read(ETMSQR);
209 return 0;
210 case ETMEXTOUTEVRn(0):
211 *val = etm_read(ETMEXTOUTEVR0);
212 return 0;
213 case ETMEXTOUTEVRn(1):
214 *val = etm_read(ETMEXTOUTEVR1);
215 return 0;
216 case ETMEXTOUTEVRn(2):
217 *val = etm_read(ETMEXTOUTEVR2);
218 return 0;
219 case ETMEXTOUTEVRn(3):
220 *val = etm_read(ETMEXTOUTEVR3);
221 return 0;
222 case ETMCIDCVRn(0):
223 *val = etm_read(ETMCIDCVR0);
224 return 0;
225 case ETMCIDCVRn(1):
226 *val = etm_read(ETMCIDCVR1);
227 return 0;
228 case ETMCIDCVRn(2):
229 *val = etm_read(ETMCIDCVR2);
230 return 0;
231 case ETMCIDCMR:
232 *val = etm_read(ETMCIDCMR);
233 return 0;
234 case ETMIMPSPEC0:
235 *val = etm_read(ETMIMPSPEC0);
236 return 0;
237 case ETMIMPSPEC1:
238 *val = etm_read(ETMIMPSPEC1);
239 return 0;
240 case ETMIMPSPEC2:
241 *val = etm_read(ETMIMPSPEC2);
242 return 0;
243 case ETMIMPSPEC3:
244 *val = etm_read(ETMIMPSPEC3);
245 return 0;
246 case ETMIMPSPEC4:
247 *val = etm_read(ETMIMPSPEC4);
248 return 0;
249 case ETMIMPSPEC5:
250 *val = etm_read(ETMIMPSPEC5);
251 return 0;
252 case ETMIMPSPEC6:
253 *val = etm_read(ETMIMPSPEC6);
254 return 0;
255 case ETMIMPSPEC7:
256 *val = etm_read(ETMIMPSPEC7);
257 return 0;
258 case ETMSYNCFR:
259 *val = etm_read(ETMSYNCFR);
260 return 0;
261 case ETMIDR:
262 *val = etm_read(ETMIDR);
263 return 0;
264 case ETMCCER:
265 *val = etm_read(ETMCCER);
266 return 0;
267 case ETMEXTINSELR:
268 *val = etm_read(ETMEXTINSELR);
269 return 0;
270 case ETMTESSEICR:
271 *val = etm_read(ETMTESSEICR);
272 return 0;
273 case ETMEIBCR:
274 *val = etm_read(ETMEIBCR);
275 return 0;
276 case ETMTSEVR:
277 *val = etm_read(ETMTSEVR);
278 return 0;
279 case ETMAUXCR:
280 *val = etm_read(ETMAUXCR);
281 return 0;
282 case ETMTRACEIDR:
283 *val = etm_read(ETMTRACEIDR);
284 return 0;
285 case ETMVMIDCVR:
286 *val = etm_read(ETMVMIDCVR);
287 return 0;
288 case ETMOSLSR:
289 *val = etm_read(ETMOSLSR);
290 return 0;
291 case ETMOSSRR:
292 *val = etm_read(ETMOSSRR);
293 return 0;
294 case ETMPDCR:
295 *val = etm_read(ETMPDCR);
296 return 0;
297 case ETMPDSR:
298 *val = etm_read(ETMPDSR);
299 return 0;
300 default:
301 *val = 0;
302 return -EINVAL;
303 }
304}
305
306int etm_writel_cp14(u32 reg, u32 val)
307{
308 switch (reg) {
309 case ETMCR:
310 etm_write(val, ETMCR);
311 break;
312 case ETMTRIGGER:
313 etm_write(val, ETMTRIGGER);
314 break;
315 case ETMSR:
316 etm_write(val, ETMSR);
317 break;
318 case ETMTSSCR:
319 etm_write(val, ETMTSSCR);
320 break;
321 case ETMTEEVR:
322 etm_write(val, ETMTEEVR);
323 break;
324 case ETMTECR1:
325 etm_write(val, ETMTECR1);
326 break;
327 case ETMFFLR:
328 etm_write(val, ETMFFLR);
329 break;
330 case ETMACVRn(0):
331 etm_write(val, ETMACVR0);
332 break;
333 case ETMACVRn(1):
334 etm_write(val, ETMACVR1);
335 break;
336 case ETMACVRn(2):
337 etm_write(val, ETMACVR2);
338 break;
339 case ETMACVRn(3):
340 etm_write(val, ETMACVR3);
341 break;
342 case ETMACVRn(4):
343 etm_write(val, ETMACVR4);
344 break;
345 case ETMACVRn(5):
346 etm_write(val, ETMACVR5);
347 break;
348 case ETMACVRn(6):
349 etm_write(val, ETMACVR6);
350 break;
351 case ETMACVRn(7):
352 etm_write(val, ETMACVR7);
353 break;
354 case ETMACVRn(8):
355 etm_write(val, ETMACVR8);
356 break;
357 case ETMACVRn(9):
358 etm_write(val, ETMACVR9);
359 break;
360 case ETMACVRn(10):
361 etm_write(val, ETMACVR10);
362 break;
363 case ETMACVRn(11):
364 etm_write(val, ETMACVR11);
365 break;
366 case ETMACVRn(12):
367 etm_write(val, ETMACVR12);
368 break;
369 case ETMACVRn(13):
370 etm_write(val, ETMACVR13);
371 break;
372 case ETMACVRn(14):
373 etm_write(val, ETMACVR14);
374 break;
375 case ETMACVRn(15):
376 etm_write(val, ETMACVR15);
377 break;
378 case ETMACTRn(0):
379 etm_write(val, ETMACTR0);
380 break;
381 case ETMACTRn(1):
382 etm_write(val, ETMACTR1);
383 break;
384 case ETMACTRn(2):
385 etm_write(val, ETMACTR2);
386 break;
387 case ETMACTRn(3):
388 etm_write(val, ETMACTR3);
389 break;
390 case ETMACTRn(4):
391 etm_write(val, ETMACTR4);
392 break;
393 case ETMACTRn(5):
394 etm_write(val, ETMACTR5);
395 break;
396 case ETMACTRn(6):
397 etm_write(val, ETMACTR6);
398 break;
399 case ETMACTRn(7):
400 etm_write(val, ETMACTR7);
401 break;
402 case ETMACTRn(8):
403 etm_write(val, ETMACTR8);
404 break;
405 case ETMACTRn(9):
406 etm_write(val, ETMACTR9);
407 break;
408 case ETMACTRn(10):
409 etm_write(val, ETMACTR10);
410 break;
411 case ETMACTRn(11):
412 etm_write(val, ETMACTR11);
413 break;
414 case ETMACTRn(12):
415 etm_write(val, ETMACTR12);
416 break;
417 case ETMACTRn(13):
418 etm_write(val, ETMACTR13);
419 break;
420 case ETMACTRn(14):
421 etm_write(val, ETMACTR14);
422 break;
423 case ETMACTRn(15):
424 etm_write(val, ETMACTR15);
425 break;
426 case ETMCNTRLDVRn(0):
427 etm_write(val, ETMCNTRLDVR0);
428 break;
429 case ETMCNTRLDVRn(1):
430 etm_write(val, ETMCNTRLDVR1);
431 break;
432 case ETMCNTRLDVRn(2):
433 etm_write(val, ETMCNTRLDVR2);
434 break;
435 case ETMCNTRLDVRn(3):
436 etm_write(val, ETMCNTRLDVR3);
437 break;
438 case ETMCNTENRn(0):
439 etm_write(val, ETMCNTENR0);
440 break;
441 case ETMCNTENRn(1):
442 etm_write(val, ETMCNTENR1);
443 break;
444 case ETMCNTENRn(2):
445 etm_write(val, ETMCNTENR2);
446 break;
447 case ETMCNTENRn(3):
448 etm_write(val, ETMCNTENR3);
449 break;
450 case ETMCNTRLDEVRn(0):
451 etm_write(val, ETMCNTRLDEVR0);
452 break;
453 case ETMCNTRLDEVRn(1):
454 etm_write(val, ETMCNTRLDEVR1);
455 break;
456 case ETMCNTRLDEVRn(2):
457 etm_write(val, ETMCNTRLDEVR2);
458 break;
459 case ETMCNTRLDEVRn(3):
460 etm_write(val, ETMCNTRLDEVR3);
461 break;
462 case ETMCNTVRn(0):
463 etm_write(val, ETMCNTVR0);
464 break;
465 case ETMCNTVRn(1):
466 etm_write(val, ETMCNTVR1);
467 break;
468 case ETMCNTVRn(2):
469 etm_write(val, ETMCNTVR2);
470 break;
471 case ETMCNTVRn(3):
472 etm_write(val, ETMCNTVR3);
473 break;
474 case ETMSQ12EVR:
475 etm_write(val, ETMSQ12EVR);
476 break;
477 case ETMSQ21EVR:
478 etm_write(val, ETMSQ21EVR);
479 break;
480 case ETMSQ23EVR:
481 etm_write(val, ETMSQ23EVR);
482 break;
483 case ETMSQ31EVR:
484 etm_write(val, ETMSQ31EVR);
485 break;
486 case ETMSQ32EVR:
487 etm_write(val, ETMSQ32EVR);
488 break;
489 case ETMSQ13EVR:
490 etm_write(val, ETMSQ13EVR);
491 break;
492 case ETMSQR:
493 etm_write(val, ETMSQR);
494 break;
495 case ETMEXTOUTEVRn(0):
496 etm_write(val, ETMEXTOUTEVR0);
497 break;
498 case ETMEXTOUTEVRn(1):
499 etm_write(val, ETMEXTOUTEVR1);
500 break;
501 case ETMEXTOUTEVRn(2):
502 etm_write(val, ETMEXTOUTEVR2);
503 break;
504 case ETMEXTOUTEVRn(3):
505 etm_write(val, ETMEXTOUTEVR3);
506 break;
507 case ETMCIDCVRn(0):
508 etm_write(val, ETMCIDCVR0);
509 break;
510 case ETMCIDCVRn(1):
511 etm_write(val, ETMCIDCVR1);
512 break;
513 case ETMCIDCVRn(2):
514 etm_write(val, ETMCIDCVR2);
515 break;
516 case ETMCIDCMR:
517 etm_write(val, ETMCIDCMR);
518 break;
519 case ETMIMPSPEC0:
520 etm_write(val, ETMIMPSPEC0);
521 break;
522 case ETMIMPSPEC1:
523 etm_write(val, ETMIMPSPEC1);
524 break;
525 case ETMIMPSPEC2:
526 etm_write(val, ETMIMPSPEC2);
527 break;
528 case ETMIMPSPEC3:
529 etm_write(val, ETMIMPSPEC3);
530 break;
531 case ETMIMPSPEC4:
532 etm_write(val, ETMIMPSPEC4);
533 break;
534 case ETMIMPSPEC5:
535 etm_write(val, ETMIMPSPEC5);
536 break;
537 case ETMIMPSPEC6:
538 etm_write(val, ETMIMPSPEC6);
539 break;
540 case ETMIMPSPEC7:
541 etm_write(val, ETMIMPSPEC7);
542 break;
543 case ETMSYNCFR:
544 etm_write(val, ETMSYNCFR);
545 break;
546 case ETMEXTINSELR:
547 etm_write(val, ETMEXTINSELR);
548 break;
549 case ETMTESSEICR:
550 etm_write(val, ETMTESSEICR);
551 break;
552 case ETMEIBCR:
553 etm_write(val, ETMEIBCR);
554 break;
555 case ETMTSEVR:
556 etm_write(val, ETMTSEVR);
557 break;
558 case ETMAUXCR:
559 etm_write(val, ETMAUXCR);
560 break;
561 case ETMTRACEIDR:
562 etm_write(val, ETMTRACEIDR);
563 break;
564 case ETMVMIDCVR:
565 etm_write(val, ETMVMIDCVR);
566 break;
567 case ETMOSLAR:
568 etm_write(val, ETMOSLAR);
569 break;
570 case ETMOSSRR:
571 etm_write(val, ETMOSSRR);
572 break;
573 case ETMPDCR:
574 etm_write(val, ETMPDCR);
575 break;
576 case ETMPDSR:
577 etm_write(val, ETMPDSR);
578 break;
579 default:
580 return -EINVAL;
581 }
582
583 return 0;
584}
1/* Copyright (c) 2012, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
14
15#include <linux/kernel.h>
16#include <linux/types.h>
17#include <linux/bug.h>
18#include <asm/hardware/cp14.h>
19
20#include "coresight-etm.h"
21
22int etm_readl_cp14(u32 reg, unsigned int *val)
23{
24 switch (reg) {
25 case ETMCR:
26 *val = etm_read(ETMCR);
27 return 0;
28 case ETMCCR:
29 *val = etm_read(ETMCCR);
30 return 0;
31 case ETMTRIGGER:
32 *val = etm_read(ETMTRIGGER);
33 return 0;
34 case ETMSR:
35 *val = etm_read(ETMSR);
36 return 0;
37 case ETMSCR:
38 *val = etm_read(ETMSCR);
39 return 0;
40 case ETMTSSCR:
41 *val = etm_read(ETMTSSCR);
42 return 0;
43 case ETMTEEVR:
44 *val = etm_read(ETMTEEVR);
45 return 0;
46 case ETMTECR1:
47 *val = etm_read(ETMTECR1);
48 return 0;
49 case ETMFFLR:
50 *val = etm_read(ETMFFLR);
51 return 0;
52 case ETMACVRn(0):
53 *val = etm_read(ETMACVR0);
54 return 0;
55 case ETMACVRn(1):
56 *val = etm_read(ETMACVR1);
57 return 0;
58 case ETMACVRn(2):
59 *val = etm_read(ETMACVR2);
60 return 0;
61 case ETMACVRn(3):
62 *val = etm_read(ETMACVR3);
63 return 0;
64 case ETMACVRn(4):
65 *val = etm_read(ETMACVR4);
66 return 0;
67 case ETMACVRn(5):
68 *val = etm_read(ETMACVR5);
69 return 0;
70 case ETMACVRn(6):
71 *val = etm_read(ETMACVR6);
72 return 0;
73 case ETMACVRn(7):
74 *val = etm_read(ETMACVR7);
75 return 0;
76 case ETMACVRn(8):
77 *val = etm_read(ETMACVR8);
78 return 0;
79 case ETMACVRn(9):
80 *val = etm_read(ETMACVR9);
81 return 0;
82 case ETMACVRn(10):
83 *val = etm_read(ETMACVR10);
84 return 0;
85 case ETMACVRn(11):
86 *val = etm_read(ETMACVR11);
87 return 0;
88 case ETMACVRn(12):
89 *val = etm_read(ETMACVR12);
90 return 0;
91 case ETMACVRn(13):
92 *val = etm_read(ETMACVR13);
93 return 0;
94 case ETMACVRn(14):
95 *val = etm_read(ETMACVR14);
96 return 0;
97 case ETMACVRn(15):
98 *val = etm_read(ETMACVR15);
99 return 0;
100 case ETMACTRn(0):
101 *val = etm_read(ETMACTR0);
102 return 0;
103 case ETMACTRn(1):
104 *val = etm_read(ETMACTR1);
105 return 0;
106 case ETMACTRn(2):
107 *val = etm_read(ETMACTR2);
108 return 0;
109 case ETMACTRn(3):
110 *val = etm_read(ETMACTR3);
111 return 0;
112 case ETMACTRn(4):
113 *val = etm_read(ETMACTR4);
114 return 0;
115 case ETMACTRn(5):
116 *val = etm_read(ETMACTR5);
117 return 0;
118 case ETMACTRn(6):
119 *val = etm_read(ETMACTR6);
120 return 0;
121 case ETMACTRn(7):
122 *val = etm_read(ETMACTR7);
123 return 0;
124 case ETMACTRn(8):
125 *val = etm_read(ETMACTR8);
126 return 0;
127 case ETMACTRn(9):
128 *val = etm_read(ETMACTR9);
129 return 0;
130 case ETMACTRn(10):
131 *val = etm_read(ETMACTR10);
132 return 0;
133 case ETMACTRn(11):
134 *val = etm_read(ETMACTR11);
135 return 0;
136 case ETMACTRn(12):
137 *val = etm_read(ETMACTR12);
138 return 0;
139 case ETMACTRn(13):
140 *val = etm_read(ETMACTR13);
141 return 0;
142 case ETMACTRn(14):
143 *val = etm_read(ETMACTR14);
144 return 0;
145 case ETMACTRn(15):
146 *val = etm_read(ETMACTR15);
147 return 0;
148 case ETMCNTRLDVRn(0):
149 *val = etm_read(ETMCNTRLDVR0);
150 return 0;
151 case ETMCNTRLDVRn(1):
152 *val = etm_read(ETMCNTRLDVR1);
153 return 0;
154 case ETMCNTRLDVRn(2):
155 *val = etm_read(ETMCNTRLDVR2);
156 return 0;
157 case ETMCNTRLDVRn(3):
158 *val = etm_read(ETMCNTRLDVR3);
159 return 0;
160 case ETMCNTENRn(0):
161 *val = etm_read(ETMCNTENR0);
162 return 0;
163 case ETMCNTENRn(1):
164 *val = etm_read(ETMCNTENR1);
165 return 0;
166 case ETMCNTENRn(2):
167 *val = etm_read(ETMCNTENR2);
168 return 0;
169 case ETMCNTENRn(3):
170 *val = etm_read(ETMCNTENR3);
171 return 0;
172 case ETMCNTRLDEVRn(0):
173 *val = etm_read(ETMCNTRLDEVR0);
174 return 0;
175 case ETMCNTRLDEVRn(1):
176 *val = etm_read(ETMCNTRLDEVR1);
177 return 0;
178 case ETMCNTRLDEVRn(2):
179 *val = etm_read(ETMCNTRLDEVR2);
180 return 0;
181 case ETMCNTRLDEVRn(3):
182 *val = etm_read(ETMCNTRLDEVR3);
183 return 0;
184 case ETMCNTVRn(0):
185 *val = etm_read(ETMCNTVR0);
186 return 0;
187 case ETMCNTVRn(1):
188 *val = etm_read(ETMCNTVR1);
189 return 0;
190 case ETMCNTVRn(2):
191 *val = etm_read(ETMCNTVR2);
192 return 0;
193 case ETMCNTVRn(3):
194 *val = etm_read(ETMCNTVR3);
195 return 0;
196 case ETMSQ12EVR:
197 *val = etm_read(ETMSQ12EVR);
198 return 0;
199 case ETMSQ21EVR:
200 *val = etm_read(ETMSQ21EVR);
201 return 0;
202 case ETMSQ23EVR:
203 *val = etm_read(ETMSQ23EVR);
204 return 0;
205 case ETMSQ31EVR:
206 *val = etm_read(ETMSQ31EVR);
207 return 0;
208 case ETMSQ32EVR:
209 *val = etm_read(ETMSQ32EVR);
210 return 0;
211 case ETMSQ13EVR:
212 *val = etm_read(ETMSQ13EVR);
213 return 0;
214 case ETMSQR:
215 *val = etm_read(ETMSQR);
216 return 0;
217 case ETMEXTOUTEVRn(0):
218 *val = etm_read(ETMEXTOUTEVR0);
219 return 0;
220 case ETMEXTOUTEVRn(1):
221 *val = etm_read(ETMEXTOUTEVR1);
222 return 0;
223 case ETMEXTOUTEVRn(2):
224 *val = etm_read(ETMEXTOUTEVR2);
225 return 0;
226 case ETMEXTOUTEVRn(3):
227 *val = etm_read(ETMEXTOUTEVR3);
228 return 0;
229 case ETMCIDCVRn(0):
230 *val = etm_read(ETMCIDCVR0);
231 return 0;
232 case ETMCIDCVRn(1):
233 *val = etm_read(ETMCIDCVR1);
234 return 0;
235 case ETMCIDCVRn(2):
236 *val = etm_read(ETMCIDCVR2);
237 return 0;
238 case ETMCIDCMR:
239 *val = etm_read(ETMCIDCMR);
240 return 0;
241 case ETMIMPSPEC0:
242 *val = etm_read(ETMIMPSPEC0);
243 return 0;
244 case ETMIMPSPEC1:
245 *val = etm_read(ETMIMPSPEC1);
246 return 0;
247 case ETMIMPSPEC2:
248 *val = etm_read(ETMIMPSPEC2);
249 return 0;
250 case ETMIMPSPEC3:
251 *val = etm_read(ETMIMPSPEC3);
252 return 0;
253 case ETMIMPSPEC4:
254 *val = etm_read(ETMIMPSPEC4);
255 return 0;
256 case ETMIMPSPEC5:
257 *val = etm_read(ETMIMPSPEC5);
258 return 0;
259 case ETMIMPSPEC6:
260 *val = etm_read(ETMIMPSPEC6);
261 return 0;
262 case ETMIMPSPEC7:
263 *val = etm_read(ETMIMPSPEC7);
264 return 0;
265 case ETMSYNCFR:
266 *val = etm_read(ETMSYNCFR);
267 return 0;
268 case ETMIDR:
269 *val = etm_read(ETMIDR);
270 return 0;
271 case ETMCCER:
272 *val = etm_read(ETMCCER);
273 return 0;
274 case ETMEXTINSELR:
275 *val = etm_read(ETMEXTINSELR);
276 return 0;
277 case ETMTESSEICR:
278 *val = etm_read(ETMTESSEICR);
279 return 0;
280 case ETMEIBCR:
281 *val = etm_read(ETMEIBCR);
282 return 0;
283 case ETMTSEVR:
284 *val = etm_read(ETMTSEVR);
285 return 0;
286 case ETMAUXCR:
287 *val = etm_read(ETMAUXCR);
288 return 0;
289 case ETMTRACEIDR:
290 *val = etm_read(ETMTRACEIDR);
291 return 0;
292 case ETMVMIDCVR:
293 *val = etm_read(ETMVMIDCVR);
294 return 0;
295 case ETMOSLSR:
296 *val = etm_read(ETMOSLSR);
297 return 0;
298 case ETMOSSRR:
299 *val = etm_read(ETMOSSRR);
300 return 0;
301 case ETMPDCR:
302 *val = etm_read(ETMPDCR);
303 return 0;
304 case ETMPDSR:
305 *val = etm_read(ETMPDSR);
306 return 0;
307 default:
308 *val = 0;
309 return -EINVAL;
310 }
311}
312
313int etm_writel_cp14(u32 reg, u32 val)
314{
315 switch (reg) {
316 case ETMCR:
317 etm_write(val, ETMCR);
318 break;
319 case ETMTRIGGER:
320 etm_write(val, ETMTRIGGER);
321 break;
322 case ETMSR:
323 etm_write(val, ETMSR);
324 break;
325 case ETMTSSCR:
326 etm_write(val, ETMTSSCR);
327 break;
328 case ETMTEEVR:
329 etm_write(val, ETMTEEVR);
330 break;
331 case ETMTECR1:
332 etm_write(val, ETMTECR1);
333 break;
334 case ETMFFLR:
335 etm_write(val, ETMFFLR);
336 break;
337 case ETMACVRn(0):
338 etm_write(val, ETMACVR0);
339 break;
340 case ETMACVRn(1):
341 etm_write(val, ETMACVR1);
342 break;
343 case ETMACVRn(2):
344 etm_write(val, ETMACVR2);
345 break;
346 case ETMACVRn(3):
347 etm_write(val, ETMACVR3);
348 break;
349 case ETMACVRn(4):
350 etm_write(val, ETMACVR4);
351 break;
352 case ETMACVRn(5):
353 etm_write(val, ETMACVR5);
354 break;
355 case ETMACVRn(6):
356 etm_write(val, ETMACVR6);
357 break;
358 case ETMACVRn(7):
359 etm_write(val, ETMACVR7);
360 break;
361 case ETMACVRn(8):
362 etm_write(val, ETMACVR8);
363 break;
364 case ETMACVRn(9):
365 etm_write(val, ETMACVR9);
366 break;
367 case ETMACVRn(10):
368 etm_write(val, ETMACVR10);
369 break;
370 case ETMACVRn(11):
371 etm_write(val, ETMACVR11);
372 break;
373 case ETMACVRn(12):
374 etm_write(val, ETMACVR12);
375 break;
376 case ETMACVRn(13):
377 etm_write(val, ETMACVR13);
378 break;
379 case ETMACVRn(14):
380 etm_write(val, ETMACVR14);
381 break;
382 case ETMACVRn(15):
383 etm_write(val, ETMACVR15);
384 break;
385 case ETMACTRn(0):
386 etm_write(val, ETMACTR0);
387 break;
388 case ETMACTRn(1):
389 etm_write(val, ETMACTR1);
390 break;
391 case ETMACTRn(2):
392 etm_write(val, ETMACTR2);
393 break;
394 case ETMACTRn(3):
395 etm_write(val, ETMACTR3);
396 break;
397 case ETMACTRn(4):
398 etm_write(val, ETMACTR4);
399 break;
400 case ETMACTRn(5):
401 etm_write(val, ETMACTR5);
402 break;
403 case ETMACTRn(6):
404 etm_write(val, ETMACTR6);
405 break;
406 case ETMACTRn(7):
407 etm_write(val, ETMACTR7);
408 break;
409 case ETMACTRn(8):
410 etm_write(val, ETMACTR8);
411 break;
412 case ETMACTRn(9):
413 etm_write(val, ETMACTR9);
414 break;
415 case ETMACTRn(10):
416 etm_write(val, ETMACTR10);
417 break;
418 case ETMACTRn(11):
419 etm_write(val, ETMACTR11);
420 break;
421 case ETMACTRn(12):
422 etm_write(val, ETMACTR12);
423 break;
424 case ETMACTRn(13):
425 etm_write(val, ETMACTR13);
426 break;
427 case ETMACTRn(14):
428 etm_write(val, ETMACTR14);
429 break;
430 case ETMACTRn(15):
431 etm_write(val, ETMACTR15);
432 break;
433 case ETMCNTRLDVRn(0):
434 etm_write(val, ETMCNTRLDVR0);
435 break;
436 case ETMCNTRLDVRn(1):
437 etm_write(val, ETMCNTRLDVR1);
438 break;
439 case ETMCNTRLDVRn(2):
440 etm_write(val, ETMCNTRLDVR2);
441 break;
442 case ETMCNTRLDVRn(3):
443 etm_write(val, ETMCNTRLDVR3);
444 break;
445 case ETMCNTENRn(0):
446 etm_write(val, ETMCNTENR0);
447 break;
448 case ETMCNTENRn(1):
449 etm_write(val, ETMCNTENR1);
450 break;
451 case ETMCNTENRn(2):
452 etm_write(val, ETMCNTENR2);
453 break;
454 case ETMCNTENRn(3):
455 etm_write(val, ETMCNTENR3);
456 break;
457 case ETMCNTRLDEVRn(0):
458 etm_write(val, ETMCNTRLDEVR0);
459 break;
460 case ETMCNTRLDEVRn(1):
461 etm_write(val, ETMCNTRLDEVR1);
462 break;
463 case ETMCNTRLDEVRn(2):
464 etm_write(val, ETMCNTRLDEVR2);
465 break;
466 case ETMCNTRLDEVRn(3):
467 etm_write(val, ETMCNTRLDEVR3);
468 break;
469 case ETMCNTVRn(0):
470 etm_write(val, ETMCNTVR0);
471 break;
472 case ETMCNTVRn(1):
473 etm_write(val, ETMCNTVR1);
474 break;
475 case ETMCNTVRn(2):
476 etm_write(val, ETMCNTVR2);
477 break;
478 case ETMCNTVRn(3):
479 etm_write(val, ETMCNTVR3);
480 break;
481 case ETMSQ12EVR:
482 etm_write(val, ETMSQ12EVR);
483 break;
484 case ETMSQ21EVR:
485 etm_write(val, ETMSQ21EVR);
486 break;
487 case ETMSQ23EVR:
488 etm_write(val, ETMSQ23EVR);
489 break;
490 case ETMSQ31EVR:
491 etm_write(val, ETMSQ31EVR);
492 break;
493 case ETMSQ32EVR:
494 etm_write(val, ETMSQ32EVR);
495 break;
496 case ETMSQ13EVR:
497 etm_write(val, ETMSQ13EVR);
498 break;
499 case ETMSQR:
500 etm_write(val, ETMSQR);
501 break;
502 case ETMEXTOUTEVRn(0):
503 etm_write(val, ETMEXTOUTEVR0);
504 break;
505 case ETMEXTOUTEVRn(1):
506 etm_write(val, ETMEXTOUTEVR1);
507 break;
508 case ETMEXTOUTEVRn(2):
509 etm_write(val, ETMEXTOUTEVR2);
510 break;
511 case ETMEXTOUTEVRn(3):
512 etm_write(val, ETMEXTOUTEVR3);
513 break;
514 case ETMCIDCVRn(0):
515 etm_write(val, ETMCIDCVR0);
516 break;
517 case ETMCIDCVRn(1):
518 etm_write(val, ETMCIDCVR1);
519 break;
520 case ETMCIDCVRn(2):
521 etm_write(val, ETMCIDCVR2);
522 break;
523 case ETMCIDCMR:
524 etm_write(val, ETMCIDCMR);
525 break;
526 case ETMIMPSPEC0:
527 etm_write(val, ETMIMPSPEC0);
528 break;
529 case ETMIMPSPEC1:
530 etm_write(val, ETMIMPSPEC1);
531 break;
532 case ETMIMPSPEC2:
533 etm_write(val, ETMIMPSPEC2);
534 break;
535 case ETMIMPSPEC3:
536 etm_write(val, ETMIMPSPEC3);
537 break;
538 case ETMIMPSPEC4:
539 etm_write(val, ETMIMPSPEC4);
540 break;
541 case ETMIMPSPEC5:
542 etm_write(val, ETMIMPSPEC5);
543 break;
544 case ETMIMPSPEC6:
545 etm_write(val, ETMIMPSPEC6);
546 break;
547 case ETMIMPSPEC7:
548 etm_write(val, ETMIMPSPEC7);
549 break;
550 case ETMSYNCFR:
551 etm_write(val, ETMSYNCFR);
552 break;
553 case ETMEXTINSELR:
554 etm_write(val, ETMEXTINSELR);
555 break;
556 case ETMTESSEICR:
557 etm_write(val, ETMTESSEICR);
558 break;
559 case ETMEIBCR:
560 etm_write(val, ETMEIBCR);
561 break;
562 case ETMTSEVR:
563 etm_write(val, ETMTSEVR);
564 break;
565 case ETMAUXCR:
566 etm_write(val, ETMAUXCR);
567 break;
568 case ETMTRACEIDR:
569 etm_write(val, ETMTRACEIDR);
570 break;
571 case ETMVMIDCVR:
572 etm_write(val, ETMVMIDCVR);
573 break;
574 case ETMOSLAR:
575 etm_write(val, ETMOSLAR);
576 break;
577 case ETMOSSRR:
578 etm_write(val, ETMOSSRR);
579 break;
580 case ETMPDCR:
581 etm_write(val, ETMPDCR);
582 break;
583 case ETMPDSR:
584 etm_write(val, ETMPDSR);
585 break;
586 default:
587 return -EINVAL;
588 }
589
590 return 0;
591}