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