Commit a397899f authored by Rander Wang's avatar Rander Wang Committed by Mark Brown

ASoC: SOF: ipc4: add a helper function to search debug slot

Currently IPC4 supports GDB slot, telemetry slot and
debug slot. This helper function will be used to get
the slot offset in debug windows for further processing.
Signed-off-by: default avatarRander Wang <rander.wang@intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230919092416.4137-4-peter.ujfalusi@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 42872050
...@@ -120,4 +120,7 @@ void sof_ipc4_update_cpc_from_manifest(struct snd_sof_dev *sdev, ...@@ -120,4 +120,7 @@ void sof_ipc4_update_cpc_from_manifest(struct snd_sof_dev *sdev,
struct sof_ipc4_fw_module *fw_module, struct sof_ipc4_fw_module *fw_module,
struct sof_ipc4_base_module_cfg *basecfg); struct sof_ipc4_base_module_cfg *basecfg);
size_t sof_ipc4_find_debug_slot_offset_by_type(struct snd_sof_dev *sdev,
u32 slot_type);
#endif #endif
...@@ -547,6 +547,29 @@ static int sof_ipc4_init_msg_memory(struct snd_sof_dev *sdev) ...@@ -547,6 +547,29 @@ static int sof_ipc4_init_msg_memory(struct snd_sof_dev *sdev)
return 0; return 0;
} }
size_t sof_ipc4_find_debug_slot_offset_by_type(struct snd_sof_dev *sdev,
u32 slot_type)
{
size_t slot_desc_type_offset;
u32 type;
int i;
/* The type is the second u32 in the slot descriptor */
slot_desc_type_offset = sdev->debug_box.offset + sizeof(u32);
for (i = 0; i < SOF_IPC4_MAX_DEBUG_SLOTS; i++) {
sof_mailbox_read(sdev, slot_desc_type_offset, &type, sizeof(type));
if (type == slot_type)
return sdev->debug_box.offset + (i + 1) * SOF_IPC4_DEBUG_SLOT_SIZE;
slot_desc_type_offset += SOF_IPC4_DEBUG_DESCRIPTOR_SIZE;
}
dev_dbg(sdev->dev, "Slot type %#x is not available in debug window\n", slot_type);
return 0;
}
EXPORT_SYMBOL(sof_ipc4_find_debug_slot_offset_by_type);
static int ipc4_fw_ready(struct snd_sof_dev *sdev, struct sof_ipc4_msg *ipc4_msg) static int ipc4_fw_ready(struct snd_sof_dev *sdev, struct sof_ipc4_msg *ipc4_msg)
{ {
int inbox_offset, inbox_size, outbox_offset, outbox_size; int inbox_offset, inbox_size, outbox_offset, outbox_size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment