Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git.kernel.org/pub/scm/linux...
[cascardo/linux.git] / drivers / coresight / coresight-etm-cp14.c
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
22 int 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
313 int 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 }