Lines Matching refs:sdev
17 int snd_sof_load_firmware_raw(struct snd_sof_dev *sdev)
19 struct snd_sof_pdata *plat_data = sdev->pdata;
25 if (sdev->basefw.fw)
34 ret = request_firmware(&sdev->basefw.fw, fw_filename, sdev->dev);
37 dev_err(sdev->dev,
39 dev_err(sdev->dev,
43 dev_dbg(sdev->dev, "request_firmware %s successful\n",
48 ext_man_size = sdev->ipc->ops->fw_loader->parse_ext_manifest(sdev);
51 sdev->basefw.payload_offset = ext_man_size;
54 dev_dbg(sdev->dev, "firmware doesn't contain extended manifest\n");
57 dev_err(sdev->dev, "error: firmware %s contains unsupported or invalid extended manifest: %d\n",
68 int snd_sof_load_firmware_memcpy(struct snd_sof_dev *sdev)
72 ret = snd_sof_load_firmware_raw(sdev);
77 ret = sdev->ipc->ops->fw_loader->validate(sdev);
79 dev_err(sdev->dev, "error: invalid FW header\n");
84 ret = snd_sof_dsp_reset(sdev);
86 dev_err(sdev->dev, "error: failed to reset DSP\n");
91 if (sdev->ipc->ops->fw_loader->load_fw_to_dsp) {
92 ret = sdev->ipc->ops->fw_loader->load_fw_to_dsp(sdev);
94 dev_err(sdev->dev, "Firmware loading failed\n");
102 release_firmware(sdev->basefw.fw);
103 sdev->basefw.fw = NULL;
109 int snd_sof_run_firmware(struct snd_sof_dev *sdev)
113 init_waitqueue_head(&sdev->boot_wait);
116 sdev->dbg_dump_printed = false;
117 sdev->ipc_dump_printed = false;
120 if (sdev->first_boot) {
121 ret = snd_sof_debugfs_buf_item(sdev, &sdev->fw_version,
122 sizeof(sdev->fw_version),
126 dev_err(sdev->dev, "snd_sof_debugfs_buf_item failed\n");
132 ret = snd_sof_dsp_pre_fw_run(sdev);
134 dev_err(sdev->dev, "failed pre fw run op\n");
138 dev_dbg(sdev->dev, "booting DSP firmware\n");
141 ret = snd_sof_dsp_run(sdev);
143 snd_sof_dsp_dbg_dump(sdev, "Failed to start DSP",
154 ret = wait_event_timeout(sdev->boot_wait,
155 sdev->fw_state > SOF_FW_BOOT_IN_PROGRESS,
156 msecs_to_jiffies(sdev->boot_timeout));
158 snd_sof_dsp_dbg_dump(sdev, "Firmware boot failure due to timeout",
164 if (sdev->fw_state == SOF_FW_BOOT_READY_FAILED)
167 dev_dbg(sdev->dev, "firmware boot complete\n");
168 sof_set_fw_state(sdev, SOF_FW_BOOT_COMPLETE);
171 ret = snd_sof_dsp_post_fw_run(sdev);
173 dev_err(sdev->dev, "error: failed post fw run op\n");
177 if (sdev->ipc->ops->post_fw_boot)
178 return sdev->ipc->ops->post_fw_boot(sdev);
184 void snd_sof_fw_unload(struct snd_sof_dev *sdev)
187 release_firmware(sdev->basefw.fw);
188 sdev->basefw.fw = NULL;