Unverified Commit ef724707 authored by Cezary Rojewski's avatar Cezary Rojewski Committed by Mark Brown
Browse files

ASoC: Intel: avs: Adjust IPC traces



The firmware status and the firmware error registers are 4-bytes wide.
Update trace macros and their usage to reflect that.

Signed-off-by: default avatarCezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20250109122216.3667847-13-cezary.rojewski@intel.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 3eede0fc
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -184,10 +184,11 @@ static void avs_dsp_receive_rx(struct avs_dev *adev, u64 header)
{
	struct avs_ipc *ipc = adev->ipc;
	union avs_reply_msg msg = AVS_MSG(header);
	u64 reg;
	u32 sts, lec;

	reg = readq(avs_sram_addr(adev, AVS_FW_REGS_WINDOW));
	trace_avs_ipc_reply_msg(header, reg);
	sts = snd_hdac_adsp_readl(adev, AVS_FW_REG_STATUS(adev));
	lec = snd_hdac_adsp_readl(adev, AVS_FW_REG_ERROR(adev));
	trace_avs_ipc_reply_msg(header, sts, lec);

	ipc->rx.header = header;
	/* Abort copying payload if request processing was unsuccessful. */
@@ -209,10 +210,11 @@ static void avs_dsp_process_notification(struct avs_dev *adev, u64 header)
	union avs_notify_msg msg = AVS_MSG(header);
	size_t data_size = 0;
	void *data = NULL;
	u64 reg;
	u32 sts, lec;

	reg = readq(avs_sram_addr(adev, AVS_FW_REGS_WINDOW));
	trace_avs_ipc_notify_msg(header, reg);
	sts = snd_hdac_adsp_readl(adev, AVS_FW_REG_STATUS(adev));
	lec = snd_hdac_adsp_readl(adev, AVS_FW_REG_ERROR(adev));
	trace_avs_ipc_notify_msg(header, sts, lec);

	/* Ignore spurious notifications until handshake is established. */
	if (!adev->ipc->ready && msg.notify_msg_type != AVS_NOTIFY_FW_READY) {
@@ -367,13 +369,16 @@ static void avs_ipc_msg_init(struct avs_ipc *ipc, struct avs_ipc_msg *reply)
static void avs_dsp_send_tx(struct avs_dev *adev, struct avs_ipc_msg *tx, bool read_fwregs)
{
	const struct avs_spec *const spec = adev->spec;
	u64 reg = ULONG_MAX;
	u32 sts = UINT_MAX;
	u32 lec = UINT_MAX;

	tx->header |= spec->hipc->req_busy_mask;
	if (read_fwregs)
		reg = readq(avs_sram_addr(adev, AVS_FW_REGS_WINDOW));
	if (read_fwregs) {
		sts = snd_hdac_adsp_readl(adev, AVS_FW_REG_STATUS(adev));
		lec = snd_hdac_adsp_readl(adev, AVS_FW_REG_ERROR(adev));
	}

	trace_avs_request(tx, reg);
	trace_avs_request(tx, sts, lec);

	if (tx->size)
		memcpy_toio(avs_downlink_addr(adev), tx->data, tx->size);
+20 −18
Original line number Diff line number Diff line
@@ -37,60 +37,62 @@ TRACE_EVENT(avs_dsp_core_op,

void trace_avs_msg_payload(const void *data, size_t size);

#define trace_avs_request(msg, fwregs) \
#define trace_avs_request(msg, sts, lec) \
({ \
	trace_avs_ipc_request_msg((msg)->header, fwregs); \
	trace_avs_ipc_request_msg((msg)->header, sts, lec); \
	trace_avs_msg_payload((msg)->data, (msg)->size); \
})

#define trace_avs_reply(msg, fwregs) \
#define trace_avs_reply(msg, sts, lec) \
({ \
	trace_avs_ipc_reply_msg((msg)->header, fwregs); \
	trace_avs_ipc_reply_msg((msg)->header, sts, lec); \
	trace_avs_msg_payload((msg)->data, (msg)->size); \
})

#define trace_avs_notify(msg, fwregs) \
#define trace_avs_notify(msg, sts, lec) \
({ \
	trace_avs_ipc_notify_msg((msg)->header, fwregs); \
	trace_avs_ipc_notify_msg((msg)->header, sts, lec); \
	trace_avs_msg_payload((msg)->data, (msg)->size); \
})
#endif

DECLARE_EVENT_CLASS(avs_ipc_msg_hdr,

	TP_PROTO(u64 header, u64 fwregs),
	TP_PROTO(u64 header, u32 sts, u32 lec),

	TP_ARGS(header, fwregs),
	TP_ARGS(header, sts, lec),

	TP_STRUCT__entry(
		__field(u64,	header)
		__field(u64,	fwregs)
		__field(u32,	sts)
		__field(u32,	lec)
	),

	TP_fast_assign(
		__entry->header = header;
		__entry->fwregs = fwregs;
		__entry->sts = sts;
		__entry->lec = lec;
	),

	TP_printk("primary: 0x%08X, extension: 0x%08X,\n"
		  "fwstatus: 0x%08X, fwerror: 0x%08X",
		  "status: 0x%08X, error: 0x%08X",
		  lower_32_bits(__entry->header), upper_32_bits(__entry->header),
		  lower_32_bits(__entry->fwregs), upper_32_bits(__entry->fwregs))
		  __entry->sts, __entry->lec)
);

DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_request_msg,
	TP_PROTO(u64 header, u64 fwregs),
	TP_ARGS(header, fwregs)
	TP_PROTO(u64 header, u32 sts, u32 lec),
	TP_ARGS(header, sts, lec)
);

DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_reply_msg,
	TP_PROTO(u64 header, u64 fwregs),
	TP_ARGS(header, fwregs)
	TP_PROTO(u64 header, u32 sts, u32 lec),
	TP_ARGS(header, sts, lec)
);

DEFINE_EVENT(avs_ipc_msg_hdr, avs_ipc_notify_msg,
	TP_PROTO(u64 header, u64 fwregs),
	TP_ARGS(header, fwregs)
	TP_PROTO(u64 header, u32 sts, u32 lec),
	TP_ARGS(header, sts, lec)
);

TRACE_EVENT_CONDITION(avs_ipc_msg_payload,