brintos

brintos / linux-shallow public Read only

0
0
Text · 11.2 KiB · 4174a8d Raw
585 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2012, The Linux Foundation. All rights reserved.4 */5 6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt7 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}585