Contributors: 3
Author Tokens Token Proportion Commits Commit Proportion
Linu Cherian 233 95.88% 1 25.00%
Mike Leach 9 3.70% 2 50.00%
Mathieu J. Poirier 1 0.41% 1 25.00%
Total 243 4


// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright(C) 2023  Marvell.
 * Based on coresight-cfg-afdo.c
 */

#include "coresight-config.h"

/* ETMv4 includes and features */
#if IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X)
#include "coresight-etm4x-cfg.h"

/* preload configurations and features */

/* preload in features for ETMv4 */

/* panic_stop feature */
static struct cscfg_parameter_desc gen_etrig_params[] = {
	{
		.name = "address",
		.value = (u64)panic,
	},
};

static struct cscfg_regval_desc gen_etrig_regs[] = {
	/* resource selector */
	{
		.type = CS_CFG_REG_TYPE_RESOURCE,
		.offset = TRCRSCTLRn(2),
		.hw_info = ETM4_CFG_RES_SEL,
		.val32 = 0x40001,
	},
	/* single address comparator */
	{
		.type = CS_CFG_REG_TYPE_RESOURCE | CS_CFG_REG_TYPE_VAL_64BIT |
			CS_CFG_REG_TYPE_VAL_PARAM,
		.offset =  TRCACVRn(0),
		.val32 = 0x0,
	},
	{
		.type = CS_CFG_REG_TYPE_RESOURCE,
		.offset = TRCACATRn(0),
		.val64 = 0xf00,
	},
	/* Driver external output[0] with comparator out */
	{
		.type = CS_CFG_REG_TYPE_RESOURCE,
		.offset = TRCEVENTCTL0R,
		.val32 = 0x2,
	},
	/* end of regs */
};

struct cscfg_feature_desc gen_etrig_etm4x = {
	.name = "gen_etrig",
	.description = "Generate external trigger on address match\n"
		       "parameter \'address\': address of kernel address\n",
	.match_flags = CS_CFG_MATCH_CLASS_SRC_ETM4,
	.nr_params = ARRAY_SIZE(gen_etrig_params),
	.params_desc = gen_etrig_params,
	.nr_regs = ARRAY_SIZE(gen_etrig_regs),
	.regs_desc = gen_etrig_regs,
};

/* create a panic stop configuration */

/* the total number of parameters in used features */
#define PSTOP_NR_PARAMS	ARRAY_SIZE(gen_etrig_params)

static const char *pstop_ref_names[] = {
	"gen_etrig",
};

struct cscfg_config_desc pstop_etm4x = {
	.name = "panicstop",
	.description = "Stop ETM on kernel panic\n",
	.nr_feat_refs = ARRAY_SIZE(pstop_ref_names),
	.feat_ref_names = pstop_ref_names,
	.nr_total_params = PSTOP_NR_PARAMS,
};

/* end of ETM4x configurations */
#endif	/* IS_ENABLED(CONFIG_CORESIGHT_SOURCE_ETM4X) */