Loading sound/soc/intel/sst/sst.c +1 −17 Original line number Diff line number Diff line Loading @@ -492,21 +492,6 @@ static int intel_sst_suspend(struct device *dev) return ret; } static int intel_sst_runtime_resume(struct device *dev) { int ret = 0; struct intel_sst_drv *ctx = dev_get_drvdata(dev); if (ctx->sst_state == SST_RESET) { ret = sst_load_fw(ctx); if (ret) { dev_err(dev, "FW download fail %d\n", ret); sst_set_fw_state_locked(ctx, SST_RESET); } } return ret; } static int intel_sst_resume(struct device *dev) { struct intel_sst_drv *ctx = dev_get_drvdata(dev); Loading @@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev) struct sst_block *block; if (!fw_save) return intel_sst_runtime_resume(dev); return 0; sst_set_fw_state_locked(ctx, SST_FW_LOADING); Loading Loading @@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = { .suspend = intel_sst_suspend, .resume = intel_sst_resume, .runtime_suspend = intel_sst_runtime_suspend, .runtime_resume = intel_sst_runtime_resume, }; EXPORT_SYMBOL_GPL(intel_sst_pm); sound/soc/intel/sst/sst_drv_interface.c +23 −4 Original line number Diff line number Diff line Loading @@ -138,13 +138,32 @@ int sst_get_stream(struct intel_sst_drv *ctx, static int sst_power_control(struct device *dev, bool state) { struct intel_sst_drv *ctx = dev_get_drvdata(dev); int ret = 0; dev_dbg(ctx->dev, "state:%d", state); if (state == true) return pm_runtime_get_sync(dev); else if (state == true) { ret = pm_runtime_get_sync(dev); dev_dbg(ctx->dev, "Enable: pm usage count: %d\n", atomic_read(&dev->power.usage_count)); if (ret < 0) { dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret); return ret; } if ((ctx->sst_state == SST_RESET) && (atomic_read(&dev->power.usage_count) == 1)) { ret = sst_load_fw(ctx); if (ret) { dev_err(dev, "FW download fail %d\n", ret); sst_set_fw_state_locked(ctx, SST_RESET); ret = sst_pm_runtime_put(ctx); } } } else { dev_dbg(ctx->dev, "Disable: pm usage count: %d\n", atomic_read(&dev->power.usage_count)); return sst_pm_runtime_put(ctx); } return ret; } /* * sst_open_pcm_stream - Open PCM interface Loading Loading
sound/soc/intel/sst/sst.c +1 −17 Original line number Diff line number Diff line Loading @@ -492,21 +492,6 @@ static int intel_sst_suspend(struct device *dev) return ret; } static int intel_sst_runtime_resume(struct device *dev) { int ret = 0; struct intel_sst_drv *ctx = dev_get_drvdata(dev); if (ctx->sst_state == SST_RESET) { ret = sst_load_fw(ctx); if (ret) { dev_err(dev, "FW download fail %d\n", ret); sst_set_fw_state_locked(ctx, SST_RESET); } } return ret; } static int intel_sst_resume(struct device *dev) { struct intel_sst_drv *ctx = dev_get_drvdata(dev); Loading @@ -515,7 +500,7 @@ static int intel_sst_resume(struct device *dev) struct sst_block *block; if (!fw_save) return intel_sst_runtime_resume(dev); return 0; sst_set_fw_state_locked(ctx, SST_FW_LOADING); Loading Loading @@ -560,6 +545,5 @@ const struct dev_pm_ops intel_sst_pm = { .suspend = intel_sst_suspend, .resume = intel_sst_resume, .runtime_suspend = intel_sst_runtime_suspend, .runtime_resume = intel_sst_runtime_resume, }; EXPORT_SYMBOL_GPL(intel_sst_pm);
sound/soc/intel/sst/sst_drv_interface.c +23 −4 Original line number Diff line number Diff line Loading @@ -138,13 +138,32 @@ int sst_get_stream(struct intel_sst_drv *ctx, static int sst_power_control(struct device *dev, bool state) { struct intel_sst_drv *ctx = dev_get_drvdata(dev); int ret = 0; dev_dbg(ctx->dev, "state:%d", state); if (state == true) return pm_runtime_get_sync(dev); else if (state == true) { ret = pm_runtime_get_sync(dev); dev_dbg(ctx->dev, "Enable: pm usage count: %d\n", atomic_read(&dev->power.usage_count)); if (ret < 0) { dev_err(ctx->dev, "Runtime get failed with err: %d\n", ret); return ret; } if ((ctx->sst_state == SST_RESET) && (atomic_read(&dev->power.usage_count) == 1)) { ret = sst_load_fw(ctx); if (ret) { dev_err(dev, "FW download fail %d\n", ret); sst_set_fw_state_locked(ctx, SST_RESET); ret = sst_pm_runtime_put(ctx); } } } else { dev_dbg(ctx->dev, "Disable: pm usage count: %d\n", atomic_read(&dev->power.usage_count)); return sst_pm_runtime_put(ctx); } return ret; } /* * sst_open_pcm_stream - Open PCM interface Loading