adsp_helper.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (c) 2021 MediaTek Corporation. All rights reserved.
  4. */
  5. #ifndef __MTK_ADSP_HELPER_H__
  6. #define __MTK_ADSP_HELPER_H__
  7. #include <linux/firmware/mediatek/mtk-adsp-ipc.h>
  8. /*
  9. * Global important adsp data structure.
  10. */
  11. struct mtk_adsp_chip_info {
  12. phys_addr_t pa_sram;
  13. phys_addr_t pa_dram; /* adsp dram physical base */
  14. phys_addr_t pa_shared_dram; /* adsp dram physical base */
  15. phys_addr_t pa_cfgreg;
  16. u32 sramsize;
  17. u32 dramsize;
  18. u32 cfgregsize;
  19. u32 shared_size;
  20. void __iomem *va_sram; /* corresponding to pa_sram */
  21. void __iomem *va_dram; /* corresponding to pa_dram */
  22. void __iomem *va_cfgreg;
  23. void __iomem *shared_sram; /* part of va_sram */
  24. void __iomem *shared_dram; /* part of va_dram */
  25. phys_addr_t adsp_bootup_addr;
  26. int dram_offset; /*dram offset between system and dsp view*/
  27. phys_addr_t pa_secreg;
  28. u32 secregsize;
  29. void __iomem *va_secreg;
  30. phys_addr_t pa_busreg;
  31. u32 busregsize;
  32. void __iomem *va_busreg;
  33. };
  34. struct adsp_priv {
  35. struct device *dev;
  36. struct snd_sof_dev *sdev;
  37. struct mtk_adsp_ipc *dsp_ipc;
  38. struct platform_device *ipc_dev;
  39. struct mtk_adsp_chip_info *adsp;
  40. struct clk **clk;
  41. u32 (*ap2adsp_addr)(u32 addr, void *data);
  42. u32 (*adsp2ap_addr)(u32 addr, void *data);
  43. void *private_data;
  44. };
  45. #endif