xref: /openbmc/linux/sound/soc/sof/intel/atom.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
147fad239SPierre-Louis Bossart /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
247fad239SPierre-Louis Bossart /*
347fad239SPierre-Louis Bossart  * This file is provided under a dual BSD/GPLv2 license.  When using or
447fad239SPierre-Louis Bossart  * redistributing this file, you may do so under either license.
547fad239SPierre-Louis Bossart  *
647fad239SPierre-Louis Bossart  * Copyright(c) 2017-2021 Intel Corporation. All rights reserved.
747fad239SPierre-Louis Bossart  *
847fad239SPierre-Louis Bossart  * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
947fad239SPierre-Louis Bossart  */
1047fad239SPierre-Louis Bossart 
1147fad239SPierre-Louis Bossart #ifndef __SOF_INTEL_ATOM_H
1247fad239SPierre-Louis Bossart #define __SOF_INTEL_ATOM_H
1347fad239SPierre-Louis Bossart 
1447fad239SPierre-Louis Bossart /* DSP memories */
1547fad239SPierre-Louis Bossart #define IRAM_OFFSET		0x0C0000
1647fad239SPierre-Louis Bossart #define IRAM_SIZE		(80 * 1024)
1747fad239SPierre-Louis Bossart #define DRAM_OFFSET		0x100000
1847fad239SPierre-Louis Bossart #define DRAM_SIZE		(160 * 1024)
1947fad239SPierre-Louis Bossart #define SHIM_OFFSET		0x140000
2047fad239SPierre-Louis Bossart #define SHIM_SIZE_BYT		0x100
2147fad239SPierre-Louis Bossart #define SHIM_SIZE_CHT		0x118
2247fad239SPierre-Louis Bossart #define MBOX_OFFSET		0x144000
2347fad239SPierre-Louis Bossart #define MBOX_SIZE		0x1000
2447fad239SPierre-Louis Bossart #define EXCEPT_OFFSET		0x800
2547fad239SPierre-Louis Bossart #define EXCEPT_MAX_HDR_SIZE	0x400
2647fad239SPierre-Louis Bossart 
2747fad239SPierre-Louis Bossart /* DSP peripherals */
2847fad239SPierre-Louis Bossart #define DMAC0_OFFSET		0x098000
2947fad239SPierre-Louis Bossart #define DMAC1_OFFSET		0x09c000
3047fad239SPierre-Louis Bossart #define DMAC2_OFFSET		0x094000
3147fad239SPierre-Louis Bossart #define DMAC_SIZE		0x420
3247fad239SPierre-Louis Bossart #define SSP0_OFFSET		0x0a0000
3347fad239SPierre-Louis Bossart #define SSP1_OFFSET		0x0a1000
3447fad239SPierre-Louis Bossart #define SSP2_OFFSET		0x0a2000
3547fad239SPierre-Louis Bossart #define SSP3_OFFSET		0x0a4000
3647fad239SPierre-Louis Bossart #define SSP4_OFFSET		0x0a5000
3747fad239SPierre-Louis Bossart #define SSP5_OFFSET		0x0a6000
3847fad239SPierre-Louis Bossart #define SSP_SIZE		0x100
3947fad239SPierre-Louis Bossart 
4047fad239SPierre-Louis Bossart #define STACK_DUMP_SIZE		32
4147fad239SPierre-Louis Bossart 
4247fad239SPierre-Louis Bossart #define PCI_BAR_SIZE		0x200000
4347fad239SPierre-Louis Bossart 
4447fad239SPierre-Louis Bossart #define PANIC_OFFSET(x)	(((x) & GENMASK_ULL(47, 32)) >> 32)
4547fad239SPierre-Louis Bossart 
4647fad239SPierre-Louis Bossart /*
4747fad239SPierre-Louis Bossart  * Debug
4847fad239SPierre-Louis Bossart  */
4947fad239SPierre-Louis Bossart 
5047fad239SPierre-Louis Bossart #define MBOX_DUMP_SIZE	0x30
5147fad239SPierre-Louis Bossart 
5247fad239SPierre-Louis Bossart /* BARs */
5347fad239SPierre-Louis Bossart #define DSP_BAR		0
5447fad239SPierre-Louis Bossart #define PCI_BAR		1
5547fad239SPierre-Louis Bossart #define IMR_BAR		2
5647fad239SPierre-Louis Bossart 
5747fad239SPierre-Louis Bossart irqreturn_t atom_irq_handler(int irq, void *context);
5847fad239SPierre-Louis Bossart irqreturn_t atom_irq_thread(int irq, void *context);
5947fad239SPierre-Louis Bossart 
6047fad239SPierre-Louis Bossart int atom_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg);
6147fad239SPierre-Louis Bossart int atom_get_mailbox_offset(struct snd_sof_dev *sdev);
6247fad239SPierre-Louis Bossart int atom_get_window_offset(struct snd_sof_dev *sdev, u32 id);
6347fad239SPierre-Louis Bossart 
6447fad239SPierre-Louis Bossart int atom_run(struct snd_sof_dev *sdev);
6547fad239SPierre-Louis Bossart int atom_reset(struct snd_sof_dev *sdev);
6647fad239SPierre-Louis Bossart void atom_dump(struct snd_sof_dev *sdev, u32 flags);
6747fad239SPierre-Louis Bossart 
68*cb515f10SGuennadi Liakhovetski struct snd_soc_acpi_mach *atom_machine_select(struct snd_sof_dev *sdev);
69*cb515f10SGuennadi Liakhovetski void atom_set_mach_params(struct snd_soc_acpi_mach *mach,
7047fad239SPierre-Louis Bossart 			  struct snd_sof_dev *sdev);
7147fad239SPierre-Louis Bossart 
7247fad239SPierre-Louis Bossart extern struct snd_soc_dai_driver atom_dai[];
7347fad239SPierre-Louis Bossart 
7447fad239SPierre-Louis Bossart #endif
75