Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.10.11.
  1/*
  2 * linux/arch/arm/include/asm/hardware/coresight.h
  3 *
  4 * CoreSight components' registers
  5 *
  6 * Copyright (C) 2009 Nokia Corporation.
  7 * Alexander Shishkin
  8 *
  9 * This program is free software; you can redistribute it and/or modify
 10 * it under the terms of the GNU General Public License version 2 as
 11 * published by the Free Software Foundation.
 12 */
 13
 14#ifndef __ASM_HARDWARE_CORESIGHT_H
 15#define __ASM_HARDWARE_CORESIGHT_H
 16
 17#define TRACER_ACCESSED_BIT	0
 18#define TRACER_RUNNING_BIT	1
 19#define TRACER_CYCLE_ACC_BIT	2
 20#define TRACER_ACCESSED		BIT(TRACER_ACCESSED_BIT)
 21#define TRACER_RUNNING		BIT(TRACER_RUNNING_BIT)
 22#define TRACER_CYCLE_ACC	BIT(TRACER_CYCLE_ACC_BIT)
 23
 24#define TRACER_TIMEOUT 10000
 25
 26#define etm_writel(t, v, x) \
 27	(__raw_writel((v), (t)->etm_regs + (x)))
 28#define etm_readl(t, x) (__raw_readl((t)->etm_regs + (x)))
 29
 30/* CoreSight Management Registers */
 31#define CSMR_LOCKACCESS 0xfb0
 32#define CSMR_LOCKSTATUS 0xfb4
 33#define CSMR_AUTHSTATUS 0xfb8
 34#define CSMR_DEVID	0xfc8
 35#define CSMR_DEVTYPE	0xfcc
 36/* CoreSight Component Registers */
 37#define CSCR_CLASS	0xff4
 38
 39#define UNLOCK_MAGIC	0xc5acce55
 40
 41/* ETM control register, "ETM Architecture", 3.3.1 */
 42#define ETMR_CTRL		0
 43#define ETMCTRL_POWERDOWN	1
 44#define ETMCTRL_PROGRAM		(1 << 10)
 45#define ETMCTRL_PORTSEL		(1 << 11)
 46#define ETMCTRL_DO_CONTEXTID	(3 << 14)
 47#define ETMCTRL_PORTMASK1	(7 << 4)
 48#define ETMCTRL_PORTMASK2	(1 << 21)
 49#define ETMCTRL_PORTMASK	(ETMCTRL_PORTMASK1 | ETMCTRL_PORTMASK2)
 50#define ETMCTRL_PORTSIZE(x) ((((x) & 7) << 4) | (!!((x) & 8)) << 21)
 51#define ETMCTRL_DO_CPRT		(1 << 1)
 52#define ETMCTRL_DATAMASK	(3 << 2)
 53#define ETMCTRL_DATA_DO_DATA	(1 << 2)
 54#define ETMCTRL_DATA_DO_ADDR	(1 << 3)
 55#define ETMCTRL_DATA_DO_BOTH	(ETMCTRL_DATA_DO_DATA | ETMCTRL_DATA_DO_ADDR)
 56#define ETMCTRL_BRANCH_OUTPUT	(1 << 8)
 57#define ETMCTRL_CYCLEACCURATE	(1 << 12)
 58
 59/* ETM configuration code register */
 60#define ETMR_CONFCODE		(0x04)
 61
 62/* ETM trace start/stop resource control register */
 63#define ETMR_TRACESSCTRL	(0x18)
 64
 65/* ETM trigger event register */
 66#define ETMR_TRIGEVT		(0x08)
 67
 68/* address access type register bits, "ETM architecture",
 69 * table 3-27 */
 70/* - access type */
 71#define ETMAAT_IFETCH		0
 72#define ETMAAT_IEXEC		1
 73#define ETMAAT_IEXECPASS	2
 74#define ETMAAT_IEXECFAIL	3
 75#define ETMAAT_DLOADSTORE	4
 76#define ETMAAT_DLOAD		5
 77#define ETMAAT_DSTORE		6
 78/* - comparison access size */
 79#define ETMAAT_JAVA		(0 << 3)
 80#define ETMAAT_THUMB		(1 << 3)
 81#define ETMAAT_ARM		(3 << 3)
 82/* - data value comparison control */
 83#define ETMAAT_NOVALCMP		(0 << 5)
 84#define ETMAAT_VALMATCH		(1 << 5)
 85#define ETMAAT_VALNOMATCH	(3 << 5)
 86/* - exact match */
 87#define ETMAAT_EXACTMATCH	(1 << 7)
 88/* - context id comparator control */
 89#define ETMAAT_IGNCONTEXTID	(0 << 8)
 90#define ETMAAT_VALUE1		(1 << 8)
 91#define ETMAAT_VALUE2		(2 << 8)
 92#define ETMAAT_VALUE3		(3 << 8)
 93/* - security level control */
 94#define ETMAAT_IGNSECURITY	(0 << 10)
 95#define ETMAAT_NSONLY		(1 << 10)
 96#define ETMAAT_SONLY		(2 << 10)
 97
 98#define ETMR_COMP_VAL(x)	(0x40 + (x) * 4)
 99#define ETMR_COMP_ACC_TYPE(x)	(0x80 + (x) * 4)
