goto do_unmap_iram;
pr_debug("DRAM Ptr %p\n", sst_drv_ctx->dram);
- mutex_lock(&sst_drv_ctx->sst_lock);
- sst_drv_ctx->sst_state = SST_UN_INIT;
- mutex_unlock(&sst_drv_ctx->sst_lock);
+ sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
/* Register the ISR */
ret = request_irq(pci->irq, intel_sst_interrupt,
IRQF_SHARED, SST_DRV_NAME, sst_drv_ctx);
pm_runtime_get_noresume(&pci->dev);
pm_runtime_forbid(&pci->dev);
pci_dev_put(sst_drv_ctx->pci);
- mutex_lock(&sst_drv_ctx->sst_lock);
- sst_drv_ctx->sst_state = SST_UN_INIT;
- mutex_unlock(&sst_drv_ctx->sst_lock);
+ sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
misc_deregister(&lpe_ctrl);
free_irq(pci->irq, sst_drv_ctx);
iounmap(sst_drv_ctx->dram);
sst_shim_write(sst_drv_ctx->shim, SST_CSR, csr);
intel_sst_set_pll(true, SST_PLL_AUDIO);
- mutex_lock(&sst_drv_ctx->sst_lock);
- sst_drv_ctx->sst_state = SST_UN_INIT;
- mutex_unlock(&sst_drv_ctx->sst_lock);
+ sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
return 0;
}
{
int retval = 0;
+
+ mutex_lock(&sst_drv_ctx->sst_lock);
if (sst_drv_ctx->sst_state == SST_UN_INIT) {
sst_drv_ctx->sst_state = SST_START_INIT;
+ mutex_unlock(&sst_drv_ctx->sst_lock);
/* FW is not downloaded */
retval = sst_download_fw();
- if (retval)
+ if (retval) {
+ sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
return -ENODEV;
+ }
if (sst_drv_ctx->pci_id == SST_MRST_PCI_ID) {
retval = sst_drv_ctx->rx_time_slot_status;
if (retval != RX_TIMESLOT_UNINIT
&& sst_drv_ctx->pmic_vendor != SND_NC)
sst_enable_rx_timeslot(retval);
}
+ } else {
+ mutex_unlock(&sst_drv_ctx->sst_lock);
}
return 0;
}
{
int retval;
+ char name[20];
+
if (sst_drv_ctx->sst_state != SST_START_INIT)
return -EAGAIN;
+ snprintf(name, sizeof(name), "%s%04x%s", "fw_sst_",
+ sst_drv_ctx->pci_id, ".bin");
+
retval = sst_request_fw();
if (retval)
return retval;
pr_debug("DSP Downloading FW now...\n");
retval = sst_download_fw();
if (retval) {
- pr_err("FW download fail %x\n", retval);
- pr_debug("doing rtpm_put\n");
+ pr_err("sst: FW download fail %x\n", retval);
+ pr_debug("sst: doing rtpm_put\n");
sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
pm_runtime_put(&sst_drv_ctx->pci->dev);
}
pr_debug("DSP Downloading FW now...\n");
retval = sst_download_fw();
if (retval) {
- pr_err("FW download fail %x, abort\n", retval);
- pr_debug("open_pcm, doing rtpm_put\n");
+ pr_err("sst: FW download fail %x, abort\n", retval);
+ pr_debug("sst: open_pcm, doing rtpm_put\n");
sst_set_fw_state_locked(sst_drv_ctx, SST_UN_INIT);
pm_runtime_put(&sst_drv_ctx->pci->dev);
return retval;
pr_debug("*** FW Init msg came***\n");
if (init->result) {
sst_set_fw_state_locked(sst_drv_ctx, SST_ERROR);
- pr_debug("FW Init failed, Error %x\n", init->result);
- pr_err("FW Init failed, Error %x\n", init->result);
+ pr_debug("sst: FW Init failed, Error %x\n", init->result);
+ pr_err("sst: FW Init failed, Error %x\n", init->result);
retval = -init->result;
return retval;
}