acp-trace.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
  2. //
  3. // This file is provided under a dual BSD/GPLv2 license. When using or
  4. // redistributing this file, you may do so under either license.
  5. //
  6. // Copyright(c) 2021 Advanced Micro Devices, Inc. All rights reserved.
  7. //
  8. // Authors: Vishnuvardhanrao Ravuapati <[email protected]>
  9. // V Sujith Kumar Reddy <[email protected]>
  10. /*This file support Host TRACE Logger driver callback for SOF FW */
  11. #include "acp.h"
  12. #define ACP_LOGGER_STREAM 8
  13. #define NUM_PAGES 16
  14. int acp_sof_trace_release(struct snd_sof_dev *sdev)
  15. {
  16. struct acp_dsp_stream *stream;
  17. struct acp_dev_data *adata;
  18. int ret;
  19. adata = sdev->pdata->hw_pdata;
  20. stream = adata->dtrace_stream;
  21. ret = acp_dsp_stream_put(sdev, stream);
  22. if (ret < 0) {
  23. dev_err(sdev->dev, "Failed to release trace stream\n");
  24. return ret;
  25. }
  26. adata->dtrace_stream = NULL;
  27. return 0;
  28. }
  29. EXPORT_SYMBOL_NS(acp_sof_trace_release, SND_SOC_SOF_AMD_COMMON);
  30. int acp_sof_trace_init(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab,
  31. struct sof_ipc_dma_trace_params_ext *dtrace_params)
  32. {
  33. struct acp_dsp_stream *stream;
  34. struct acp_dev_data *adata;
  35. int ret;
  36. adata = sdev->pdata->hw_pdata;
  37. stream = acp_dsp_stream_get(sdev, ACP_LOGGER_STREAM);
  38. if (!stream)
  39. return -ENODEV;
  40. stream->dmab = dmab;
  41. stream->num_pages = NUM_PAGES;
  42. ret = acp_dsp_stream_config(sdev, stream);
  43. if (ret < 0) {
  44. acp_dsp_stream_put(sdev, stream);
  45. return ret;
  46. }
  47. adata->dtrace_stream = stream;
  48. dtrace_params->stream_tag = stream->stream_tag;
  49. dtrace_params->buffer.phy_addr = stream->reg_offset;
  50. return 0;
  51. }
  52. EXPORT_SYMBOL_NS(acp_sof_trace_init, SND_SOC_SOF_AMD_COMMON);