Linux Audio

Check our new training course

Loading...
v6.13.7
  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}
v4.10.11
  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}