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 */
15struct 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_shared_dram; /* adsp dram physical base */
19	phys_addr_t pa_cfgreg;
20	u32 sramsize;
21	u32 dramsize;
22	u32 cfgregsize;
23	u32 shared_size;
24	void __iomem *va_sram; /* corresponding to pa_sram */
25	void __iomem *va_dram; /* corresponding to pa_dram */
26	void __iomem *va_cfgreg;
27	void __iomem *shared_sram; /* part of  va_sram */
28	void __iomem *shared_dram; /* part of  va_dram */
29	phys_addr_t adsp_bootup_addr;
30	int dram_offset; /*dram offset between system and dsp view*/
31
32	phys_addr_t pa_secreg;
33	u32 secregsize;
34	void __iomem *va_secreg;
35
36	phys_addr_t pa_busreg;
37	u32 busregsize;
38	void __iomem *va_busreg;
39};
40
41struct adsp_priv {
42	struct device *dev;
43	struct snd_sof_dev *sdev;
44	struct mtk_adsp_ipc *dsp_ipc;
45	struct platform_device *ipc_dev;
46	struct mtk_adsp_chip_info *adsp;
47	struct clk **clk;
48	u32 (*ap2adsp_addr)(u32 addr, void *data);
49	u32 (*adsp2ap_addr)(u32 addr, void *data);
50
51	void *private_data;
52};
53
54#endif
55