ASoC: ac97: Support multi-platform AC'97
[sfrench/cifs-2.6.git] / sound / soc / fsl / mpc5200_psc_ac97.c
index 4141b35ef0bbd27947d3d4147e482b34d45f58a1..3ef7a0c92efa07eb4719aadfefacf5c050a008cd 100644 (file)
@@ -131,13 +131,12 @@ static void psc_ac97_cold_reset(struct snd_ac97 *ac97)
        psc_ac97_warm_reset(ac97);
 }
 
-struct snd_ac97_bus_ops soc_ac97_ops = {
+static struct snd_ac97_bus_ops psc_ac97_ops = {
        .read           = psc_ac97_read,
        .write          = psc_ac97_write,
        .reset          = psc_ac97_cold_reset,
        .warm_reset     = psc_ac97_warm_reset,
 };
-EXPORT_SYMBOL_GPL(soc_ac97_ops);
 
 static int psc_ac97_hw_analog_params(struct snd_pcm_substream *substream,
                                 struct snd_pcm_hw_params *params,
@@ -290,6 +289,12 @@ static int psc_ac97_of_probe(struct platform_device *op)
        if (rc != 0)
                return rc;
 
+       rc = snd_soc_set_ac97_ops(&psc_ac97_ops);
+       if (rc != 0) {
+               dev_err(&op->dev, "Failed to set AC'97 ops: %d\n", ret);
+               return rc;
+       }
+
        rc = snd_soc_register_component(&op->dev, &psc_ac97_component,
                                        psc_ac97_dai, ARRAY_SIZE(psc_ac97_dai));
        if (rc != 0) {
@@ -318,6 +323,7 @@ static int psc_ac97_of_remove(struct platform_device *op)
 {
        mpc5200_audio_dma_destroy(op);
        snd_soc_unregister_component(&op->dev);
+       snd_soc_set_ac97_ops(NULL);
        return 0;
 }