Merge branch 'topic/asoc' into for-linus
[safe/jmp/linux-2.6] / sound / soc / codecs / uda134x.c
index a8dcd5a..28aac53 100644 (file)
@@ -175,7 +175,7 @@ static int uda134x_startup(struct snd_pcm_substream *substream,
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
        struct snd_pcm_runtime *master_runtime;
 
        if (uda134x->master_substream) {
@@ -208,7 +208,7 @@ static void uda134x_shutdown(struct snd_pcm_substream *substream,
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        if (uda134x->master_substream == substream)
                uda134x->master_substream = uda134x->slave_substream;
@@ -223,7 +223,7 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream,
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_device *socdev = rtd->socdev;
        struct snd_soc_codec *codec = socdev->card->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
        u8 hw_params;
 
        if (substream == uda134x->slave_substream) {
@@ -295,7 +295,7 @@ static int uda134x_set_dai_sysclk(struct snd_soc_dai *codec_dai,
                                  int clk_id, unsigned int freq, int dir)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        pr_debug("%s clk_id: %d, freq: %u, dir: %d\n", __func__,
                 clk_id, freq, dir);
@@ -317,7 +317,7 @@ static int uda134x_set_dai_fmt(struct snd_soc_dai *codec_dai,
                               unsigned int fmt)
 {
        struct snd_soc_codec *codec = codec_dai->codec;
-       struct uda134x_priv *uda134x = codec->private_data;
+       struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
 
        pr_debug("%s fmt: %08X\n", __func__, fmt);
 
@@ -432,6 +432,14 @@ SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
 SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0),
 };
 
+static const struct snd_kcontrol_new uda1345_snd_controls[] = {
+SOC_SINGLE("Master Playback Volume", UDA134X_DATA000, 0, 0x3F, 1),
+
+SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
+
+SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0),
+};
+
 static struct snd_soc_dai_ops uda134x_dai_ops = {
        .startup        = uda134x_startup,
        .shutdown       = uda134x_shutdown,
@@ -487,6 +495,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
        case UDA134X_UDA1340:
        case UDA134X_UDA1341:
        case UDA134X_UDA1344:
+       case UDA134X_UDA1345:
                break;
        default:
                printk(KERN_ERR "UDA134X SoC codec: "
@@ -504,7 +513,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
        uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL);
        if (uda134x == NULL)
                goto priv_err;
-       codec->private_data = uda134x;
+       snd_soc_codec_set_drvdata(codec, uda134x);
 
        codec->reg_cache = kmemdup(uda134x_reg, sizeof(uda134x_reg),
                                   GFP_KERNEL);
@@ -552,6 +561,10 @@ static int uda134x_soc_probe(struct platform_device *pdev)
                ret = snd_soc_add_controls(codec, uda1341_snd_controls,
                                        ARRAY_SIZE(uda1341_snd_controls));
        break;
+       case UDA134X_UDA1345:
+               ret = snd_soc_add_controls(codec, uda1345_snd_controls,
+                                       ARRAY_SIZE(uda1345_snd_controls));
+       break;
        default:
                printk(KERN_ERR "%s unknown codec type: %d",
                        __func__, pd->model);
@@ -568,7 +581,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
 pcm_err:
        kfree(codec->reg_cache);
 reg_err:
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
 priv_err:
        kfree(codec);
        return ret;
@@ -586,7 +599,7 @@ static int uda134x_soc_remove(struct platform_device *pdev)
        snd_soc_free_pcms(socdev);
        snd_soc_dapm_free(socdev);
 
-       kfree(codec->private_data);
+       kfree(snd_soc_codec_get_drvdata(codec));
        kfree(codec->reg_cache);
        kfree(codec);