mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

The Coresight TMC Control Unit hosts miscellaneous configuration registers which control various features related to TMC ETR sink. Based on the trace ID, which is programmed in the related CTCU ATID register of a specific ETR, trace data with that trace ID gets into the ETR buffer, while other trace data gets dropped. Enabling source device sets one bit of the ATID register based on source device's trace ID. Disabling source device resets the bit according to the source device's trace ID. Reviewed-by: James Clark <james.clark@linaro.org> Signed-off-by: Jie Gan <quic_jiegan@quicinc.com> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Link: https://lore.kernel.org/r/20250303032931.2500935-10-quic_jiegan@quicinc.com
39 lines
917 B
C
39 lines
917 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _CORESIGHT_CTCU_H
|
|
#define _CORESIGHT_CTCU_H
|
|
#include "coresight-trace-id.h"
|
|
|
|
/* Maximum number of supported ETR devices for a single CTCU. */
|
|
#define ETR_MAX_NUM 2
|
|
|
|
/**
|
|
* struct ctcu_etr_config
|
|
* @atid_offset: offset to the ATID0 Register.
|
|
* @port_num: in-port number of CTCU device that connected to ETR.
|
|
*/
|
|
struct ctcu_etr_config {
|
|
const u32 atid_offset;
|
|
const u32 port_num;
|
|
};
|
|
|
|
struct ctcu_config {
|
|
const struct ctcu_etr_config *etr_cfgs;
|
|
int num_etr_config;
|
|
};
|
|
|
|
struct ctcu_drvdata {
|
|
void __iomem *base;
|
|
struct clk *apb_clk;
|
|
struct device *dev;
|
|
struct coresight_device *csdev;
|
|
raw_spinlock_t spin_lock;
|
|
u32 atid_offset[ETR_MAX_NUM];
|
|
/* refcnt for each traceid of each sink */
|
|
u8 traceid_refcnt[ETR_MAX_NUM][CORESIGHT_TRACE_ID_RES_TOP];
|
|
};
|
|
|
|
#endif
|