Lines Matching +full:dsp +full:- +full:reset

1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
6 // Copyright(c) 2018-2021 Intel Corporation
12 * Hardware interface for audio DSP on Atom devices
18 #include <sound/soc-acpi.h>
19 #include <sound/soc-acpi-intel-match.h>
20 #include <sound/intel-dsp-config.h>
24 #include "../sof-acpi-dev.h"
25 #include "../sof-audio.h"
26 #include "../../intel/common/soc-intel-quirks.h"
40 u32 offset = sdev->dsp_oops_offset; in atom_get_registers()
48 if (xoops->arch_hdr.totalsize > EXCEPT_MAX_HDR_SIZE) { in atom_get_registers()
49 dev_err(sdev->dev, "invalid header size 0x%x. FW oops is bogus\n", in atom_get_registers()
50 xoops->arch_hdr.totalsize); in atom_get_registers()
53 offset += xoops->arch_hdr.totalsize; in atom_get_registers()
79 dev_err(sdev->dev, in atom_dump()
80 "error: ipc host -> DSP: pending %s complete %s raw 0x%llx\n", in atom_dump()
83 dev_err(sdev->dev, in atom_dump()
87 dev_err(sdev->dev, in atom_dump()
88 "error: ipc DSP -> host: pending %s complete %s raw 0x%llx\n", in atom_dump()
91 dev_err(sdev->dev, in atom_dump()
92 "error: mask DSP: pending %s complete %s raw 0x%llx\n", in atom_dump()
114 /* reply message from DSP, Mask Done interrupt first */ in atom_irq_handler()
124 /* new message from DSP, Mask Busy interrupt first */ in atom_irq_handler()
144 /* reply message from DSP */ in atom_irq_thread()
147 spin_lock_irq(&sdev->ipc_lock); in atom_irq_thread()
150 * handle immediate reply from DSP core. If the msg is in atom_irq_thread()
160 spin_unlock_irq(&sdev->ipc_lock); in atom_irq_thread()
163 /* new message from DSP */ in atom_irq_thread()
166 /* Handle messages from DSP Core */ in atom_irq_thread()
188 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data, in atom_send_msg()
189 msg->msg_size); in atom_send_msg()
210 /* clear BUSY bit and set DONE bit - accept new messages */ in atom_host_done()
223 /* clear DONE bit - tell DSP we have completed */ in atom_dsp_done()
229 * DSP control.
239 while (tries--) { in atom_run()
246 return -ENODEV; in atom_run()
255 /* put DSP into reset, set reset vector and stall */ in atom_reset()
264 /* take DSP out of reset and keep stalled for FW loading */ in atom_reset()
288 tplg_filename = devm_kasprintf(sdev->dev, GFP_KERNEL, in fixup_tplg_name()
289 "%s-%s.tplg", in fixup_tplg_name()
298 struct snd_sof_pdata *sof_pdata = sdev->pdata; in atom_machine_select()
299 const struct sof_dev_desc *desc = sof_pdata->desc; in atom_machine_select()
304 mach = snd_soc_acpi_find_machine(desc->machines); in atom_machine_select()
306 dev_warn(sdev->dev, "warning: No matching ASoC machine driver found\n"); in atom_machine_select()
310 pdev = to_platform_device(sdev->dev); in atom_machine_select()
312 dev_dbg(sdev->dev, in atom_machine_select()
313 "BYT-CR detected, SSP0 used instead of SSP2\n"); in atom_machine_select()
316 mach->sof_tplg_filename, in atom_machine_select()
319 tplg_filename = mach->sof_tplg_filename; in atom_machine_select()
323 dev_dbg(sdev->dev, in atom_machine_select()
328 sof_pdata->tplg_filename = tplg_filename; in atom_machine_select()
329 mach->mach_params.acpi_ipc_irq_index = desc->irqindex_host_ipc; in atom_machine_select()
338 .name = "ssp0-port",
349 .name = "ssp1-port",
360 .name = "ssp2-port",
371 .name = "ssp3-port",
382 .name = "ssp4-port",
393 .name = "ssp5-port",
409 struct snd_sof_pdata *pdata = sdev->pdata; in atom_set_mach_params()
410 const struct sof_dev_desc *desc = pdata->desc; in atom_set_mach_params()
413 mach_params = &mach->mach_params; in atom_set_mach_params()
414 mach_params->platform = dev_name(sdev->dev); in atom_set_mach_params()
415 mach_params->num_dai_drivers = desc->ops->num_drv; in atom_set_mach_params()
416 mach_params->dai_drivers = desc->ops->drv; in atom_set_mach_params()