1ad0dfdfdSMathieu Poirier // SPDX-License-Identifier: GPL-2.0
2ad0dfdfdSMathieu Poirier /*
3ad0dfdfdSMathieu Poirier  * Copyright (c) 2012, The Linux Foundation. All rights reserved.
401081f5aSMathieu Poirier  */
501081f5aSMathieu Poirier 
601081f5aSMathieu Poirier #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
701081f5aSMathieu Poirier 
801081f5aSMathieu Poirier #include <linux/kernel.h>
901081f5aSMathieu Poirier #include <linux/types.h>
1001081f5aSMathieu Poirier #include <linux/bug.h>
1101081f5aSMathieu Poirier #include <asm/hardware/cp14.h>
1201081f5aSMathieu Poirier 
1301081f5aSMathieu Poirier #include "coresight-etm.h"
1401081f5aSMathieu Poirier 
etm_readl_cp14(u32 reg,unsigned int * val)1501081f5aSMathieu Poirier int etm_readl_cp14(u32 reg, unsigned int *val)
1601081f5aSMathieu Poirier {
1701081f5aSMathieu Poirier 	switch (reg) {
1801081f5aSMathieu Poirier 	case ETMCR:
1901081f5aSMathieu Poirier 		*val = etm_read(ETMCR);
2001081f5aSMathieu Poirier 		return 0;
2101081f5aSMathieu Poirier 	case ETMCCR:
2201081f5aSMathieu Poirier 		*val = etm_read(ETMCCR);
2301081f5aSMathieu Poirier 		return 0;
2401081f5aSMathieu Poirier 	case ETMTRIGGER:
2501081f5aSMathieu Poirier 		*val = etm_read(ETMTRIGGER);
2601081f5aSMathieu Poirier 		return 0;
2701081f5aSMathieu Poirier 	case ETMSR:
2801081f5aSMathieu Poirier 		*val = etm_read(ETMSR);
2901081f5aSMathieu Poirier 		return 0;
3001081f5aSMathieu Poirier 	case ETMSCR:
3101081f5aSMathieu Poirier 		*val = etm_read(ETMSCR);
3201081f5aSMathieu Poirier 		return 0;
3301081f5aSMathieu Poirier 	case ETMTSSCR:
3401081f5aSMathieu Poirier 		*val = etm_read(ETMTSSCR);
3501081f5aSMathieu Poirier 		return 0;
3601081f5aSMathieu Poirier 	case ETMTEEVR:
3701081f5aSMathieu Poirier 		*val = etm_read(ETMTEEVR);
3801081f5aSMathieu Poirier 		return 0;
3901081f5aSMathieu Poirier 	case ETMTECR1:
4001081f5aSMathieu Poirier 		*val = etm_read(ETMTECR1);
4101081f5aSMathieu Poirier 		return 0;
4201081f5aSMathieu Poirier 	case ETMFFLR:
4301081f5aSMathieu Poirier 		*val = etm_read(ETMFFLR);
4401081f5aSMathieu Poirier 		return 0;
4501081f5aSMathieu Poirier 	case ETMACVRn(0):
4601081f5aSMathieu Poirier 		*val = etm_read(ETMACVR0);
4701081f5aSMathieu Poirier 		return 0;
4801081f5aSMathieu Poirier 	case ETMACVRn(1):
4901081f5aSMathieu Poirier 		*val = etm_read(ETMACVR1);
5001081f5aSMathieu Poirier 		return 0;
5101081f5aSMathieu Poirier 	case ETMACVRn(2):
5201081f5aSMathieu Poirier 		*val = etm_read(ETMACVR2);
5301081f5aSMathieu Poirier 		return 0;
5401081f5aSMathieu Poirier 	case ETMACVRn(3):
5501081f5aSMathieu Poirier 		*val = etm_read(ETMACVR3);
5601081f5aSMathieu Poirier 		return 0;
5701081f5aSMathieu Poirier 	case ETMACVRn(4):
5801081f5aSMathieu Poirier 		*val = etm_read(ETMACVR4);
5901081f5aSMathieu Poirier 		return 0;
6001081f5aSMathieu Poirier 	case ETMACVRn(5):
6101081f5aSMathieu Poirier 		*val = etm_read(ETMACVR5);
6201081f5aSMathieu Poirier 		return 0;
6301081f5aSMathieu Poirier 	case ETMACVRn(6):
6401081f5aSMathieu Poirier 		*val = etm_read(ETMACVR6);
6501081f5aSMathieu Poirier 		return 0;
6601081f5aSMathieu Poirier 	case ETMACVRn(7):
6701081f5aSMathieu Poirier 		*val = etm_read(ETMACVR7);
6801081f5aSMathieu Poirier 		return 0;
6901081f5aSMathieu Poirier 	case ETMACVRn(8):
7001081f5aSMathieu Poirier 		*val = etm_read(ETMACVR8);
7101081f5aSMathieu Poirier 		return 0;
7201081f5aSMathieu Poirier 	case ETMACVRn(9):
7301081f5aSMathieu Poirier 		*val = etm_read(ETMACVR9);
7401081f5aSMathieu Poirier 		return 0;
7501081f5aSMathieu Poirier 	case ETMACVRn(10):
7601081f5aSMathieu Poirier 		*val = etm_read(ETMACVR10);
7701081f5aSMathieu Poirier 		return 0;
7801081f5aSMathieu Poirier 	case ETMACVRn(11):
7901081f5aSMathieu Poirier 		*val = etm_read(ETMACVR11);
8001081f5aSMathieu Poirier 		return 0;
8101081f5aSMathieu Poirier 	case ETMACVRn(12):
8201081f5aSMathieu Poirier 		*val = etm_read(ETMACVR12);
8301081f5aSMathieu Poirier 		return 0;
8401081f5aSMathieu Poirier 	case ETMACVRn(13):
8501081f5aSMathieu Poirier 		*val = etm_read(ETMACVR13);
8601081f5aSMathieu Poirier 		return 0;
8701081f5aSMathieu Poirier 	case ETMACVRn(14):
8801081f5aSMathieu Poirier 		*val = etm_read(ETMACVR14);
8901081f5aSMathieu Poirier 		return 0;
9001081f5aSMathieu Poirier 	case ETMACVRn(15):
9101081f5aSMathieu Poirier 		*val = etm_read(ETMACVR15);
9201081f5aSMathieu Poirier 		return 0;
9301081f5aSMathieu Poirier 	case ETMACTRn(0):
9401081f5aSMathieu Poirier 		*val = etm_read(ETMACTR0);
9501081f5aSMathieu Poirier 		return 0;
9601081f5aSMathieu Poirier 	case ETMACTRn(1):
9701081f5aSMathieu Poirier 		*val = etm_read(ETMACTR1);
9801081f5aSMathieu Poirier 		return 0;
9901081f5aSMathieu Poirier 	case ETMACTRn(2):
10001081f5aSMathieu Poirier 		*val = etm_read(ETMACTR2);
10101081f5aSMathieu Poirier 		return 0;
10201081f5aSMathieu Poirier 	case ETMACTRn(3):
10301081f5aSMathieu Poirier 		*val = etm_read(ETMACTR3);
10401081f5aSMathieu Poirier 		return 0;
10501081f5aSMathieu Poirier 	case ETMACTRn(4):
10601081f5aSMathieu Poirier 		*val = etm_read(ETMACTR4);
10701081f5aSMathieu Poirier 		return 0;
10801081f5aSMathieu Poirier 	case ETMACTRn(5):
10901081f5aSMathieu Poirier 		*val = etm_read(ETMACTR5);
11001081f5aSMathieu Poirier 		return 0;
11101081f5aSMathieu Poirier 	case ETMACTRn(6):
11201081f5aSMathieu Poirier 		*val = etm_read(ETMACTR6);
11301081f5aSMathieu Poirier 		return 0;
11401081f5aSMathieu Poirier 	case ETMACTRn(7):
11501081f5aSMathieu Poirier 		*val = etm_read(ETMACTR7);
11601081f5aSMathieu Poirier 		return 0;
11701081f5aSMathieu Poirier 	case ETMACTRn(8):
11801081f5aSMathieu Poirier 		*val = etm_read(ETMACTR8);
11901081f5aSMathieu Poirier 		return 0;
12001081f5aSMathieu Poirier 	case ETMACTRn(9):
12101081f5aSMathieu Poirier 		*val = etm_read(ETMACTR9);
12201081f5aSMathieu Poirier 		return 0;
12301081f5aSMathieu Poirier 	case ETMACTRn(10):
12401081f5aSMathieu Poirier 		*val = etm_read(ETMACTR10);
12501081f5aSMathieu Poirier 		return 0;
12601081f5aSMathieu Poirier 	case ETMACTRn(11):
12701081f5aSMathieu Poirier 		*val = etm_read(ETMACTR11);
12801081f5aSMathieu Poirier 		return 0;
12901081f5aSMathieu Poirier 	case ETMACTRn(12):
13001081f5aSMathieu Poirier 		*val = etm_read(ETMACTR12);
13101081f5aSMathieu Poirier 		return 0;
13201081f5aSMathieu Poirier 	case ETMACTRn(13):
13301081f5aSMathieu Poirier 		*val = etm_read(ETMACTR13);
13401081f5aSMathieu Poirier 		return 0;
13501081f5aSMathieu Poirier 	case ETMACTRn(14):
13601081f5aSMathieu Poirier 		*val = etm_read(ETMACTR14);
13701081f5aSMathieu Poirier 		return 0;
13801081f5aSMathieu Poirier 	case ETMACTRn(15):
13901081f5aSMathieu Poirier 		*val = etm_read(ETMACTR15);
14001081f5aSMathieu Poirier 		return 0;
14101081f5aSMathieu Poirier 	case ETMCNTRLDVRn(0):
14201081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDVR0);
14301081f5aSMathieu Poirier 		return 0;
14401081f5aSMathieu Poirier 	case ETMCNTRLDVRn(1):
14501081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDVR1);
14601081f5aSMathieu Poirier 		return 0;
14701081f5aSMathieu Poirier 	case ETMCNTRLDVRn(2):
14801081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDVR2);
14901081f5aSMathieu Poirier 		return 0;
15001081f5aSMathieu Poirier 	case ETMCNTRLDVRn(3):
15101081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDVR3);
15201081f5aSMathieu Poirier 		return 0;
15301081f5aSMathieu Poirier 	case ETMCNTENRn(0):
15401081f5aSMathieu Poirier 		*val = etm_read(ETMCNTENR0);
15501081f5aSMathieu Poirier 		return 0;
15601081f5aSMathieu Poirier 	case ETMCNTENRn(1):
15701081f5aSMathieu Poirier 		*val = etm_read(ETMCNTENR1);
15801081f5aSMathieu Poirier 		return 0;
15901081f5aSMathieu Poirier 	case ETMCNTENRn(2):
16001081f5aSMathieu Poirier 		*val = etm_read(ETMCNTENR2);
16101081f5aSMathieu Poirier 		return 0;
16201081f5aSMathieu Poirier 	case ETMCNTENRn(3):
16301081f5aSMathieu Poirier 		*val = etm_read(ETMCNTENR3);
16401081f5aSMathieu Poirier 		return 0;
16501081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(0):
16601081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDEVR0);
16701081f5aSMathieu Poirier 		return 0;
16801081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(1):
16901081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDEVR1);
17001081f5aSMathieu Poirier 		return 0;
17101081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(2):
17201081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDEVR2);
17301081f5aSMathieu Poirier 		return 0;
17401081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(3):
17501081f5aSMathieu Poirier 		*val = etm_read(ETMCNTRLDEVR3);
17601081f5aSMathieu Poirier 		return 0;
17701081f5aSMathieu Poirier 	case ETMCNTVRn(0):
17801081f5aSMathieu Poirier 		*val = etm_read(ETMCNTVR0);
17901081f5aSMathieu Poirier 		return 0;
18001081f5aSMathieu Poirier 	case ETMCNTVRn(1):
18101081f5aSMathieu Poirier 		*val = etm_read(ETMCNTVR1);
18201081f5aSMathieu Poirier 		return 0;
18301081f5aSMathieu Poirier 	case ETMCNTVRn(2):
18401081f5aSMathieu Poirier 		*val = etm_read(ETMCNTVR2);
18501081f5aSMathieu Poirier 		return 0;
18601081f5aSMathieu Poirier 	case ETMCNTVRn(3):
18701081f5aSMathieu Poirier 		*val = etm_read(ETMCNTVR3);
18801081f5aSMathieu Poirier 		return 0;
18901081f5aSMathieu Poirier 	case ETMSQ12EVR:
19001081f5aSMathieu Poirier 		*val = etm_read(ETMSQ12EVR);
19101081f5aSMathieu Poirier 		return 0;
19201081f5aSMathieu Poirier 	case ETMSQ21EVR:
19301081f5aSMathieu Poirier 		*val = etm_read(ETMSQ21EVR);
19401081f5aSMathieu Poirier 		return 0;
19501081f5aSMathieu Poirier 	case ETMSQ23EVR:
19601081f5aSMathieu Poirier 		*val = etm_read(ETMSQ23EVR);
19701081f5aSMathieu Poirier 		return 0;
19801081f5aSMathieu Poirier 	case ETMSQ31EVR:
19901081f5aSMathieu Poirier 		*val = etm_read(ETMSQ31EVR);
20001081f5aSMathieu Poirier 		return 0;
20101081f5aSMathieu Poirier 	case ETMSQ32EVR:
20201081f5aSMathieu Poirier 		*val = etm_read(ETMSQ32EVR);
20301081f5aSMathieu Poirier 		return 0;
20401081f5aSMathieu Poirier 	case ETMSQ13EVR:
20501081f5aSMathieu Poirier 		*val = etm_read(ETMSQ13EVR);
20601081f5aSMathieu Poirier 		return 0;
20701081f5aSMathieu Poirier 	case ETMSQR:
20801081f5aSMathieu Poirier 		*val = etm_read(ETMSQR);
20901081f5aSMathieu Poirier 		return 0;
21001081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(0):
21101081f5aSMathieu Poirier 		*val = etm_read(ETMEXTOUTEVR0);
21201081f5aSMathieu Poirier 		return 0;
21301081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(1):
21401081f5aSMathieu Poirier 		*val = etm_read(ETMEXTOUTEVR1);
21501081f5aSMathieu Poirier 		return 0;
21601081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(2):
21701081f5aSMathieu Poirier 		*val = etm_read(ETMEXTOUTEVR2);
21801081f5aSMathieu Poirier 		return 0;
21901081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(3):
22001081f5aSMathieu Poirier 		*val = etm_read(ETMEXTOUTEVR3);
22101081f5aSMathieu Poirier 		return 0;
22201081f5aSMathieu Poirier 	case ETMCIDCVRn(0):
22301081f5aSMathieu Poirier 		*val = etm_read(ETMCIDCVR0);
22401081f5aSMathieu Poirier 		return 0;
22501081f5aSMathieu Poirier 	case ETMCIDCVRn(1):
22601081f5aSMathieu Poirier 		*val = etm_read(ETMCIDCVR1);
22701081f5aSMathieu Poirier 		return 0;
22801081f5aSMathieu Poirier 	case ETMCIDCVRn(2):
22901081f5aSMathieu Poirier 		*val = etm_read(ETMCIDCVR2);
23001081f5aSMathieu Poirier 		return 0;
23101081f5aSMathieu Poirier 	case ETMCIDCMR:
23201081f5aSMathieu Poirier 		*val = etm_read(ETMCIDCMR);
23301081f5aSMathieu Poirier 		return 0;
23401081f5aSMathieu Poirier 	case ETMIMPSPEC0:
23501081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC0);
23601081f5aSMathieu Poirier 		return 0;
23701081f5aSMathieu Poirier 	case ETMIMPSPEC1:
23801081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC1);
23901081f5aSMathieu Poirier 		return 0;
24001081f5aSMathieu Poirier 	case ETMIMPSPEC2:
24101081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC2);
24201081f5aSMathieu Poirier 		return 0;
24301081f5aSMathieu Poirier 	case ETMIMPSPEC3:
24401081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC3);
24501081f5aSMathieu Poirier 		return 0;
24601081f5aSMathieu Poirier 	case ETMIMPSPEC4:
24701081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC4);
24801081f5aSMathieu Poirier 		return 0;
24901081f5aSMathieu Poirier 	case ETMIMPSPEC5:
25001081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC5);
25101081f5aSMathieu Poirier 		return 0;
25201081f5aSMathieu Poirier 	case ETMIMPSPEC6:
25301081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC6);
25401081f5aSMathieu Poirier 		return 0;
25501081f5aSMathieu Poirier 	case ETMIMPSPEC7:
25601081f5aSMathieu Poirier 		*val = etm_read(ETMIMPSPEC7);
25701081f5aSMathieu Poirier 		return 0;
25801081f5aSMathieu Poirier 	case ETMSYNCFR:
25901081f5aSMathieu Poirier 		*val = etm_read(ETMSYNCFR);
26001081f5aSMathieu Poirier 		return 0;
26101081f5aSMathieu Poirier 	case ETMIDR:
26201081f5aSMathieu Poirier 		*val = etm_read(ETMIDR);
26301081f5aSMathieu Poirier 		return 0;
26401081f5aSMathieu Poirier 	case ETMCCER:
26501081f5aSMathieu Poirier 		*val = etm_read(ETMCCER);
26601081f5aSMathieu Poirier 		return 0;
26701081f5aSMathieu Poirier 	case ETMEXTINSELR:
26801081f5aSMathieu Poirier 		*val = etm_read(ETMEXTINSELR);
26901081f5aSMathieu Poirier 		return 0;
27001081f5aSMathieu Poirier 	case ETMTESSEICR:
27101081f5aSMathieu Poirier 		*val = etm_read(ETMTESSEICR);
27201081f5aSMathieu Poirier 		return 0;
27301081f5aSMathieu Poirier 	case ETMEIBCR:
27401081f5aSMathieu Poirier 		*val = etm_read(ETMEIBCR);
27501081f5aSMathieu Poirier 		return 0;
27601081f5aSMathieu Poirier 	case ETMTSEVR:
27701081f5aSMathieu Poirier 		*val = etm_read(ETMTSEVR);
27801081f5aSMathieu Poirier 		return 0;
27901081f5aSMathieu Poirier 	case ETMAUXCR:
28001081f5aSMathieu Poirier 		*val = etm_read(ETMAUXCR);
28101081f5aSMathieu Poirier 		return 0;
28201081f5aSMathieu Poirier 	case ETMTRACEIDR:
28301081f5aSMathieu Poirier 		*val = etm_read(ETMTRACEIDR);
28401081f5aSMathieu Poirier 		return 0;
28501081f5aSMathieu Poirier 	case ETMVMIDCVR:
28601081f5aSMathieu Poirier 		*val = etm_read(ETMVMIDCVR);
28701081f5aSMathieu Poirier 		return 0;
28801081f5aSMathieu Poirier 	case ETMOSLSR:
28901081f5aSMathieu Poirier 		*val = etm_read(ETMOSLSR);
29001081f5aSMathieu Poirier 		return 0;
29101081f5aSMathieu Poirier 	case ETMOSSRR:
29201081f5aSMathieu Poirier 		*val = etm_read(ETMOSSRR);
29301081f5aSMathieu Poirier 		return 0;
29401081f5aSMathieu Poirier 	case ETMPDCR:
29501081f5aSMathieu Poirier 		*val = etm_read(ETMPDCR);
29601081f5aSMathieu Poirier 		return 0;
29701081f5aSMathieu Poirier 	case ETMPDSR:
29801081f5aSMathieu Poirier 		*val = etm_read(ETMPDSR);
29901081f5aSMathieu Poirier 		return 0;
30001081f5aSMathieu Poirier 	default:
30101081f5aSMathieu Poirier 		*val = 0;
30201081f5aSMathieu Poirier 		return -EINVAL;
30301081f5aSMathieu Poirier 	}
30401081f5aSMathieu Poirier }
30501081f5aSMathieu Poirier 
etm_writel_cp14(u32 reg,u32 val)30601081f5aSMathieu Poirier int etm_writel_cp14(u32 reg, u32 val)
30701081f5aSMathieu Poirier {
30801081f5aSMathieu Poirier 	switch (reg) {
30901081f5aSMathieu Poirier 	case ETMCR:
31001081f5aSMathieu Poirier 		etm_write(val, ETMCR);
31101081f5aSMathieu Poirier 		break;
31201081f5aSMathieu Poirier 	case ETMTRIGGER:
31301081f5aSMathieu Poirier 		etm_write(val, ETMTRIGGER);
31401081f5aSMathieu Poirier 		break;
31501081f5aSMathieu Poirier 	case ETMSR:
31601081f5aSMathieu Poirier 		etm_write(val, ETMSR);
31701081f5aSMathieu Poirier 		break;
31801081f5aSMathieu Poirier 	case ETMTSSCR:
31901081f5aSMathieu Poirier 		etm_write(val, ETMTSSCR);
32001081f5aSMathieu Poirier 		break;
32101081f5aSMathieu Poirier 	case ETMTEEVR:
32201081f5aSMathieu Poirier 		etm_write(val, ETMTEEVR);
32301081f5aSMathieu Poirier 		break;
32401081f5aSMathieu Poirier 	case ETMTECR1:
32501081f5aSMathieu Poirier 		etm_write(val, ETMTECR1);
32601081f5aSMathieu Poirier 		break;
32701081f5aSMathieu Poirier 	case ETMFFLR:
32801081f5aSMathieu Poirier 		etm_write(val, ETMFFLR);
32901081f5aSMathieu Poirier 		break;
33001081f5aSMathieu Poirier 	case ETMACVRn(0):
33101081f5aSMathieu Poirier 		etm_write(val, ETMACVR0);
33201081f5aSMathieu Poirier 		break;
33301081f5aSMathieu Poirier 	case ETMACVRn(1):
33401081f5aSMathieu Poirier 		etm_write(val, ETMACVR1);
33501081f5aSMathieu Poirier 		break;
33601081f5aSMathieu Poirier 	case ETMACVRn(2):
33701081f5aSMathieu Poirier 		etm_write(val, ETMACVR2);
33801081f5aSMathieu Poirier 		break;
33901081f5aSMathieu Poirier 	case ETMACVRn(3):
34001081f5aSMathieu Poirier 		etm_write(val, ETMACVR3);
34101081f5aSMathieu Poirier 		break;
34201081f5aSMathieu Poirier 	case ETMACVRn(4):
34301081f5aSMathieu Poirier 		etm_write(val, ETMACVR4);
34401081f5aSMathieu Poirier 		break;
34501081f5aSMathieu Poirier 	case ETMACVRn(5):
34601081f5aSMathieu Poirier 		etm_write(val, ETMACVR5);
34701081f5aSMathieu Poirier 		break;
34801081f5aSMathieu Poirier 	case ETMACVRn(6):
34901081f5aSMathieu Poirier 		etm_write(val, ETMACVR6);
35001081f5aSMathieu Poirier 		break;
35101081f5aSMathieu Poirier 	case ETMACVRn(7):
35201081f5aSMathieu Poirier 		etm_write(val, ETMACVR7);
35301081f5aSMathieu Poirier 		break;
35401081f5aSMathieu Poirier 	case ETMACVRn(8):
35501081f5aSMathieu Poirier 		etm_write(val, ETMACVR8);
35601081f5aSMathieu Poirier 		break;
35701081f5aSMathieu Poirier 	case ETMACVRn(9):
35801081f5aSMathieu Poirier 		etm_write(val, ETMACVR9);
35901081f5aSMathieu Poirier 		break;
36001081f5aSMathieu Poirier 	case ETMACVRn(10):
36101081f5aSMathieu Poirier 		etm_write(val, ETMACVR10);
36201081f5aSMathieu Poirier 		break;
36301081f5aSMathieu Poirier 	case ETMACVRn(11):
36401081f5aSMathieu Poirier 		etm_write(val, ETMACVR11);
36501081f5aSMathieu Poirier 		break;
36601081f5aSMathieu Poirier 	case ETMACVRn(12):
36701081f5aSMathieu Poirier 		etm_write(val, ETMACVR12);
36801081f5aSMathieu Poirier 		break;
36901081f5aSMathieu Poirier 	case ETMACVRn(13):
37001081f5aSMathieu Poirier 		etm_write(val, ETMACVR13);
37101081f5aSMathieu Poirier 		break;
37201081f5aSMathieu Poirier 	case ETMACVRn(14):
37301081f5aSMathieu Poirier 		etm_write(val, ETMACVR14);
37401081f5aSMathieu Poirier 		break;
37501081f5aSMathieu Poirier 	case ETMACVRn(15):
37601081f5aSMathieu Poirier 		etm_write(val, ETMACVR15);
37701081f5aSMathieu Poirier 		break;
37801081f5aSMathieu Poirier 	case ETMACTRn(0):
37901081f5aSMathieu Poirier 		etm_write(val, ETMACTR0);
38001081f5aSMathieu Poirier 		break;
38101081f5aSMathieu Poirier 	case ETMACTRn(1):
38201081f5aSMathieu Poirier 		etm_write(val, ETMACTR1);
38301081f5aSMathieu Poirier 		break;
38401081f5aSMathieu Poirier 	case ETMACTRn(2):
38501081f5aSMathieu Poirier 		etm_write(val, ETMACTR2);
38601081f5aSMathieu Poirier 		break;
38701081f5aSMathieu Poirier 	case ETMACTRn(3):
38801081f5aSMathieu Poirier 		etm_write(val, ETMACTR3);
38901081f5aSMathieu Poirier 		break;
39001081f5aSMathieu Poirier 	case ETMACTRn(4):
39101081f5aSMathieu Poirier 		etm_write(val, ETMACTR4);
39201081f5aSMathieu Poirier 		break;
39301081f5aSMathieu Poirier 	case ETMACTRn(5):
39401081f5aSMathieu Poirier 		etm_write(val, ETMACTR5);
39501081f5aSMathieu Poirier 		break;
39601081f5aSMathieu Poirier 	case ETMACTRn(6):
39701081f5aSMathieu Poirier 		etm_write(val, ETMACTR6);
39801081f5aSMathieu Poirier 		break;
39901081f5aSMathieu Poirier 	case ETMACTRn(7):
40001081f5aSMathieu Poirier 		etm_write(val, ETMACTR7);
40101081f5aSMathieu Poirier 		break;
40201081f5aSMathieu Poirier 	case ETMACTRn(8):
40301081f5aSMathieu Poirier 		etm_write(val, ETMACTR8);
40401081f5aSMathieu Poirier 		break;
40501081f5aSMathieu Poirier 	case ETMACTRn(9):
40601081f5aSMathieu Poirier 		etm_write(val, ETMACTR9);
40701081f5aSMathieu Poirier 		break;
40801081f5aSMathieu Poirier 	case ETMACTRn(10):
40901081f5aSMathieu Poirier 		etm_write(val, ETMACTR10);
41001081f5aSMathieu Poirier 		break;
41101081f5aSMathieu Poirier 	case ETMACTRn(11):
41201081f5aSMathieu Poirier 		etm_write(val, ETMACTR11);
41301081f5aSMathieu Poirier 		break;
41401081f5aSMathieu Poirier 	case ETMACTRn(12):
41501081f5aSMathieu Poirier 		etm_write(val, ETMACTR12);
41601081f5aSMathieu Poirier 		break;
41701081f5aSMathieu Poirier 	case ETMACTRn(13):
41801081f5aSMathieu Poirier 		etm_write(val, ETMACTR13);
41901081f5aSMathieu Poirier 		break;
42001081f5aSMathieu Poirier 	case ETMACTRn(14):
42101081f5aSMathieu Poirier 		etm_write(val, ETMACTR14);
42201081f5aSMathieu Poirier 		break;
42301081f5aSMathieu Poirier 	case ETMACTRn(15):
42401081f5aSMathieu Poirier 		etm_write(val, ETMACTR15);
42501081f5aSMathieu Poirier 		break;
42601081f5aSMathieu Poirier 	case ETMCNTRLDVRn(0):
42701081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDVR0);
42801081f5aSMathieu Poirier 		break;
42901081f5aSMathieu Poirier 	case ETMCNTRLDVRn(1):
43001081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDVR1);
43101081f5aSMathieu Poirier 		break;
43201081f5aSMathieu Poirier 	case ETMCNTRLDVRn(2):
43301081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDVR2);
43401081f5aSMathieu Poirier 		break;
43501081f5aSMathieu Poirier 	case ETMCNTRLDVRn(3):
43601081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDVR3);
43701081f5aSMathieu Poirier 		break;
43801081f5aSMathieu Poirier 	case ETMCNTENRn(0):
43901081f5aSMathieu Poirier 		etm_write(val, ETMCNTENR0);
44001081f5aSMathieu Poirier 		break;
44101081f5aSMathieu Poirier 	case ETMCNTENRn(1):
44201081f5aSMathieu Poirier 		etm_write(val, ETMCNTENR1);
44301081f5aSMathieu Poirier 		break;
44401081f5aSMathieu Poirier 	case ETMCNTENRn(2):
44501081f5aSMathieu Poirier 		etm_write(val, ETMCNTENR2);
44601081f5aSMathieu Poirier 		break;
44701081f5aSMathieu Poirier 	case ETMCNTENRn(3):
44801081f5aSMathieu Poirier 		etm_write(val, ETMCNTENR3);
44901081f5aSMathieu Poirier 		break;
45001081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(0):
45101081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDEVR0);
45201081f5aSMathieu Poirier 		break;
45301081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(1):
45401081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDEVR1);
45501081f5aSMathieu Poirier 		break;
45601081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(2):
45701081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDEVR2);
45801081f5aSMathieu Poirier 		break;
45901081f5aSMathieu Poirier 	case ETMCNTRLDEVRn(3):
46001081f5aSMathieu Poirier 		etm_write(val, ETMCNTRLDEVR3);
46101081f5aSMathieu Poirier 		break;
46201081f5aSMathieu Poirier 	case ETMCNTVRn(0):
46301081f5aSMathieu Poirier 		etm_write(val, ETMCNTVR0);
46401081f5aSMathieu Poirier 		break;
46501081f5aSMathieu Poirier 	case ETMCNTVRn(1):
46601081f5aSMathieu Poirier 		etm_write(val, ETMCNTVR1);
46701081f5aSMathieu Poirier 		break;
46801081f5aSMathieu Poirier 	case ETMCNTVRn(2):
46901081f5aSMathieu Poirier 		etm_write(val, ETMCNTVR2);
47001081f5aSMathieu Poirier 		break;
47101081f5aSMathieu Poirier 	case ETMCNTVRn(3):
47201081f5aSMathieu Poirier 		etm_write(val, ETMCNTVR3);
47301081f5aSMathieu Poirier 		break;
47401081f5aSMathieu Poirier 	case ETMSQ12EVR:
47501081f5aSMathieu Poirier 		etm_write(val, ETMSQ12EVR);
47601081f5aSMathieu Poirier 		break;
47701081f5aSMathieu Poirier 	case ETMSQ21EVR:
47801081f5aSMathieu Poirier 		etm_write(val, ETMSQ21EVR);
47901081f5aSMathieu Poirier 		break;
48001081f5aSMathieu Poirier 	case ETMSQ23EVR:
48101081f5aSMathieu Poirier 		etm_write(val, ETMSQ23EVR);
48201081f5aSMathieu Poirier 		break;
48301081f5aSMathieu Poirier 	case ETMSQ31EVR:
48401081f5aSMathieu Poirier 		etm_write(val, ETMSQ31EVR);
48501081f5aSMathieu Poirier 		break;
48601081f5aSMathieu Poirier 	case ETMSQ32EVR:
48701081f5aSMathieu Poirier 		etm_write(val, ETMSQ32EVR);
48801081f5aSMathieu Poirier 		break;
48901081f5aSMathieu Poirier 	case ETMSQ13EVR:
49001081f5aSMathieu Poirier 		etm_write(val, ETMSQ13EVR);
49101081f5aSMathieu Poirier 		break;
49201081f5aSMathieu Poirier 	case ETMSQR:
49301081f5aSMathieu Poirier 		etm_write(val, ETMSQR);
49401081f5aSMathieu Poirier 		break;
49501081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(0):
49601081f5aSMathieu Poirier 		etm_write(val, ETMEXTOUTEVR0);
49701081f5aSMathieu Poirier 		break;
49801081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(1):
49901081f5aSMathieu Poirier 		etm_write(val, ETMEXTOUTEVR1);
50001081f5aSMathieu Poirier 		break;
50101081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(2):
50201081f5aSMathieu Poirier 		etm_write(val, ETMEXTOUTEVR2);
50301081f5aSMathieu Poirier 		break;
50401081f5aSMathieu Poirier 	case ETMEXTOUTEVRn(3):
50501081f5aSMathieu Poirier 		etm_write(val, ETMEXTOUTEVR3);
50601081f5aSMathieu Poirier 		break;
50701081f5aSMathieu Poirier 	case ETMCIDCVRn(0):
50801081f5aSMathieu Poirier 		etm_write(val, ETMCIDCVR0);
50901081f5aSMathieu Poirier 		break;
51001081f5aSMathieu Poirier 	case ETMCIDCVRn(1):
51101081f5aSMathieu Poirier 		etm_write(val, ETMCIDCVR1);
51201081f5aSMathieu Poirier 		break;
51301081f5aSMathieu Poirier 	case ETMCIDCVRn(2):
51401081f5aSMathieu Poirier 		etm_write(val, ETMCIDCVR2);
51501081f5aSMathieu Poirier 		break;
51601081f5aSMathieu Poirier 	case ETMCIDCMR:
51701081f5aSMathieu Poirier 		etm_write(val, ETMCIDCMR);
51801081f5aSMathieu Poirier 		break;
51901081f5aSMathieu Poirier 	case ETMIMPSPEC0:
52001081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC0);
52101081f5aSMathieu Poirier 		break;
52201081f5aSMathieu Poirier 	case ETMIMPSPEC1:
52301081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC1);
52401081f5aSMathieu Poirier 		break;
52501081f5aSMathieu Poirier 	case ETMIMPSPEC2:
52601081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC2);
52701081f5aSMathieu Poirier 		break;
52801081f5aSMathieu Poirier 	case ETMIMPSPEC3:
52901081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC3);
53001081f5aSMathieu Poirier 		break;
53101081f5aSMathieu Poirier 	case ETMIMPSPEC4:
53201081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC4);
53301081f5aSMathieu Poirier 		break;
53401081f5aSMathieu Poirier 	case ETMIMPSPEC5:
53501081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC5);
53601081f5aSMathieu Poirier 		break;
53701081f5aSMathieu Poirier 	case ETMIMPSPEC6:
53801081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC6);
53901081f5aSMathieu Poirier 		break;
54001081f5aSMathieu Poirier 	case ETMIMPSPEC7:
54101081f5aSMathieu Poirier 		etm_write(val, ETMIMPSPEC7);
54201081f5aSMathieu Poirier 		break;
54301081f5aSMathieu Poirier 	case ETMSYNCFR:
54401081f5aSMathieu Poirier 		etm_write(val, ETMSYNCFR);
54501081f5aSMathieu Poirier 		break;
54601081f5aSMathieu Poirier 	case ETMEXTINSELR:
54701081f5aSMathieu Poirier 		etm_write(val, ETMEXTINSELR);
54801081f5aSMathieu Poirier 		break;
54901081f5aSMathieu Poirier 	case ETMTESSEICR:
55001081f5aSMathieu Poirier 		etm_write(val, ETMTESSEICR);
55101081f5aSMathieu Poirier 		break;
55201081f5aSMathieu Poirier 	case ETMEIBCR:
55301081f5aSMathieu Poirier 		etm_write(val, ETMEIBCR);
55401081f5aSMathieu Poirier 		break;
55501081f5aSMathieu Poirier 	case ETMTSEVR:
55601081f5aSMathieu Poirier 		etm_write(val, ETMTSEVR);
55701081f5aSMathieu Poirier 		break;
55801081f5aSMathieu Poirier 	case ETMAUXCR:
55901081f5aSMathieu Poirier 		etm_write(val, ETMAUXCR);
56001081f5aSMathieu Poirier 		break;
56101081f5aSMathieu Poirier 	case ETMTRACEIDR:
56201081f5aSMathieu Poirier 		etm_write(val, ETMTRACEIDR);
56301081f5aSMathieu Poirier 		break;
56401081f5aSMathieu Poirier 	case ETMVMIDCVR:
56501081f5aSMathieu Poirier 		etm_write(val, ETMVMIDCVR);
56601081f5aSMathieu Poirier 		break;
56701081f5aSMathieu Poirier 	case ETMOSLAR:
56801081f5aSMathieu Poirier 		etm_write(val, ETMOSLAR);
56901081f5aSMathieu Poirier 		break;
57001081f5aSMathieu Poirier 	case ETMOSSRR:
57101081f5aSMathieu Poirier 		etm_write(val, ETMOSSRR);
57201081f5aSMathieu Poirier 		break;
57301081f5aSMathieu Poirier 	case ETMPDCR:
57401081f5aSMathieu Poirier 		etm_write(val, ETMPDCR);
57501081f5aSMathieu Poirier 		break;
57601081f5aSMathieu Poirier 	case ETMPDSR:
57701081f5aSMathieu Poirier 		etm_write(val, ETMPDSR);
57801081f5aSMathieu Poirier 		break;
57901081f5aSMathieu Poirier 	default:
58001081f5aSMathieu Poirier 		return -EINVAL;
58101081f5aSMathieu Poirier 	}
58201081f5aSMathieu Poirier 
58301081f5aSMathieu Poirier 	return 0;
58401081f5aSMathieu Poirier }
585