drivers/hwtracing/coresight/coresight-etm-cp14.c

Source file repositories/reference/linux-study-clean/drivers/hwtracing/coresight/coresight-etm-cp14.c

File Facts

System
Linux kernel
Corpus path
drivers/hwtracing/coresight/coresight-etm-cp14.c
Extension
.c
Size
11453 bytes
Lines
585
Domain
Driver Families
Bucket
drivers/hwtracing
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
 */

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/bug.h>
#include <asm/hardware/cp14.h>

#include "coresight-etm.h"

int etm_readl_cp14(u32 reg, unsigned int *val)
{
	switch (reg) {
	case ETMCR:
		*val = etm_read(ETMCR);
		return 0;
	case ETMCCR:
		*val = etm_read(ETMCCR);
		return 0;
	case ETMTRIGGER:
		*val = etm_read(ETMTRIGGER);
		return 0;
	case ETMSR:
		*val = etm_read(ETMSR);
		return 0;
	case ETMSCR:
		*val = etm_read(ETMSCR);
		return 0;
	case ETMTSSCR:
		*val = etm_read(ETMTSSCR);
		return 0;
	case ETMTEEVR:
		*val = etm_read(ETMTEEVR);
		return 0;
	case ETMTECR1:
		*val = etm_read(ETMTECR1);
		return 0;
	case ETMFFLR:
		*val = etm_read(ETMFFLR);
		return 0;
	case ETMACVRn(0):
		*val = etm_read(ETMACVR0);
		return 0;
	case ETMACVRn(1):
		*val = etm_read(ETMACVR1);
		return 0;
	case ETMACVRn(2):
		*val = etm_read(ETMACVR2);
		return 0;
	case ETMACVRn(3):
		*val = etm_read(ETMACVR3);
		return 0;
	case ETMACVRn(4):
		*val = etm_read(ETMACVR4);
		return 0;
	case ETMACVRn(5):
		*val = etm_read(ETMACVR5);
		return 0;
	case ETMACVRn(6):
		*val = etm_read(ETMACVR6);
		return 0;
	case ETMACVRn(7):
		*val = etm_read(ETMACVR7);
		return 0;
	case ETMACVRn(8):
		*val = etm_read(ETMACVR8);
		return 0;
	case ETMACVRn(9):
		*val = etm_read(ETMACVR9);
		return 0;
	case ETMACVRn(10):
		*val = etm_read(ETMACVR10);
		return 0;
	case ETMACVRn(11):
		*val = etm_read(ETMACVR11);
		return 0;
	case ETMACVRn(12):
		*val = etm_read(ETMACVR12);
		return 0;
	case ETMACVRn(13):
		*val = etm_read(ETMACVR13);
		return 0;
	case ETMACVRn(14):
		*val = etm_read(ETMACVR14);
		return 0;
	case ETMACVRn(15):

Annotation

Implementation Notes