ASoC: Use card rather than soc-audio device to card PM functions
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 26 Jan 2011 14:05:25 +0000 (14:05 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 27 Jan 2011 11:55:53 +0000 (11:55 +0000)
The platform device for the card is tied closely to the soc-audio
implementation which we're currently trying to remove in favour of
allowing cards to have their own devices. Begin removing it by
replacing it with the card in the suspend and resume callbacks we
give to cards, also taking the opportunity to remove the legacy
suspend types which are currently hard coded anyway.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
include/sound/soc.h
sound/soc/pxa/raumfeld.c
sound/soc/pxa/zylonite.c
sound/soc/soc-core.c

index 1355ef029d828c9f9a1d5dc3c8a65fbde398d927..4a489ae44a6e96833cc5f84e4c297fc2c484f579 100644 (file)
@@ -654,10 +654,10 @@ struct snd_soc_card {
 
        /* the pre and post PM functions are used to do any PM work before and
         * after the codec and DAI's do any PM work. */
-       int (*suspend_pre)(struct platform_device *pdev, pm_message_t state);
-       int (*suspend_post)(struct platform_device *pdev, pm_message_t state);
-       int (*resume_pre)(struct platform_device *pdev);
-       int (*resume_post)(struct platform_device *pdev);
+       int (*suspend_pre)(struct snd_soc_card *card);
+       int (*suspend_post)(struct snd_soc_card *card);
+       int (*resume_pre)(struct snd_soc_card *card);
+       int (*resume_post)(struct snd_soc_card *card);
 
        /* callbacks */
        int (*set_bias_level)(struct snd_soc_card *,
index 0fd60f423036af3cba4518d74a494d45cf61cadc..db1dd560a5850fd0a276de4f246096b9982c5415 100644 (file)
@@ -151,13 +151,13 @@ static struct snd_soc_ops raumfeld_cs4270_ops = {
        .hw_params = raumfeld_cs4270_hw_params,
 };
 
-static int raumfeld_line_suspend(struct platform_device *pdev, pm_message_t state)
+static int raumfeld_line_suspend(struct snd_soc_card *card)
 {
        raumfeld_enable_audio(false);
        return 0;
 }
 
-static int raumfeld_line_resume(struct platform_device *pdev)
+static int raumfeld_line_resume(struct snd_soc_card *card)
 {
        raumfeld_enable_audio(true);
        return 0;
index b222a7d7202719341ecd295ee2ca595ee7d1323b..7b729013a728c3a49ddc7c82d2796c221aca32d2 100644 (file)
@@ -226,8 +226,7 @@ static int zylonite_remove(struct platform_device *pdev)
        return 0;
 }
 
-static int zylonite_suspend_post(struct platform_device *pdev,
-                                pm_message_t state)
+static int zylonite_suspend_post(struct snd_soc_card *card)
 {
        if (clk_pout)
                clk_disable(pout);
@@ -235,7 +234,7 @@ static int zylonite_suspend_post(struct platform_device *pdev,
        return 0;
 }
 
-static int zylonite_resume_pre(struct platform_device *pdev)
+static int zylonite_resume_pre(struct snd_soc_card *card)
 {
        int ret = 0;
 
index 14861f95f6296f52b01e4a7d90cd4e8fed896774..446838e7d3ec351d8e7d0d308b544a9b7ebd22a6 100644 (file)
@@ -1011,7 +1011,7 @@ static int soc_suspend(struct device *dev)
        }
 
        if (card->suspend_pre)
-               card->suspend_pre(pdev, PMSG_SUSPEND);
+               card->suspend_pre(card);
 
        for (i = 0; i < card->num_rtd; i++) {
                struct snd_soc_dai *cpu_dai = card->rtd[i].cpu_dai;
@@ -1078,7 +1078,7 @@ static int soc_suspend(struct device *dev)
        }
 
        if (card->suspend_post)
-               card->suspend_post(pdev, PMSG_SUSPEND);
+               card->suspend_post(card);
 
        return 0;
 }
@@ -1090,7 +1090,6 @@ static void soc_resume_deferred(struct work_struct *work)
 {
        struct snd_soc_card *card =
                        container_of(work, struct snd_soc_card, deferred_resume_work);
-       struct platform_device *pdev = to_platform_device(card->dev);
        struct snd_soc_codec *codec;
        int i;
 
@@ -1104,7 +1103,7 @@ static void soc_resume_deferred(struct work_struct *work)
        snd_power_change_state(card->snd_card, SNDRV_CTL_POWER_D2);
 
        if (card->resume_pre)
-               card->resume_pre(pdev);
+               card->resume_pre(card);
 
        /* resume AC97 DAIs */
        for (i = 0; i < card->num_rtd; i++) {
@@ -1179,7 +1178,7 @@ static void soc_resume_deferred(struct work_struct *work)
        }
 
        if (card->resume_post)
-               card->resume_post(pdev);
+               card->resume_post(card);
 
        dev_dbg(card->dev, "resume work completed\n");