Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.9.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3/*
  4 * Copyright (c) 2021 MediaTek Corporation. All rights reserved.
  5 *
  6 *  Header file for the mt8195 DSP register definition
  7 */
  8
  9#ifndef __MT8195_H
 10#define __MT8195_H
 11
 12struct mtk_adsp_chip_info;
 13struct snd_sof_dev;
 14
 15#define DSP_REG_BASE			0x10803000
 16#define SCP_CFGREG_BASE			0x10724000
 17#define DSP_SYSAO_BASE			0x1080C000
 18
 19/*****************************************************************************
 20 *                  R E G I S T E R       TABLE
 21 *****************************************************************************/
 22#define DSP_JTAGMUX			0x0000
 23#define DSP_ALTRESETVEC			0x0004
 24#define DSP_PDEBUGDATA			0x0008
 25#define DSP_PDEBUGBUS0			0x000c
 26#define PDEBUG_ENABLE			BIT(0)
 27#define DSP_PDEBUGBUS1			0x0010
 28#define DSP_PDEBUGINST			0x0014
 29#define DSP_PDEBUGLS0STAT		0x0018
 30#define DSP_PDEBUGLS1STAT		0x001c
 31#define DSP_PDEBUGPC			0x0020
 32#define DSP_RESET_SW			0x0024 /*reset sw*/
 33#define ADSP_BRESET_SW			BIT(0)
 34#define ADSP_DRESET_SW			BIT(1)
 35#define ADSP_RUNSTALL			BIT(3)
 36#define STATVECTOR_SEL			BIT(4)
 37#define ADSP_PWAIT			BIT(16)
 38#define DSP_PFAULTBUS			0x0028
 39#define DSP_PFAULTINFO			0x002c
 40#define DSP_GPR00			0x0030
 41#define DSP_GPR01			0x0034
 42#define DSP_GPR02			0x0038
 43#define DSP_GPR03			0x003c
 44#define DSP_GPR04			0x0040
 45#define DSP_GPR05			0x0044
 46#define DSP_GPR06			0x0048
 47#define DSP_GPR07			0x004c
 48#define DSP_GPR08			0x0050
 49#define DSP_GPR09			0x0054
 50#define DSP_GPR0A			0x0058
 51#define DSP_GPR0B			0x005c
 52#define DSP_GPR0C			0x0060
 53#define DSP_GPR0D			0x0064
 54#define DSP_GPR0E			0x0068
 55#define DSP_GPR0F			0x006c
 56#define DSP_GPR10			0x0070
 57#define DSP_GPR11			0x0074
 58#define DSP_GPR12			0x0078
 59#define DSP_GPR13			0x007c
 60#define DSP_GPR14			0x0080
 61#define DSP_GPR15			0x0084
 62#define DSP_GPR16			0x0088
 63#define DSP_GPR17			0x008c
 64#define DSP_GPR18			0x0090
 65#define DSP_GPR19			0x0094
 66#define DSP_GPR1A			0x0098
 67#define DSP_GPR1B			0x009c
 68#define DSP_GPR1C			0x00a0
 69#define DSP_GPR1D			0x00a4
 70#define DSP_GPR1E			0x00a8
 71#define DSP_GPR1F			0x00ac
 72#define DSP_TCM_OFFSET			0x00b0    /* not used */
 73#define DSP_DDR_OFFSET			0x00b4    /* not used */
 74#define DSP_INTFDSP			0x00d0
 75#define DSP_INTFDSP_CLR			0x00d4
 76#define DSP_SRAM_PD_SW1			0x00d8
 77#define DSP_SRAM_PD_SW2			0x00dc
 78#define DSP_OCD				0x00e0
 79#define DSP_RG_DSP_IRQ_POL		0x00f0    /* not used */
 80#define DSP_DSP_IRQ_EN			0x00f4    /* not used */
 81#define DSP_DSP_IRQ_LEVEL		0x00f8    /* not used */
 82#define DSP_DSP_IRQ_STATUS		0x00fc    /* not used */
 83#define DSP_RG_INT2CIRQ			0x0114
 84#define DSP_RG_INT_POL_CTL0		0x0120
 85#define DSP_RG_INT_EN_CTL0		0x0130
 86#define DSP_RG_INT_LV_CTL0		0x0140
 87#define DSP_RG_INT_STATUS0		0x0150
 88#define DSP_PDEBUGSTATUS0		0x0200
 89#define DSP_PDEBUGSTATUS1		0x0204
 90#define DSP_PDEBUGSTATUS2		0x0208
 91#define DSP_PDEBUGSTATUS3		0x020c
 92#define DSP_PDEBUGSTATUS4		0x0210
 93#define DSP_PDEBUGSTATUS5		0x0214
 94#define DSP_PDEBUGSTATUS6		0x0218
 95#define DSP_PDEBUGSTATUS7		0x021c
 96#define DSP_DSP2PSRAM_PRIORITY		0x0220  /* not used */
 97#define DSP_AUDIO_DSP2SPM_INT		0x0224
 98#define DSP_AUDIO_DSP2SPM_INT_ACK	0x0228
 99#define DSP_AUDIO_DSP_DEBUG_SEL		0x022C
