|
@@ -1082,7 +1082,8 @@ static int had_pcm_open(struct snd_pcm_substream *substream)
|
|
|
|
|
|
return retval;
|
|
|
error:
|
|
|
- pm_runtime_put(intelhaddata->dev);
|
|
|
+ pm_runtime_mark_last_busy(intelhaddata->dev);
|
|
|
+ pm_runtime_put_autosuspend(intelhaddata->dev);
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
@@ -1106,7 +1107,8 @@ static int had_pcm_close(struct snd_pcm_substream *substream)
|
|
|
}
|
|
|
spin_unlock_irq(&intelhaddata->had_spinlock);
|
|
|
|
|
|
- pm_runtime_put(intelhaddata->dev);
|
|
|
+ pm_runtime_mark_last_busy(intelhaddata->dev);
|
|
|
+ pm_runtime_put_autosuspend(intelhaddata->dev);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -1596,7 +1598,8 @@ static void had_audio_wq(struct work_struct *work)
|
|
|
had_process_mode_change(ctx);
|
|
|
}
|
|
|
mutex_unlock(&ctx->mutex);
|
|
|
- pm_runtime_put(ctx->dev);
|
|
|
+ pm_runtime_mark_last_busy(ctx->dev);
|
|
|
+ pm_runtime_put_autosuspend(ctx->dev);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1643,10 +1646,17 @@ static int __maybe_unused hdmi_lpe_audio_suspend(struct device *dev)
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
+static int hdmi_lpe_audio_runtime_resume(struct device *dev)
|
|
|
+{
|
|
|
+ pm_runtime_mark_last_busy(dev);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int __maybe_unused hdmi_lpe_audio_resume(struct device *dev)
|
|
|
{
|
|
|
struct snd_intelhad *ctx = dev_get_drvdata(dev);
|
|
|
|
|
|
+ hdmi_lpe_audio_runtime_resume(dev);
|
|
|
snd_power_change_state(ctx->card, SNDRV_CTL_POWER_D0);
|
|
|
return 0;
|
|
|
}
|
|
@@ -1799,6 +1809,9 @@ static int hdmi_lpe_audio_probe(struct platform_device *pdev)
|
|
|
pdata->notify_pending = false;
|
|
|
spin_unlock_irq(&pdata->lpe_audio_slock);
|
|
|
|
|
|
+ pm_runtime_use_autosuspend(&pdev->dev);
|
|
|
+ pm_runtime_mark_last_busy(&pdev->dev);
|
|
|
+
|
|
|
pm_runtime_set_active(&pdev->dev);
|
|
|
pm_runtime_enable(&pdev->dev);
|
|
|
|
|
@@ -1827,7 +1840,8 @@ static int hdmi_lpe_audio_remove(struct platform_device *pdev)
|
|
|
|
|
|
static const struct dev_pm_ops hdmi_lpe_audio_pm = {
|
|
|
SET_SYSTEM_SLEEP_PM_OPS(hdmi_lpe_audio_suspend, hdmi_lpe_audio_resume)
|
|
|
- SET_RUNTIME_PM_OPS(hdmi_lpe_audio_runtime_suspend, NULL, NULL)
|
|
|
+ SET_RUNTIME_PM_OPS(hdmi_lpe_audio_runtime_suspend,
|
|
|
+ hdmi_lpe_audio_runtime_resume, NULL)
|
|
|
};
|
|
|
|
|
|
static struct platform_driver hdmi_lpe_audio_driver = {
|