100
101/* ETM status register, "ETM Architecture", 3.3.2 */
102#define ETMR_STATUS		(0x10)
103#define ETMST_OVERFLOW		BIT(0)
104#define ETMST_PROGBIT		BIT(1)
105#define ETMST_STARTSTOP		BIT(2)
106#define ETMST_TRIGGER		BIT(3)
107
108#define etm_progbit(t)		(etm_readl((t), ETMR_STATUS) & ETMST_PROGBIT)
109#define etm_started(t)		(etm_readl((t), ETMR_STATUS) & ETMST_STARTSTOP)
110#define etm_triggered(t)	(etm_readl((t), ETMR_STATUS) & ETMST_TRIGGER)
111
112#define ETMR_TRACEENCTRL2	0x1c
113#define ETMR_TRACEENCTRL	0x24
114#define ETMTE_INCLEXCL		BIT(24)
115#define ETMR_TRACEENEVT		0x20
116#define ETMCTRL_OPTS		(ETMCTRL_DO_CPRT | \
117				ETMCTRL_DATA_DO_ADDR | \
118				ETMCTRL_BRANCH_OUTPUT | \
119				ETMCTRL_DO_CONTEXTID)
120
121/* ETM management registers, "ETM Architecture", 3.5.24 */
122#define ETMMR_OSLAR	0x300
123#define ETMMR_OSLSR	0x304
124#define ETMMR_OSSRR	0x308
125#define ETMMR_PDSR	0x314
126
127/* ETB registers, "CoreSight Components TRM", 9.3 */
128#define ETBR_DEPTH		0x04
129#define ETBR_STATUS		0x0c
130#define ETBR_READMEM		0x10
131#define ETBR_READADDR		0x14
132#define ETBR_WRITEADDR		0x18
133#define ETBR_TRIGGERCOUNT	0x1c
134#define ETBR_CTRL		0x20
135#define ETBR_FORMATTERCTRL	0x304
136#define ETBFF_ENFTC		1
137#define ETBFF_ENFCONT		BIT(1)
138#define ETBFF_FONFLIN		BIT(4)
139#define ETBFF_MANUAL_FLUSH	BIT(6)
140#define ETBFF_TRIGIN		BIT(8)
141#define ETBFF_TRIGEVT		BIT(9)
142#define ETBFF_TRIGFL		BIT(10)
143
144#define etb_writel(t, v, x) \
145	(__raw_writel((v), (t)->etb_regs + (x)))
146#define etb_readl(t, x) (__raw_readl((t)->etb_regs + (x)))
147
148#define etm_lock(t) do { etm_writel((t), 0, CSMR_LOCKACCESS); } while (0)
149#define etm_unlock(t) \
150	do { etm_writel((t), UNLOCK_MAGIC, CSMR_LOCKACCESS); } while (0)
151
152#define etb_lock(t) do { etb_writel((t), 0, CSMR_LOCKACCESS); } while (0)
153#define etb_unlock(t) \
154	do { etb_writel((t), UNLOCK_MAGIC, CSMR_LOCKACCESS); } while (0)
155
156#endif /* __ASM_HARDWARE_CORESIGHT_H */
157