100#define DSP_AUDIO_DSP_EMI_BASE_ADDR	0x02E0  /* not used */
101#define DSP_AUDIO_DSP_SHARED_IRAM	0x02E4
102#define DSP_AUDIO_DSP_CKCTRL_P2P_CK_CON	0x02F0
103#define DSP_RG_SEMAPHORE00		0x0300
104#define DSP_RG_SEMAPHORE01		0x0304
105#define DSP_RG_SEMAPHORE02		0x0308
106#define DSP_RG_SEMAPHORE03		0x030C
107#define DSP_RG_SEMAPHORE04		0x0310
108#define DSP_RG_SEMAPHORE05		0x0314
109#define DSP_RG_SEMAPHORE06		0x0318
110#define DSP_RG_SEMAPHORE07		0x031C
111#define DSP_RESERVED_0			0x03F0
112#define DSP_RESERVED_1			0x03F4
113
114/* dsp wdt */
115#define DSP_WDT_MODE			0x0400
116
117/* dsp mbox */
118#define DSP_MBOX_IN_CMD			0x00
119#define DSP_MBOX_IN_CMD_CLR		0x04
120#define DSP_MBOX_OUT_CMD		0x1c
121#define DSP_MBOX_OUT_CMD_CLR		0x20
122#define DSP_MBOX_IN_MSG0		0x08
123#define DSP_MBOX_IN_MSG1		0x0C
124#define DSP_MBOX_OUT_MSG0		0x24
125#define DSP_MBOX_OUT_MSG1		0x28
126
127/*dsp sys ao*/
128#define ADSP_SRAM_POOL_CON		(DSP_SYSAO_BASE + 0x30)
129#define DSP_SRAM_POOL_PD_MASK		0xf
130#define DSP_EMI_MAP_ADDR		(DSP_SYSAO_BASE + 0x81c)
131
132/* DSP memories */
133#define MBOX_OFFSET	0x800000 /* DRAM */
134#define MBOX_SIZE	0x1000 /* consistent with which in memory.h of sof fw */
135#define DSP_DRAM_SIZE	0x1000000 /* 16M */
136
137#define DSP_REG_BAR	4
138#define DSP_MBOX0_BAR	5
139#define DSP_MBOX1_BAR	6
140#define DSP_MBOX2_BAR	7
141
142#define TOTAL_SIZE_SHARED_SRAM_FROM_TAIL  0x0
143
144#define SIZE_SHARED_DRAM_DL 0x40000 /*Shared buffer for Downlink*/
145#define SIZE_SHARED_DRAM_UL 0x40000 /*Shared buffer for Uplink*/
146
147#define TOTAL_SIZE_SHARED_DRAM_FROM_TAIL  \
148	(SIZE_SHARED_DRAM_DL + SIZE_SHARED_DRAM_UL)
149
150#define SRAM_PHYS_BASE_FROM_DSP_VIEW	0x40000000 /* MT8195 DSP view */
151#define DRAM_PHYS_BASE_FROM_DSP_VIEW	0x60000000 /* MT8195 DSP view */
152
153/*remap dram between AP and DSP view, 4KB aligned*/
154#define DRAM_REMAP_SHIFT	12
155#define DRAM_REMAP_MASK		(BIT(DRAM_REMAP_SHIFT) - 1)
156
157/* suspend dsp idle check interval and timeout */
158#define SUSPEND_DSP_IDLE_TIMEOUT_US		1000000	/* timeout to wait dsp idle, 1 sec */
159#define SUSPEND_DSP_IDLE_POLL_INTERVAL_US	500	/* 0.5 msec */
160
161void sof_hifixdsp_boot_sequence(struct snd_sof_dev *sdev, u32 boot_addr);
162void sof_hifixdsp_shutdown(struct snd_sof_dev *sdev);
163#endif