ASoC: Pass dai_link as argument to platform suspend and resume
authorjassi brar <jassisinghbrar@gmail.com>
Mon, 22 Feb 2010 06:58:04 +0000 (15:58 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Mon, 22 Feb 2010 14:14:58 +0000 (14:14 +0000)
Passing pointer to relevant dai_link provides easier reach to the
ASoC tree in suspend/resume of snd_soc_platform. It also provides
direct access to the dai at the other end of the dai_link.

Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
include/sound/soc.h
sound/soc/atmel/atmel-pcm.c
sound/soc/soc-core.c

index 5d234a8c2506c74df25d5fbc7f9220c0bdb106ad..27a2ad9a6b8b7d106c3360b5f23f31d1de2a841f 100644 (file)
@@ -212,6 +212,7 @@ struct snd_soc_dai_mode;
 struct snd_soc_pcm_runtime;
 struct snd_soc_dai;
 struct snd_soc_platform;
+struct snd_soc_dai_link;
 struct snd_soc_codec;
 struct soc_enum;
 struct snd_soc_ac97_ops;
@@ -461,8 +462,8 @@ struct snd_soc_platform {
 
        int (*probe)(struct platform_device *pdev);
        int (*remove)(struct platform_device *pdev);
-       int (*suspend)(struct snd_soc_dai *dai);
-       int (*resume)(struct snd_soc_dai *dai);
+       int (*suspend)(struct snd_soc_dai_link *dai_link);
+       int (*resume)(struct snd_soc_dai_link *dai_link);
 
        /* pcm creation and destruction */
        int (*pcm_new)(struct snd_card *, struct snd_soc_dai *,
index 9ef6b96373f598cbb2bf670953a6a85a96bf710c..67a32920af22e948b2aa601224001d3969174456 100644 (file)
@@ -415,8 +415,9 @@ static void atmel_pcm_free_dma_buffers(struct snd_pcm *pcm)
 }
 
 #ifdef CONFIG_PM
-static int atmel_pcm_suspend(struct snd_soc_dai *dai)
+static int atmel_pcm_suspend(struct snd_soc_dai_link *dai_link)
 {
+       struct snd_soc_dai *dai = dai_link->cpu_dai;
        struct snd_pcm_runtime *runtime = dai->runtime;
        struct atmel_runtime_data *prtd;
        struct atmel_pcm_dma_params *params;
@@ -439,8 +440,9 @@ static int atmel_pcm_suspend(struct snd_soc_dai *dai)
        return 0;
 }
 
-static int atmel_pcm_resume(struct snd_soc_dai *dai)
+static int atmel_pcm_resume(struct snd_soc_dai_link *dai_link)
 {
+       struct snd_soc_dai *dai = dai_link->cpu_dai;
        struct snd_pcm_runtime *runtime = dai->runtime;
        struct atmel_runtime_data *prtd;
        struct atmel_pcm_dma_params *params;
index e1c0336868e1af92b021f945b986a847a71b00e1..524a85a73acac44b0a185fa8f0a68b7a0b3fff20 100644 (file)
@@ -854,7 +854,7 @@ static int soc_suspend(struct device *dev)
                if (cpu_dai->suspend && !cpu_dai->ac97_control)
                        cpu_dai->suspend(cpu_dai);
                if (platform->suspend)
-                       platform->suspend(cpu_dai);
+                       platform->suspend(&card->dai_link[i]);
        }
 
        /* close any waiting streams and save state */
@@ -943,7 +943,7 @@ static void soc_resume_deferred(struct work_struct *work)
                if (cpu_dai->resume && !cpu_dai->ac97_control)
                        cpu_dai->resume(cpu_dai);
                if (platform->resume)
-                       platform->resume(cpu_dai);
+                       platform->resume(&card->dai_link[i]);
        }
 
        if (card->resume_post)