Merge branch 'for-6.9/lenovo' into for-linus
[linux-2.6-microblaze.git] / drivers / hwtracing / coresight / coresight-etm-cp14.c
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
15 int 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
306 int 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 }