aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/uda134x.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/uda134x.c')
-rw-r--r--sound/soc/codecs/uda134x.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/sound/soc/codecs/uda134x.c b/sound/soc/codecs/uda134x.c
index a8dcd5a5bbcb..28aac53c97bb 100644
--- a/sound/soc/codecs/uda134x.c
+++ b/sound/soc/codecs/uda134x.c
@@ -175,7 +175,7 @@ static int uda134x_startup(struct snd_pcm_substream *substream,
175 struct snd_soc_pcm_runtime *rtd = substream->private_data; 175 struct snd_soc_pcm_runtime *rtd = substream->private_data;
176 struct snd_soc_device *socdev = rtd->socdev; 176 struct snd_soc_device *socdev = rtd->socdev;
177 struct snd_soc_codec *codec = socdev->card->codec; 177 struct snd_soc_codec *codec = socdev->card->codec;
178 struct uda134x_priv *uda134x = codec->private_data; 178 struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
179 struct snd_pcm_runtime *master_runtime; 179 struct snd_pcm_runtime *master_runtime;
180 180
181 if (uda134x->master_substream) { 181 if (uda134x->master_substream) {
@@ -208,7 +208,7 @@ static void uda134x_shutdown(struct snd_pcm_substream *substream,
208 struct snd_soc_pcm_runtime *rtd = substream->private_data; 208 struct snd_soc_pcm_runtime *rtd = substream->private_data;
209 struct snd_soc_device *socdev = rtd->socdev; 209 struct snd_soc_device *socdev = rtd->socdev;
210 struct snd_soc_codec *codec = socdev->card->codec; 210 struct snd_soc_codec *codec = socdev->card->codec;
211 struct uda134x_priv *uda134x = codec->private_data; 211 struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
212 212
213 if (uda134x->master_substream == substream) 213 if (uda134x->master_substream == substream)
214 uda134x->master_substream = uda134x->slave_substream; 214 uda134x->master_substream = uda134x->slave_substream;
@@ -223,7 +223,7 @@ static int uda134x_hw_params(struct snd_pcm_substream *substream,
223 struct snd_soc_pcm_runtime *rtd = substream->private_data; 223 struct snd_soc_pcm_runtime *rtd = substream->private_data;
224 struct snd_soc_device *socdev = rtd->socdev; 224 struct snd_soc_device *socdev = rtd->socdev;
225 struct snd_soc_codec *codec = socdev->card->codec; 225 struct snd_soc_codec *codec = socdev->card->codec;
226 struct uda134x_priv *uda134x = codec->private_data; 226 struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
227 u8 hw_params; 227 u8 hw_params;
228 228
229 if (substream == uda134x->slave_substream) { 229 if (substream == uda134x->slave_substream) {
@@ -295,7 +295,7 @@ static int uda134x_set_dai_sysclk(struct snd_soc_dai *codec_dai,
295 int clk_id, unsigned int freq, int dir) 295 int clk_id, unsigned int freq, int dir)
296{ 296{
297 struct snd_soc_codec *codec = codec_dai->codec; 297 struct snd_soc_codec *codec = codec_dai->codec;
298 struct uda134x_priv *uda134x = codec->private_data; 298 struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
299 299
300 pr_debug("%s clk_id: %d, freq: %u, dir: %d\n", __func__, 300 pr_debug("%s clk_id: %d, freq: %u, dir: %d\n", __func__,
301 clk_id, freq, dir); 301 clk_id, freq, dir);
@@ -317,7 +317,7 @@ static int uda134x_set_dai_fmt(struct snd_soc_dai *codec_dai,
317 unsigned int fmt) 317 unsigned int fmt)
318{ 318{
319 struct snd_soc_codec *codec = codec_dai->codec; 319 struct snd_soc_codec *codec = codec_dai->codec;
320 struct uda134x_priv *uda134x = codec->private_data; 320 struct uda134x_priv *uda134x = snd_soc_codec_get_drvdata(codec);
321 321
322 pr_debug("%s fmt: %08X\n", __func__, fmt); 322 pr_debug("%s fmt: %08X\n", __func__, fmt);
323 323
@@ -432,6 +432,14 @@ SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
432SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0), 432SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0),
433}; 433};
434 434
435static const struct snd_kcontrol_new uda1345_snd_controls[] = {
436SOC_SINGLE("Master Playback Volume", UDA134X_DATA000, 0, 0x3F, 1),
437
438SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
439
440SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0),
441};
442
435static struct snd_soc_dai_ops uda134x_dai_ops = { 443static struct snd_soc_dai_ops uda134x_dai_ops = {
436 .startup = uda134x_startup, 444 .startup = uda134x_startup,
437 .shutdown = uda134x_shutdown, 445 .shutdown = uda134x_shutdown,
@@ -487,6 +495,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
487 case UDA134X_UDA1340: 495 case UDA134X_UDA1340:
488 case UDA134X_UDA1341: 496 case UDA134X_UDA1341:
489 case UDA134X_UDA1344: 497 case UDA134X_UDA1344:
498 case UDA134X_UDA1345:
490 break; 499 break;
491 default: 500 default:
492 printk(KERN_ERR "UDA134X SoC codec: " 501 printk(KERN_ERR "UDA134X SoC codec: "
@@ -504,7 +513,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
504 uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL); 513 uda134x = kzalloc(sizeof(struct uda134x_priv), GFP_KERNEL);
505 if (uda134x == NULL) 514 if (uda134x == NULL)
506 goto priv_err; 515 goto priv_err;
507 codec->private_data = uda134x; 516 snd_soc_codec_set_drvdata(codec, uda134x);
508 517
509 codec->reg_cache = kmemdup(uda134x_reg, sizeof(uda134x_reg), 518 codec->reg_cache = kmemdup(uda134x_reg, sizeof(uda134x_reg),
510 GFP_KERNEL); 519 GFP_KERNEL);
@@ -552,6 +561,10 @@ static int uda134x_soc_probe(struct platform_device *pdev)
552 ret = snd_soc_add_controls(codec, uda1341_snd_controls, 561 ret = snd_soc_add_controls(codec, uda1341_snd_controls,
553 ARRAY_SIZE(uda1341_snd_controls)); 562 ARRAY_SIZE(uda1341_snd_controls));
554 break; 563 break;
564 case UDA134X_UDA1345:
565 ret = snd_soc_add_controls(codec, uda1345_snd_controls,
566 ARRAY_SIZE(uda1345_snd_controls));
567 break;
555 default: 568 default:
556 printk(KERN_ERR "%s unknown codec type: %d", 569 printk(KERN_ERR "%s unknown codec type: %d",
557 __func__, pd->model); 570 __func__, pd->model);
@@ -568,7 +581,7 @@ static int uda134x_soc_probe(struct platform_device *pdev)
568pcm_err: 581pcm_err:
569 kfree(codec->reg_cache); 582 kfree(codec->reg_cache);
570reg_err: 583reg_err:
571 kfree(codec->private_data); 584 kfree(snd_soc_codec_get_drvdata(codec));
572priv_err: 585priv_err:
573 kfree(codec); 586 kfree(codec);
574 return ret; 587 return ret;
@@ -586,7 +599,7 @@ static int uda134x_soc_remove(struct platform_device *pdev)
586 snd_soc_free_pcms(socdev); 599 snd_soc_free_pcms(socdev);
587 snd_soc_dapm_free(socdev); 600 snd_soc_dapm_free(socdev);
588 601
589 kfree(codec->private_data); 602 kfree(snd_soc_codec_get_drvdata(codec));
590 kfree(codec->reg_cache); 603 kfree(codec->reg_cache);
591 kfree(codec); 604 kfree(codec);
592 605