File Index
Files and directories
Sign in
FILE

coresight-cfg-pstop.c

File preview with syntax highlighting.

linux-6.19.14/drivers/hwtracing/coresight/coresight-cfg-pstop.c C
 1// SPDX-License-Identifier: GPL-2.0
 2/*
 3 * Copyright(C) 2023  Marvell.
 4 * Based on coresight-cfg-afdo.c
 5 */
 6
 7#include "coresight-config.h"
 8
 9/* ETMv4 includes and features */
10#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
11#include "coresight-etm4x-cfg.h"
12
13/* preload configurations and features */
14
15/* preload in features for ETMv4 */
16
17/* panic_stop feature */
18static struct cscfg_parameter_desc gen_etrig_params[] = {
19	{
20		.name = "address",
21		.value = (u64)panic,
22	},
23};
24
25static struct cscfg_regval_desc gen_etrig_regs[] = {
26	/* resource selector */
27	{
28		.type = CS_CFG_REG_TYPE_RESOURCE,
29		.offset = TRCRSCTLRn(2),
30		.hw_info = ETM4_CFG_RES_SEL,
31		.val32 = 0x40001,
32	},
33	/* single address comparator */
34	{
35		.type = CS_CFG_REG_TYPE_RESOURCE | CS_CFG_REG_TYPE_VAL_64BIT |
36			CS_CFG_REG_TYPE_VAL_PARAM,
37		.offset =  TRCACVRn(0),
38		.val32 = 0x0,
39	},
40	{
41		.type = CS_CFG_REG_TYPE_RESOURCE,
42		.offset = TRCACATRn(0),
43		.val64 = 0xf00,
44	},
45	/* Driver external output[0] with comparator out */
46	{
47		.type = CS_CFG_REG_TYPE_RESOURCE,
48		.offset = TRCEVENTCTL0R,
49		.val32 = 0x2,
50	},
51	/* end of regs */
52};
53
54struct cscfg_feature_desc gen_etrig_etm4x = {
55	.name = "gen_etrig",
56	.description = "Generate external trigger on address match\n"
57		       "parameter \'address\': address of kernel address\n",
58	.match_flags = CS_CFG_MATCH_CLASS_SRC_ETM4,
59	.nr_params = ARRAY_SIZE(gen_etrig_params),
60	.params_desc = gen_etrig_params,
61	.nr_regs = ARRAY_SIZE(gen_etrig_regs),
62	.regs_desc = gen_etrig_regs,
63};
64
65/* create a panic stop configuration */
66
67/* the total number of parameters in used features */
68#define PSTOP_NR_PARAMS	ARRAY_SIZE(gen_etrig_params)
69
70static const char *pstop_ref_names[] = {
71	"gen_etrig",
72};
73
74struct cscfg_config_desc pstop_etm4x = {
75	.name = "panicstop",
76	.description = "Stop ETM on kernel panic\n",
77	.nr_feat_refs = ARRAY_SIZE(pstop_ref_names),
78	.feat_ref_names = pstop_ref_names,
79	.nr_total_params = PSTOP_NR_PARAMS,
80};
81
82/* end of ETM4x configurations */
83#endif	/* IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) */
~/ Read-only file preview.