1 /* Copyright (c) 2012, The Linux Foundation. All rights reserved.
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.
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.
13 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
15 #include <linux/kernel.h>
16 #include <linux/types.h>
17 #include <linux/bug.h>
18 #include <asm/hardware/cp14.h>
20 #include "coresight-etm.h"
22 int etm_readl_cp14(u32 reg, unsigned int *val)
26 *val = etm_read(ETMCR);
29 *val = etm_read(ETMCCR);
32 *val = etm_read(ETMTRIGGER);
35 *val = etm_read(ETMSR);
38 *val = etm_read(ETMSCR);
41 *val = etm_read(ETMTSSCR);
44 *val = etm_read(ETMTEEVR);
47 *val = etm_read(ETMTECR1);
50 *val = etm_read(ETMFFLR);
53 *val = etm_read(ETMACVR0);
56 *val = etm_read(ETMACVR1);
59 *val = etm_read(ETMACVR2);
62 *val = etm_read(ETMACVR3);
65 *val = etm_read(ETMACVR4);
68 *val = etm_read(ETMACVR5);
71 *val = etm_read(ETMACVR6);
74 *val = etm_read(ETMACVR7);
77 *val = etm_read(ETMACVR8);
80 *val = etm_read(ETMACVR9);
83 *val = etm_read(ETMACVR10);
86 *val = etm_read(ETMACVR11);
89 *val = etm_read(ETMACVR12);
92 *val = etm_read(ETMACVR13);
95 *val = etm_read(ETMACVR14);
98 *val = etm_read(ETMACVR15);
101 *val = etm_read(ETMACTR0);
104 *val = etm_read(ETMACTR1);
107 *val = etm_read(ETMACTR2);
110 *val = etm_read(ETMACTR3);
113 *val = etm_read(ETMACTR4);
116 *val = etm_read(ETMACTR5);
119 *val = etm_read(ETMACTR6);
122 *val = etm_read(ETMACTR7);
125 *val = etm_read(ETMACTR8);
128 *val = etm_read(ETMACTR9);
131 *val = etm_read(ETMACTR10);
134 *val = etm_read(ETMACTR11);
137 *val = etm_read(ETMACTR12);
140 *val = etm_read(ETMACTR13);
143 *val = etm_read(ETMACTR14);
146 *val = etm_read(ETMACTR15);
148 case ETMCNTRLDVRn(0):
149 *val = etm_read(ETMCNTRLDVR0);
151 case ETMCNTRLDVRn(1):
152 *val = etm_read(ETMCNTRLDVR1);
154 case ETMCNTRLDVRn(2):
155 *val = etm_read(ETMCNTRLDVR2);
157 case ETMCNTRLDVRn(3):
158 *val = etm_read(ETMCNTRLDVR3);
161 *val = etm_read(ETMCNTENR0);
164 *val = etm_read(ETMCNTENR1);
167 *val = etm_read(ETMCNTENR2);
170 *val = etm_read(ETMCNTENR3);
172 case ETMCNTRLDEVRn(0):
173 *val = etm_read(ETMCNTRLDEVR0);
175 case ETMCNTRLDEVRn(1):
176 *val = etm_read(ETMCNTRLDEVR1);
178 case ETMCNTRLDEVRn(2):
179 *val = etm_read(ETMCNTRLDEVR2);
181 case ETMCNTRLDEVRn(3):
182 *val = etm_read(ETMCNTRLDEVR3);
185 *val = etm_read(ETMCNTVR0);
188 *val = etm_read(ETMCNTVR1);
191 *val = etm_read(ETMCNTVR2);
194 *val = etm_read(ETMCNTVR3);
197 *val = etm_read(ETMSQ12EVR);
200 *val = etm_read(ETMSQ21EVR);
203 *val = etm_read(ETMSQ23EVR);
206 *val = etm_read(ETMSQ31EVR);
209 *val = etm_read(ETMSQ32EVR);
212 *val = etm_read(ETMSQ13EVR);
215 *val = etm_read(ETMSQR);
217 case ETMEXTOUTEVRn(0):
218 *val = etm_read(ETMEXTOUTEVR0);
220 case ETMEXTOUTEVRn(1):
221 *val = etm_read(ETMEXTOUTEVR1);
223 case ETMEXTOUTEVRn(2):
224 *val = etm_read(ETMEXTOUTEVR2);
226 case ETMEXTOUTEVRn(3):
227 *val = etm_read(ETMEXTOUTEVR3);
230 *val = etm_read(ETMCIDCVR0);
233 *val = etm_read(ETMCIDCVR1);
236 *val = etm_read(ETMCIDCVR2);
239 *val = etm_read(ETMCIDCMR);
242 *val = etm_read(ETMIMPSPEC0);
245 *val = etm_read(ETMIMPSPEC1);
248 *val = etm_read(ETMIMPSPEC2);
251 *val = etm_read(ETMIMPSPEC3);
254 *val = etm_read(ETMIMPSPEC4);
257 *val = etm_read(ETMIMPSPEC5);
260 *val = etm_read(ETMIMPSPEC6);
263 *val = etm_read(ETMIMPSPEC7);
266 *val = etm_read(ETMSYNCFR);
269 *val = etm_read(ETMIDR);
272 *val = etm_read(ETMCCER);
275 *val = etm_read(ETMEXTINSELR);
278 *val = etm_read(ETMTESSEICR);
281 *val = etm_read(ETMEIBCR);
284 *val = etm_read(ETMTSEVR);
287 *val = etm_read(ETMAUXCR);
290 *val = etm_read(ETMTRACEIDR);
293 *val = etm_read(ETMVMIDCVR);
296 *val = etm_read(ETMOSLSR);
299 *val = etm_read(ETMOSSRR);
302 *val = etm_read(ETMPDCR);
305 *val = etm_read(ETMPDSR);
313 int etm_writel_cp14(u32 reg, u32 val)
317 etm_write(val, ETMCR);
320 etm_write(val, ETMTRIGGER);
323 etm_write(val, ETMSR);
326 etm_write(val, ETMTSSCR);
329 etm_write(val, ETMTEEVR);
332 etm_write(val, ETMTECR1);
335 etm_write(val, ETMFFLR);
338 etm_write(val, ETMACVR0);
341 etm_write(val, ETMACVR1);
344 etm_write(val, ETMACVR2);
347 etm_write(val, ETMACVR3);
350 etm_write(val, ETMACVR4);
353 etm_write(val, ETMACVR5);
356 etm_write(val, ETMACVR6);
359 etm_write(val, ETMACVR7);
362 etm_write(val, ETMACVR8);
365 etm_write(val, ETMACVR9);
368 etm_write(val, ETMACVR10);
371 etm_write(val, ETMACVR11);
374 etm_write(val, ETMACVR12);
377 etm_write(val, ETMACVR13);
380 etm_write(val, ETMACVR14);
383 etm_write(val, ETMACVR15);
386 etm_write(val, ETMACTR0);
389 etm_write(val, ETMACTR1);
392 etm_write(val, ETMACTR2);
395 etm_write(val, ETMACTR3);
398 etm_write(val, ETMACTR4);
401 etm_write(val, ETMACTR5);
404 etm_write(val, ETMACTR6);
407 etm_write(val, ETMACTR7);
410 etm_write(val, ETMACTR8);
413 etm_write(val, ETMACTR9);
416 etm_write(val, ETMACTR10);
419 etm_write(val, ETMACTR11);
422 etm_write(val, ETMACTR12);
425 etm_write(val, ETMACTR13);
428 etm_write(val, ETMACTR14);
431 etm_write(val, ETMACTR15);
433 case ETMCNTRLDVRn(0):
434 etm_write(val, ETMCNTRLDVR0);
436 case ETMCNTRLDVRn(1):
437 etm_write(val, ETMCNTRLDVR1);
439 case ETMCNTRLDVRn(2):
440 etm_write(val, ETMCNTRLDVR2);
442 case ETMCNTRLDVRn(3):
443 etm_write(val, ETMCNTRLDVR3);
446 etm_write(val, ETMCNTENR0);
449 etm_write(val, ETMCNTENR1);
452 etm_write(val, ETMCNTENR2);
455 etm_write(val, ETMCNTENR3);
457 case ETMCNTRLDEVRn(0):
458 etm_write(val, ETMCNTRLDEVR0);
460 case ETMCNTRLDEVRn(1):
461 etm_write(val, ETMCNTRLDEVR1);
463 case ETMCNTRLDEVRn(2):
464 etm_write(val, ETMCNTRLDEVR2);
466 case ETMCNTRLDEVRn(3):
467 etm_write(val, ETMCNTRLDEVR3);
470 etm_write(val, ETMCNTVR0);
473 etm_write(val, ETMCNTVR1);
476 etm_write(val, ETMCNTVR2);
479 etm_write(val, ETMCNTVR3);
482 etm_write(val, ETMSQ12EVR);
485 etm_write(val, ETMSQ21EVR);
488 etm_write(val, ETMSQ23EVR);
491 etm_write(val, ETMSQ31EVR);
494 etm_write(val, ETMSQ32EVR);
497 etm_write(val, ETMSQ13EVR);
500 etm_write(val, ETMSQR);
502 case ETMEXTOUTEVRn(0):
503 etm_write(val, ETMEXTOUTEVR0);
505 case ETMEXTOUTEVRn(1):
506 etm_write(val, ETMEXTOUTEVR1);
508 case ETMEXTOUTEVRn(2):
509 etm_write(val, ETMEXTOUTEVR2);
511 case ETMEXTOUTEVRn(3):
512 etm_write(val, ETMEXTOUTEVR3);
515 etm_write(val, ETMCIDCVR0);
518 etm_write(val, ETMCIDCVR1);
521 etm_write(val, ETMCIDCVR2);
524 etm_write(val, ETMCIDCMR);
527 etm_write(val, ETMIMPSPEC0);
530 etm_write(val, ETMIMPSPEC1);
533 etm_write(val, ETMIMPSPEC2);
536 etm_write(val, ETMIMPSPEC3);
539 etm_write(val, ETMIMPSPEC4);
542 etm_write(val, ETMIMPSPEC5);
545 etm_write(val, ETMIMPSPEC6);
548 etm_write(val, ETMIMPSPEC7);
551 etm_write(val, ETMSYNCFR);
554 etm_write(val, ETMEXTINSELR);
557 etm_write(val, ETMTESSEICR);
560 etm_write(val, ETMEIBCR);
563 etm_write(val, ETMTSEVR);
566 etm_write(val, ETMAUXCR);
569 etm_write(val, ETMTRACEIDR);
572 etm_write(val, ETMVMIDCVR);
575 etm_write(val, ETMOSLAR);
578 etm_write(val, ETMOSSRR);
581 etm_write(val, ETMPDCR);
584 etm_write(val, ETMPDSR);