| // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) |
| // |
| // This file is provided under a dual BSD/GPLv2 license. When using or |
| // redistributing this file, you may do so under either license. |
| // |
| // Copyright(c) 2021 Advanced Micro Devices, Inc. All rights reserved. |
| // |
| // Authors: Vishnuvardhanrao Ravuapati <vishnuvardhanrao.ravulapati@amd.com> |
| // V Sujith Kumar Reddy <Vsujithkumar.Reddy@amd.com> |
| |
| /*This file support Host TRACE Logger driver callback for SOF FW */ |
| |
| #include "acp.h" |
| |
| #define ACP_LOGGER_STREAM 8 |
| #define NUM_PAGES 16 |
| |
| int acp_sof_trace_release(struct snd_sof_dev *sdev) |
| { |
| struct acp_dsp_stream *stream; |
| struct acp_dev_data *adata; |
| int ret; |
| |
| adata = sdev->pdata->hw_pdata; |
| stream = adata->dtrace_stream; |
| ret = acp_dsp_stream_put(sdev, stream); |
| if (ret < 0) { |
| dev_err(sdev->dev, "Failed to release trace stream\n"); |
| return ret; |
| } |
| |
| adata->dtrace_stream = NULL; |
| return 0; |
| } |
| EXPORT_SYMBOL_NS(acp_sof_trace_release, SND_SOC_SOF_AMD_COMMON); |
| |
| int acp_sof_trace_init(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab, |
| struct sof_ipc_dma_trace_params_ext *dtrace_params) |
| { |
| struct acp_dsp_stream *stream; |
| struct acp_dev_data *adata; |
| int ret; |
| |
| adata = sdev->pdata->hw_pdata; |
| stream = acp_dsp_stream_get(sdev, ACP_LOGGER_STREAM); |
| if (!stream) |
| return -ENODEV; |
| |
| stream->dmab = dmab; |
| stream->num_pages = NUM_PAGES; |
| |
| ret = acp_dsp_stream_config(sdev, stream); |
| if (ret < 0) { |
| acp_dsp_stream_put(sdev, stream); |
| return ret; |
| } |
| |
| adata->dtrace_stream = stream; |
| dtrace_params->stream_tag = stream->stream_tag; |
| dtrace_params->buffer.phy_addr = stream->reg_offset; |
| |
| return 0; |
| } |
| EXPORT_SYMBOL_NS(acp_sof_trace_init, SND_SOC_SOF_AMD_COMMON); |