123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Intel Smart Sound Technology
- *
- * Copyright (C) 2013, Intel Corporation. All rights reserved.
- */
- #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
|