0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "acp.h"
0014
0015 #define ACP_LOGGER_STREAM 8
0016 #define NUM_PAGES 16
0017
0018 int acp_sof_trace_release(struct snd_sof_dev *sdev)
0019 {
0020 struct acp_dsp_stream *stream;
0021 struct acp_dev_data *adata;
0022 int ret;
0023
0024 adata = sdev->pdata->hw_pdata;
0025 stream = adata->dtrace_stream;
0026 ret = acp_dsp_stream_put(sdev, stream);
0027 if (ret < 0) {
0028 dev_err(sdev->dev, "Failed to release trace stream\n");
0029 return ret;
0030 }
0031
0032 adata->dtrace_stream = NULL;
0033 return 0;
0034 }
0035 EXPORT_SYMBOL_NS(acp_sof_trace_release, SND_SOC_SOF_AMD_COMMON);
0036
0037 int acp_sof_trace_init(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab,
0038 struct sof_ipc_dma_trace_params_ext *dtrace_params)
0039 {
0040 struct acp_dsp_stream *stream;
0041 struct acp_dev_data *adata;
0042 int ret;
0043
0044 adata = sdev->pdata->hw_pdata;
0045 stream = acp_dsp_stream_get(sdev, ACP_LOGGER_STREAM);
0046 if (!stream)
0047 return -ENODEV;
0048
0049 stream->dmab = dmab;
0050 stream->num_pages = NUM_PAGES;
0051
0052 ret = acp_dsp_stream_config(sdev, stream);
0053 if (ret < 0) {
0054 acp_dsp_stream_put(sdev, stream);
0055 return ret;
0056 }
0057
0058 adata->dtrace_stream = stream;
0059 dtrace_params->stream_tag = stream->stream_tag;
0060 dtrace_params->buffer.phy_addr = stream->reg_offset;
0061
0062 return 0;
0063 }
0064 EXPORT_SYMBOL_NS(acp_sof_trace_init, SND_SOC_SOF_AMD_COMMON);