1
0
Fork 0

MLK-24263-8 ASoC: SOF: Add support for system / runtime PM on i.MX8

Similar with commit a4c2646bc92 ("MLK-24263-5 ASoC: SOF: Add support for system / runtime PM")
this adds the system/runtime PM handlers.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
5.4-rM2-2.2.x-imx-squashed
Daniel Baluta 2020-06-11 16:43:16 +03:00
parent f7b437ebaa
commit 89d64ed05d
1 changed files with 51 additions and 4 deletions

View File

@ -42,6 +42,7 @@
struct imx8_priv {
struct device *dev;
struct snd_sof_dev *sdev;
bool suspended;
/* DSP IPC handler */
struct imx_dsp_ipc *dsp_ipc;
@ -378,18 +379,64 @@ static int imx8_ipc_pcm_params(struct snd_sof_dev *sdev,
return 0;
}
int imx8_resume(struct snd_sof_dev *sdev)
{
struct imx8_priv *priv = (struct imx8_priv *)sdev->private;
int i;
for (i = 0; i < DSP_MU_CHAN_NUM; i++)
imx_dsp_request_channel(priv->dsp_ipc, i);
return 0;
}
int imx8_suspend(struct snd_sof_dev *sdev)
{
struct imx8_priv *priv = (struct imx8_priv *)sdev->private;
int i;
for (i = 0; i < DSP_MU_CHAN_NUM; i++)
imx_dsp_free_channel(priv->dsp_ipc, i);
return 0;
}
int imx8_dsp_runtime_resume(struct snd_sof_dev *sdev)
{
return imx8_resume(sdev);
}
int imx8_dsp_runtime_suspend(struct snd_sof_dev *sdev)
{
return imx8_suspend(sdev);
}
int imx8_dsp_resume(struct snd_sof_dev *sdev)
{
/* nothing to do for now */
struct imx8_priv *priv = (struct imx8_priv *)sdev->private;
if (priv->suspended) {
imx8_resume(sdev);
priv->suspended = false;
}
return 0;
}
int imx8_dsp_suspend(struct snd_sof_dev *sdev)
{
/* nothing to do for now */
struct imx8_priv *priv = (struct imx8_priv *)sdev->private;
if (!priv->suspended) {
imx8_suspend(sdev);
priv->suspended = true;
}
return 0;
}
static struct snd_soc_dai_driver imx8_dai[] = {
{
.name = "esai-port",
@ -430,8 +477,8 @@ struct snd_sof_dsp_ops sof_imx8_ops = {
/* PM */
.suspend = imx8_dsp_suspend,
.resume = imx8_dsp_resume,
.runtime_suspend = imx8_dsp_suspend,
.runtime_resume = imx8_dsp_resume,
.runtime_suspend = imx8_dsp_runtime_suspend,
.runtime_resume = imx8_dsp_runtime_resume,
/* ALSA HW info flags */
.hw_info = SNDRV_PCM_INFO_MMAP |