| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Intel Smart Sound Technology |
| * |
| * Copyright (C) 2013, Intel Corporation |
| */ |
| |
| #ifndef __SOUND_SOC_SST_DSP_PRIV_H |
| #define __SOUND_SOC_SST_DSP_PRIV_H |
| |
| #include <linux/kernel.h> |
| #include <linux/types.h> |
| #include <linux/interrupt.h> |
| #include <linux/firmware.h> |
| |
| #include "../skylake/skl-sst-dsp.h" |
| |
| /* |
| * DSP Operations exported by platform Audio DSP driver. |
| */ |
| struct sst_ops { |
| /* Shim IO */ |
| void (*write)(void __iomem *addr, u32 offset, u32 value); |
| u32 (*read)(void __iomem *addr, u32 offset); |
| |
| /* IRQ handlers */ |
| irqreturn_t (*irq_handler)(int irq, void *context); |
| |
| /* SST init and free */ |
| int (*init)(struct sst_dsp *sst); |
| void (*free)(struct sst_dsp *sst); |
| }; |
| |
| /* |
| * Audio DSP memory offsets and addresses. |
| */ |
| struct sst_addr { |
| u32 sram0_base; |
| u32 sram1_base; |
| u32 w0_stat_sz; |
| u32 w0_up_sz; |
| void __iomem *lpe; |
| void __iomem *shim; |
| }; |
| |
| /* |
| * Audio DSP Mailbox configuration. |
| */ |
| struct sst_mailbox { |
| void __iomem *in_base; |
| void __iomem *out_base; |
| size_t in_size; |
| size_t out_size; |
| }; |
| |
| /* |
| * Generic SST Shim Interface. |
| */ |
| struct sst_dsp { |
| |
| /* Shared for all platforms */ |
| |
| /* runtime */ |
| struct sst_dsp_device *sst_dev; |
| spinlock_t spinlock; /* IPC locking */ |
| struct mutex mutex; /* DSP FW lock */ |
| struct device *dev; |
| void *thread_context; |
| int irq; |
| u32 id; |
| |
| /* operations */ |
| struct sst_ops *ops; |
| |
| /* debug FS */ |
| struct dentry *debugfs_root; |
| |
| /* base addresses */ |
| struct sst_addr addr; |
| |
| /* mailbox */ |
| struct sst_mailbox mailbox; |
| |
| /* SST FW files loaded and their modules */ |
| struct list_head module_list; |
| |
| /* SKL data */ |
| |
| const char *fw_name; |
| |
| /* To allocate CL dma buffers */ |
| struct skl_dsp_loader_ops dsp_ops; |
| struct skl_dsp_fw_ops fw_ops; |
| int sst_state; |
| struct skl_cl_dev cl_dev; |
| u32 intr_status; |
| const struct firmware *fw; |
| struct snd_dma_buffer dmab; |
| }; |
| |
| #endif |