/sound/soc/intel/common/ |
D | sst-dsp.c | 77 void sst_memcpy_toio_32(struct sst_dsp *sst, in sst_memcpy_toio_32() argument 84 void sst_memcpy_fromio_32(struct sst_dsp *sst, void *dest, in sst_memcpy_fromio_32() argument 92 void sst_dsp_shim_write(struct sst_dsp *sst, u32 offset, u32 value) in sst_dsp_shim_write() argument 96 spin_lock_irqsave(&sst->spinlock, flags); in sst_dsp_shim_write() 97 sst->ops->write(sst->addr.shim, offset, value); in sst_dsp_shim_write() 98 spin_unlock_irqrestore(&sst->spinlock, flags); in sst_dsp_shim_write() 102 u32 sst_dsp_shim_read(struct sst_dsp *sst, u32 offset) in sst_dsp_shim_read() argument 107 spin_lock_irqsave(&sst->spinlock, flags); in sst_dsp_shim_read() 108 val = sst->ops->read(sst->addr.shim, offset); in sst_dsp_shim_read() 109 spin_unlock_irqrestore(&sst->spinlock, flags); in sst_dsp_shim_read() [all …]
|
D | Makefile | 1 snd-soc-sst-dsp-objs := sst-dsp.o 2 snd-soc-sst-acpi-objs := sst-acpi.o 3 snd-soc-sst-ipc-objs := sst-ipc.o 6 snd-soc-sst-dsp-objs += sst-firmware.o 9 obj-$(CONFIG_SND_SOC_INTEL_SST) += snd-soc-sst-dsp.o snd-soc-sst-ipc.o 10 obj-$(CONFIG_SND_SOC_INTEL_SST_ACPI) += snd-soc-sst-acpi.o
|
D | sst-dsp.h | 223 void sst_dsp_free(struct sst_dsp *sst); 227 void sst_dsp_shim_write(struct sst_dsp *sst, u32 offset, u32 value); 228 u32 sst_dsp_shim_read(struct sst_dsp *sst, u32 offset); 229 int sst_dsp_shim_update_bits(struct sst_dsp *sst, u32 offset, 231 void sst_dsp_shim_write64(struct sst_dsp *sst, u32 offset, u64 value); 232 u64 sst_dsp_shim_read64(struct sst_dsp *sst, u32 offset); 233 int sst_dsp_shim_update_bits64(struct sst_dsp *sst, u32 offset, 235 void sst_dsp_shim_update_bits_forced(struct sst_dsp *sst, u32 offset, 239 void sst_dsp_shim_write_unlocked(struct sst_dsp *sst, u32 offset, u32 value); 240 u32 sst_dsp_shim_read_unlocked(struct sst_dsp *sst, u32 offset); [all …]
|
D | sst-dsp-priv.h | 52 void (*ram_read)(struct sst_dsp *sst, void *dest, void __iomem *src, 54 void (*ram_write)(struct sst_dsp *sst, void __iomem *dest, void *src, 63 int (*init)(struct sst_dsp *sst, struct sst_pdata *pdata); 64 void (*free)(struct sst_dsp *sst); 321 static inline void sst_dsp_write(struct sst_dsp *sst, void *src, in sst_dsp_write() argument 324 sst->ops->ram_write(sst, sst->addr.lpe + dest_offset, src, bytes); in sst_dsp_write() 327 static inline void sst_dsp_read(struct sst_dsp *sst, void *dest, in sst_dsp_read() argument 330 sst->ops->ram_read(sst, dest, sst->addr.lpe + src_offset, bytes); in sst_dsp_read() 333 static inline void *sst_dsp_get_thread_context(struct sst_dsp *sst) in sst_dsp_get_thread_context() argument 335 return sst->thread_context; in sst_dsp_get_thread_context() [all …]
|
D | sst-firmware.c | 44 struct sst_dsp *sst; member 60 struct sst_dsp *sst = (struct sst_dsp *)arg; in sst_dma_transfer_complete() local 62 dev_dbg(sst->dev, "DMA: callback\n"); in sst_dma_transfer_complete() 65 static int sst_dsp_dma_copy(struct sst_dsp *sst, dma_addr_t dest_addr, in sst_dsp_dma_copy() argument 69 struct sst_dma *dma = sst->dma; in sst_dsp_dma_copy() 72 dev_err(sst->dev, "error: no DMA channel\n"); in sst_dsp_dma_copy() 76 dev_dbg(sst->dev, "DMA: src: 0x%lx dest 0x%lx size %zu\n", in sst_dsp_dma_copy() 82 dev_err(sst->dev, "error: dma prep memcpy failed\n"); in sst_dsp_dma_copy() 87 desc->callback_param = sst; in sst_dsp_dma_copy() 96 int sst_dsp_dma_copyto(struct sst_dsp *sst, dma_addr_t dest_addr, in sst_dsp_dma_copyto() argument [all …]
|
/sound/soc/intel/haswell/ |
D | sst-haswell-dsp.c | 86 static void hsw_free(struct sst_dsp *sst); 218 struct sst_dsp *sst = (struct sst_dsp *) context; in hsw_irq() local 222 spin_lock(&sst->spinlock); in hsw_irq() 225 isr = sst_dsp_shim_read_unlocked(sst, SST_ISRX); in hsw_irq() 228 sst_dsp_shim_read_unlocked(sst, SST_IMRX)); in hsw_irq() 231 sst_dsp_shim_update_bits_unlocked(sst, SST_IMRX, in hsw_irq() 238 sst_dsp_shim_read_unlocked(sst, SST_IMRX)); in hsw_irq() 241 sst_dsp_shim_update_bits_unlocked(sst, SST_IMRX, in hsw_irq() 246 spin_unlock(&sst->spinlock); in hsw_irq() 250 static void hsw_set_dsp_D3(struct sst_dsp *sst) in hsw_set_dsp_D3() argument [all …]
|
D | Makefile | 1 snd-soc-sst-haswell-pcm-objs := \ 2 sst-haswell-ipc.o sst-haswell-pcm.o sst-haswell-dsp.o 4 obj-$(CONFIG_SND_SOC_INTEL_HASWELL) += snd-soc-sst-haswell-pcm.o
|
D | sst-haswell-ipc.c | 726 struct sst_dsp *sst = hsw->dsp; in hsw_process_notification() local 730 header = sst_dsp_shim_read_unlocked(sst, SST_IPCD); in hsw_process_notification() 777 struct sst_dsp *sst = (struct sst_dsp *) context; in hsw_irq_thread() local 778 struct sst_hsw *hsw = sst_dsp_get_thread_context(sst); in hsw_irq_thread() 784 spin_lock_irqsave(&sst->spinlock, flags); in hsw_irq_thread() 787 ipcd = sst_dsp_shim_read_unlocked(sst, SST_IPCD); in hsw_irq_thread() 797 sst_dsp_shim_update_bits_unlocked(sst, SST_IPCX, in hsw_irq_thread() 801 sst_dsp_shim_update_bits_unlocked(sst, SST_IMRX, in hsw_irq_thread() 814 sst_dsp_shim_update_bits_unlocked(sst, SST_IPCD, in hsw_irq_thread() 818 sst_dsp_shim_update_bits_unlocked(sst, SST_IMRX, in hsw_irq_thread() [all …]
|
/sound/soc/intel/baytrail/ |
D | sst-baytrail-dsp.c | 159 static void sst_byt_dump_shim(struct sst_dsp *sst) in sst_byt_dump_shim() argument 165 reg = sst_dsp_shim_read64_unlocked(sst, i); in sst_byt_dump_shim() 167 dev_dbg(sst->dev, "shim 0x%2.2x value 0x%16.16llx\n", in sst_byt_dump_shim() 172 reg = readl(sst->addr.pci_cfg + i); in sst_byt_dump_shim() 174 dev_dbg(sst->dev, "pci 0x%2.2x value 0x%8.8x\n", in sst_byt_dump_shim() 181 struct sst_dsp *sst = (struct sst_dsp *) context; in sst_byt_irq() local 185 spin_lock(&sst->spinlock); in sst_byt_irq() 187 isrx = sst_dsp_shim_read64_unlocked(sst, SST_ISRX); in sst_byt_irq() 190 sst_dsp_shim_update_bits64_unlocked(sst, SST_IPCX, in sst_byt_irq() 196 sst_dsp_shim_update_bits64_unlocked(sst, SST_IMRX, in sst_byt_irq() [all …]
|
D | Makefile | 1 snd-soc-sst-baytrail-pcm-objs := \ 2 sst-baytrail-ipc.o sst-baytrail-pcm.o sst-baytrail-dsp.o 4 obj-$(CONFIG_SND_SOC_INTEL_BAYTRAIL) += snd-soc-sst-baytrail-pcm.o
|
D | sst-baytrail-ipc.c | 284 struct sst_dsp *sst = byt->dsp; in sst_byt_process_notification() local 290 header = sst_dsp_shim_read64_unlocked(sst, SST_IPCD); in sst_byt_process_notification() 298 spin_unlock_irqrestore(&sst->spinlock, *flags); in sst_byt_process_notification() 300 spin_lock_irqsave(&sst->spinlock, *flags); in sst_byt_process_notification() 313 struct sst_dsp *sst = (struct sst_dsp *) context; in sst_byt_irq_thread() local 314 struct sst_byt *byt = sst_dsp_get_thread_context(sst); in sst_byt_irq_thread() 319 spin_lock_irqsave(&sst->spinlock, flags); in sst_byt_irq_thread() 321 header = sst_dsp_shim_read64_unlocked(sst, SST_IPCD); in sst_byt_irq_thread() 335 sst_dsp_shim_update_bits64_unlocked(sst, SST_IPCD, in sst_byt_irq_thread() 340 sst_dsp_shim_update_bits64_unlocked(sst, SST_IMRX, in sst_byt_irq_thread() [all …]
|
/sound/soc/intel/boards/ |
D | Makefile | 1 snd-soc-sst-haswell-objs := haswell.o 2 snd-soc-sst-byt-rt5640-mach-objs := byt-rt5640.o 3 snd-soc-sst-byt-max98090-mach-objs := byt-max98090.o 4 snd-soc-sst-broadwell-objs := broadwell.o 5 snd-soc-sst-bytcr-rt5640-objs := bytcr_rt5640.o 6 snd-soc-sst-cht-bsw-rt5672-objs := cht_bsw_rt5672.o 7 snd-soc-sst-cht-bsw-rt5645-objs := cht_bsw_rt5645.o 8 snd-soc-sst-cht-bsw-max98090_ti-objs := cht_bsw_max98090_ti.o 11 obj-$(CONFIG_SND_SOC_INTEL_HASWELL_MACH) += snd-soc-sst-haswell.o 12 obj-$(CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH) += snd-soc-sst-byt-rt5640-mach.o [all …]
|
/sound/soc/intel/skylake/ |
D | skl-sst-dsp.c | 301 struct sst_dsp *sst; in skl_dsp_ctx_init() local 303 sst = devm_kzalloc(dev, sizeof(*sst), GFP_KERNEL); in skl_dsp_ctx_init() 304 if (sst == NULL) in skl_dsp_ctx_init() 307 spin_lock_init(&sst->spinlock); in skl_dsp_ctx_init() 308 mutex_init(&sst->mutex); in skl_dsp_ctx_init() 309 sst->dev = dev; in skl_dsp_ctx_init() 310 sst->sst_dev = sst_dev; in skl_dsp_ctx_init() 311 sst->irq = irq; in skl_dsp_ctx_init() 312 sst->ops = sst_dev->ops; in skl_dsp_ctx_init() 313 sst->thread_context = sst_dev->thread_context; in skl_dsp_ctx_init() [all …]
|
D | Makefile | 7 snd-soc-skl-ipc-objs := skl-sst-ipc.o skl-sst-dsp.o skl-sst-cldma.o \ 8 skl-sst.o
|
D | skl-sst.c | 229 struct sst_dsp *sst; in skl_sst_dsp_init() local 245 sst = skl->dsp; in skl_sst_dsp_init() 247 sst->addr.lpe = mmio_base; in skl_sst_dsp_init() 248 sst->addr.shim = mmio_base; in skl_sst_dsp_init() 249 sst_dsp_mailbox_init(sst, (SKL_ADSP_SRAM0_BASE + SKL_ADSP_W0_STAT_SZ), in skl_sst_dsp_init() 252 sst->dsp_ops = dsp_ops; in skl_sst_dsp_init() 253 sst->fw_ops = skl_fw_ops; in skl_sst_dsp_init() 259 ret = sst->fw_ops.load_fw(sst); in skl_sst_dsp_init()
|
/sound/soc/intel/atom/ |
D | sst-mfld-platform-compress.c | 64 if (!sst || !try_module_get(sst->dev->driver->owner)) { in sst_platform_compr_open() 69 stream->compr_ops = sst->compr_ops; in sst_platform_compr_open() 73 sst->compr_ops->power(sst->dev, true); in sst_platform_compr_open() 90 sst->compr_ops->power(sst->dev, false); in sst_platform_compr_free() 95 ret_val = stream->compr_ops->close(sst->dev, str_id); in sst_platform_compr_free() 96 module_put(sst->dev->driver->owner); in sst_platform_compr_free() 167 retval = stream->compr_ops->open(sst->dev, &str_params, &cb); in sst_platform_compr_set_params() 184 return stream->compr_ops->stream_start(sst->dev, stream->id); in sst_platform_compr_trigger() 187 return stream->compr_ops->stream_drop(sst->dev, stream->id); in sst_platform_compr_trigger() 190 return stream->compr_ops->stream_drain(sst->dev, stream->id); in sst_platform_compr_trigger() [all …]
|
D | Makefile | 1 snd-soc-sst-mfld-platform-objs := sst-mfld-platform-pcm.o \ 2 sst-mfld-platform-compress.o sst-atom-controls.o 4 obj-$(CONFIG_SND_SST_MFLD_PLATFORM) += snd-soc-sst-mfld-platform.o 7 obj-$(CONFIG_SND_SST_IPC) += sst/
|
D | sst-mfld-platform-pcm.c | 34 struct sst_device *sst; variable 44 if (sst) { in sst_register_dsp() 45 dev_err(dev->dev, "we already have a device %s\n", sst->name); in sst_register_dsp() 51 sst = dev; in sst_register_dsp() 61 if (dev != sst) in sst_unregister_dsp() 66 if (!sst) { in sst_unregister_dsp() 71 module_put(sst->dev->driver->owner); in sst_unregister_dsp() 72 dev_dbg(dev->dev, "unreg %s\n", sst->name); in sst_unregister_dsp() 73 sst = NULL; in sst_unregister_dsp() 254 ret_val = stream->ops->open(sst->dev, &str_params); in sst_platform_alloc_stream() [all …]
|
D | sst-mfld-platform.h | 27 extern struct sst_device *sst; 182 int sst_register_dsp(struct sst_device *sst); 183 int sst_unregister_dsp(struct sst_device *sst);
|
D | sst-atom-controls.c | 65 return sst->ops->send_byte_stream(sst->dev, drv->byte_stream); in sst_fill_and_send_cmd_unlocked() 745 ret = sst->ops->power(sst->dev, true); in sst_handle_vb_timer() 773 sst->ops->power(sst->dev, false); in sst_handle_vb_timer()
|
/sound/soc/intel/atom/sst/ |
D | sst_pvt.c | 229 int sst_prepare_and_post_msg(struct intel_sst_drv *sst, in sst_prepare_and_post_msg() argument 239 pvt_id = sst_assign_pvt_id(sst); in sst_prepare_and_post_msg() 245 &msg, large, sst, &block, ipc_msg, pvt_id); in sst_prepare_and_post_msg() 250 test_and_clear_bit(pvt_id, &sst->pvt_id); in sst_prepare_and_post_msg() 254 dev_dbg(sst->dev, "pvt_id = %d, pipe id = %d, task = %d ipc_msg: %d\n", in sst_prepare_and_post_msg() 260 dev_dbg(sst->dev, "header:%x\n", in sst_prepare_and_post_msg() 262 dev_dbg(sst->dev, "response rqd: %x", in sst_prepare_and_post_msg() 264 dev_dbg(sst->dev, "msg->mrfld_header.p.header_low_payload:%d", in sst_prepare_and_post_msg() 276 sst->ops->post_message(sst, msg, true); in sst_prepare_and_post_msg() 278 sst_add_to_dispatch_list_and_post(sst, msg); in sst_prepare_and_post_msg() [all …]
|
D | sst_loader.c | 294 static int sst_cache_and_parse_fw(struct intel_sst_drv *sst, in sst_cache_and_parse_fw() argument 299 sst->fw_in_mem = kzalloc(fw->size, GFP_KERNEL); in sst_cache_and_parse_fw() 300 if (!sst->fw_in_mem) { in sst_cache_and_parse_fw() 304 dev_dbg(sst->dev, "copied fw to %p", sst->fw_in_mem); in sst_cache_and_parse_fw() 305 dev_dbg(sst->dev, "phys: %lx", (unsigned long)virt_to_phys(sst->fw_in_mem)); in sst_cache_and_parse_fw() 306 memcpy(sst->fw_in_mem, fw->data, fw->size); in sst_cache_and_parse_fw() 307 retval = sst_parse_fw_memcpy(sst, fw->size, &sst->memcpy_list); in sst_cache_and_parse_fw() 309 dev_err(sst->dev, "Failed to parse fw\n"); in sst_cache_and_parse_fw() 310 kfree(sst->fw_in_mem); in sst_cache_and_parse_fw() 311 sst->fw_in_mem = NULL; in sst_cache_and_parse_fw() [all …]
|
D | Makefile | 1 snd-intel-sst-core-objs := sst.o sst_ipc.o sst_stream.o sst_drv_interface.o sst_loader.o sst_pvt.o 2 snd-intel-sst-pci-objs += sst_pci.o 3 snd-intel-sst-acpi-objs += sst_acpi.o 5 obj-$(CONFIG_SND_SST_IPC) += snd-intel-sst-core.o 6 obj-$(CONFIG_SND_SST_IPC_PCI) += snd-intel-sst-pci.o 7 obj-$(CONFIG_SND_SST_IPC_ACPI) += snd-intel-sst-acpi.o
|
D | sst.h | 456 int (*save_dsp_context)(struct intel_sst_drv *sst); 459 void (*post_download)(struct intel_sst_drv *sst); 498 int intel_sst_register_compress(struct intel_sst_drv *sst); 499 int intel_sst_remove_compress(struct intel_sst_drv *sst); 515 int sst_driver_ops(struct intel_sst_drv *sst); 518 int sst_prepare_and_post_msg(struct intel_sst_drv *sst, 533 void sst_add_to_dispatch_list_and_post(struct intel_sst_drv *sst,
|
D | sst.c | 150 static int sst_save_dsp_context_v2(struct intel_sst_drv *sst) in sst_save_dsp_context_v2() argument 154 ret = sst_prepare_and_post_msg(sst, SST_TASK_ID_MEDIA, IPC_CMD, in sst_save_dsp_context_v2() 159 dev_err(sst->dev, "not suspending FW!!, Err: %d\n", ret); in sst_save_dsp_context_v2() 180 int sst_driver_ops(struct intel_sst_drv *sst) in sst_driver_ops() argument 183 switch (sst->dev_id) { in sst_driver_ops() 187 sst->tstamp = SST_TIME_STAMP_MRFLD; in sst_driver_ops() 188 sst->ops = &mrfld_ops; in sst_driver_ops() 192 dev_err(sst->dev, in sst_driver_ops() 193 "SST Driver capablities missing for dev_id: %x", sst->dev_id); in sst_driver_ops()
|