• Home
  • Raw
  • Download

Lines Matching refs:sdev

85 static void byt_host_done(struct snd_sof_dev *sdev);
86 static void byt_dsp_done(struct snd_sof_dev *sdev);
87 static void byt_get_reply(struct snd_sof_dev *sdev);
93 static void byt_get_registers(struct snd_sof_dev *sdev, in byt_get_registers() argument
98 u32 offset = sdev->dsp_oops_offset; in byt_get_registers()
101 sof_mailbox_read(sdev, offset, xoops, sizeof(*xoops)); in byt_get_registers()
107 dev_err(sdev->dev, "invalid header size 0x%x. FW oops is bogus\n", in byt_get_registers()
112 sof_mailbox_read(sdev, offset, panic_info, sizeof(*panic_info)); in byt_get_registers()
116 sof_mailbox_read(sdev, offset, stack, stack_words * sizeof(u32)); in byt_get_registers()
119 static void byt_dump(struct snd_sof_dev *sdev, u32 flags) in byt_dump() argument
127 status = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCD); in byt_dump()
128 panic = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCX); in byt_dump()
129 byt_get_registers(sdev, &xoops, &panic_info, stack, in byt_dump()
131 snd_sof_get_status(sdev, status, panic, &xoops, &panic_info, stack, in byt_dump()
135 imrx = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IMRX); in byt_dump()
136 imrd = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IMRD); in byt_dump()
137 dev_err(sdev->dev, in byt_dump()
141 dev_err(sdev->dev, in byt_dump()
145 dev_err(sdev->dev, in byt_dump()
149 dev_err(sdev->dev, in byt_dump()
162 struct snd_sof_dev *sdev = context; in byt_irq_handler() local
166 ipcx = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCX); in byt_irq_handler()
167 ipcd = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCD); in byt_irq_handler()
172 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, in byt_irq_handler()
182 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, in byt_irq_handler()
194 struct snd_sof_dev *sdev = context; in byt_irq_thread() local
197 ipcx = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCX); in byt_irq_thread()
198 ipcd = snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_IPCD); in byt_irq_thread()
203 spin_lock_irq(&sdev->ipc_lock); in byt_irq_thread()
212 byt_get_reply(sdev); in byt_irq_thread()
213 snd_sof_ipc_reply(sdev, ipcx); in byt_irq_thread()
215 byt_dsp_done(sdev); in byt_irq_thread()
217 spin_unlock_irq(&sdev->ipc_lock); in byt_irq_thread()
225 snd_sof_dsp_panic(sdev, BYT_PANIC_OFFSET(ipcd) + in byt_irq_thread()
228 snd_sof_ipc_msgs_rx(sdev); in byt_irq_thread()
231 byt_host_done(sdev); in byt_irq_thread()
237 static int byt_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in byt_send_msg() argument
240 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, SHIM_IMRX, in byt_send_msg()
244 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data, in byt_send_msg()
246 snd_sof_dsp_write64(sdev, BYT_DSP_BAR, SHIM_IPCX, SHIM_BYT_IPCX_BUSY); in byt_send_msg()
251 static void byt_get_reply(struct snd_sof_dev *sdev) in byt_get_reply() argument
253 struct snd_sof_ipc_msg *msg = sdev->msg; in byt_get_reply()
263 dev_warn(sdev->dev, "unexpected ipc interrupt raised!\n"); in byt_get_reply()
268 sof_mailbox_read(sdev, sdev->host_box.offset, &reply, sizeof(reply)); in byt_get_reply()
276 dev_err(sdev->dev, "error: reply expected %zu got %u bytes\n", in byt_get_reply()
283 sof_mailbox_read(sdev, sdev->host_box.offset, in byt_get_reply()
290 static int byt_get_mailbox_offset(struct snd_sof_dev *sdev) in byt_get_mailbox_offset() argument
295 static int byt_get_window_offset(struct snd_sof_dev *sdev, u32 id) in byt_get_window_offset() argument
300 static void byt_host_done(struct snd_sof_dev *sdev) in byt_host_done() argument
303 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, SHIM_IPCD, in byt_host_done()
309 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, SHIM_IMRX, in byt_host_done()
313 static void byt_dsp_done(struct snd_sof_dev *sdev) in byt_dsp_done() argument
316 snd_sof_dsp_update_bits64_unlocked(sdev, BYT_DSP_BAR, SHIM_IPCX, in byt_dsp_done()
324 static int byt_run(struct snd_sof_dev *sdev) in byt_run() argument
329 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_CSR, in byt_run()
332 if (!(snd_sof_dsp_read64(sdev, BYT_DSP_BAR, SHIM_CSR) & in byt_run()
338 dev_err(sdev->dev, "error: unable to run DSP firmware\n"); in byt_run()
339 byt_dump(sdev, SOF_DBG_REGS | SOF_DBG_MBOX); in byt_run()
347 static int byt_reset(struct snd_sof_dev *sdev) in byt_reset() argument
350 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_CSR, in byt_reset()
359 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_CSR, in byt_reset()
365 static const char *fixup_tplg_name(struct snd_sof_dev *sdev, in fixup_tplg_name() argument
373 filename = devm_kstrdup(sdev->dev, sof_tplg_filename, GFP_KERNEL); in fixup_tplg_name()
380 tplg_filename = devm_kasprintf(sdev->dev, GFP_KERNEL, in fixup_tplg_name()
389 static void byt_machine_select(struct snd_sof_dev *sdev) in byt_machine_select() argument
391 struct snd_sof_pdata *sof_pdata = sdev->pdata; in byt_machine_select()
399 dev_warn(sdev->dev, "warning: No matching ASoC machine driver found\n"); in byt_machine_select()
403 pdev = to_platform_device(sdev->dev); in byt_machine_select()
405 dev_dbg(sdev->dev, in byt_machine_select()
408 tplg_filename = fixup_tplg_name(sdev, in byt_machine_select()
416 dev_dbg(sdev->dev, in byt_machine_select()
511 static int tangier_pci_probe(struct snd_sof_dev *sdev) in tangier_pci_probe() argument
513 struct snd_sof_pdata *pdata = sdev->pdata; in tangier_pci_probe()
515 struct pci_dev *pci = to_pci_dev(sdev->dev); in tangier_pci_probe()
522 dev_err(sdev->dev, "error: failed to set DMA mask %d\n", ret); in tangier_pci_probe()
530 dev_dbg(sdev->dev, "LPE PHY base at 0x%x size 0x%x", base, size); in tangier_pci_probe()
531 sdev->bar[BYT_DSP_BAR] = devm_ioremap(sdev->dev, base, size); in tangier_pci_probe()
532 if (!sdev->bar[BYT_DSP_BAR]) { in tangier_pci_probe()
533 dev_err(sdev->dev, "error: failed to ioremap LPE base 0x%x size 0x%x\n", in tangier_pci_probe()
537 dev_dbg(sdev->dev, "LPE VADDR %p\n", sdev->bar[BYT_DSP_BAR]); in tangier_pci_probe()
548 dev_info(sdev->dev, "IMR not set by BIOS. Ignoring\n"); in tangier_pci_probe()
552 dev_dbg(sdev->dev, "IMR base at 0x%x size 0x%x", base, size); in tangier_pci_probe()
553 sdev->bar[BYT_IMR_BAR] = devm_ioremap(sdev->dev, base, size); in tangier_pci_probe()
554 if (!sdev->bar[BYT_IMR_BAR]) { in tangier_pci_probe()
555 dev_err(sdev->dev, "error: failed to ioremap IMR base 0x%x size 0x%x\n", in tangier_pci_probe()
559 dev_dbg(sdev->dev, "IMR VADDR %p\n", sdev->bar[BYT_IMR_BAR]); in tangier_pci_probe()
563 sdev->ipc_irq = pci->irq; in tangier_pci_probe()
564 dev_dbg(sdev->dev, "using IRQ %d\n", sdev->ipc_irq); in tangier_pci_probe()
565 ret = devm_request_threaded_irq(sdev->dev, sdev->ipc_irq, in tangier_pci_probe()
567 0, "AudioDSP", sdev); in tangier_pci_probe()
569 dev_err(sdev->dev, "error: failed to register IRQ %d\n", in tangier_pci_probe()
570 sdev->ipc_irq); in tangier_pci_probe()
575 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, in tangier_pci_probe()
580 sdev->dsp_box.offset = MBOX_OFFSET; in tangier_pci_probe()
662 static void byt_reset_dsp_disable_int(struct snd_sof_dev *sdev) in byt_reset_dsp_disable_int() argument
665 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, 0x3, 0x3); in byt_reset_dsp_disable_int()
666 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRD, 0x3, 0x3); in byt_reset_dsp_disable_int()
669 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_CSR, in byt_reset_dsp_disable_int()
674 static int byt_suspend(struct snd_sof_dev *sdev, u32 target_state) in byt_suspend() argument
676 byt_reset_dsp_disable_int(sdev); in byt_suspend()
681 static int byt_resume(struct snd_sof_dev *sdev) in byt_resume() argument
684 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, in byt_resume()
691 static int byt_remove(struct snd_sof_dev *sdev) in byt_remove() argument
693 byt_reset_dsp_disable_int(sdev); in byt_remove()
725 static int byt_acpi_probe(struct snd_sof_dev *sdev) in byt_acpi_probe() argument
727 struct snd_sof_pdata *pdata = sdev->pdata; in byt_acpi_probe()
730 container_of(sdev->dev, struct platform_device, dev); in byt_acpi_probe()
736 ret = dma_coerce_mask_and_coherent(sdev->dev, DMA_BIT_MASK(31)); in byt_acpi_probe()
738 dev_err(sdev->dev, "error: failed to set DMA mask %d\n", ret); in byt_acpi_probe()
749 dev_err(sdev->dev, "error: failed to get LPE base at idx %d\n", in byt_acpi_probe()
754 dev_dbg(sdev->dev, "LPE PHY base at 0x%x size 0x%x", base, size); in byt_acpi_probe()
755 sdev->bar[BYT_DSP_BAR] = devm_ioremap(sdev->dev, base, size); in byt_acpi_probe()
756 if (!sdev->bar[BYT_DSP_BAR]) { in byt_acpi_probe()
757 dev_err(sdev->dev, "error: failed to ioremap LPE base 0x%x size 0x%x\n", in byt_acpi_probe()
761 dev_dbg(sdev->dev, "LPE VADDR %p\n", sdev->bar[BYT_DSP_BAR]); in byt_acpi_probe()
764 sdev->mmio_bar = BYT_DSP_BAR; in byt_acpi_probe()
765 sdev->mailbox_bar = BYT_DSP_BAR; in byt_acpi_probe()
777 dev_err(sdev->dev, "error: failed to get IMR base at idx %d\n", in byt_acpi_probe()
784 dev_info(sdev->dev, "IMR not set by BIOS. Ignoring\n"); in byt_acpi_probe()
788 dev_dbg(sdev->dev, "IMR base at 0x%x size 0x%x", base, size); in byt_acpi_probe()
789 sdev->bar[BYT_IMR_BAR] = devm_ioremap(sdev->dev, base, size); in byt_acpi_probe()
790 if (!sdev->bar[BYT_IMR_BAR]) { in byt_acpi_probe()
791 dev_err(sdev->dev, "error: failed to ioremap IMR base 0x%x size 0x%x\n", in byt_acpi_probe()
795 dev_dbg(sdev->dev, "IMR VADDR %p\n", sdev->bar[BYT_IMR_BAR]); in byt_acpi_probe()
799 sdev->ipc_irq = platform_get_irq(pdev, desc->irqindex_host_ipc); in byt_acpi_probe()
800 if (sdev->ipc_irq < 0) in byt_acpi_probe()
801 return sdev->ipc_irq; in byt_acpi_probe()
803 dev_dbg(sdev->dev, "using IRQ %d\n", sdev->ipc_irq); in byt_acpi_probe()
804 ret = devm_request_threaded_irq(sdev->dev, sdev->ipc_irq, in byt_acpi_probe()
806 IRQF_SHARED, "AudioDSP", sdev); in byt_acpi_probe()
808 dev_err(sdev->dev, "error: failed to register IRQ %d\n", in byt_acpi_probe()
809 sdev->ipc_irq); in byt_acpi_probe()
814 snd_sof_dsp_update_bits64(sdev, BYT_DSP_BAR, SHIM_IMRX, in byt_acpi_probe()
819 sdev->dsp_box.offset = MBOX_OFFSET; in byt_acpi_probe()