diff options
Diffstat (limited to 'sound/soc/codecs/wm9712.c')
-rw-r--r-- | sound/soc/codecs/wm9712.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c index 4dc90d67530e..b3a8be77676e 100644 --- a/sound/soc/codecs/wm9712.c +++ b/sound/soc/codecs/wm9712.c | |||
@@ -478,7 +478,7 @@ static int ac97_prepare(struct snd_pcm_substream *substream, | |||
478 | struct snd_pcm_runtime *runtime = substream->runtime; | 478 | struct snd_pcm_runtime *runtime = substream->runtime; |
479 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 479 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
480 | struct snd_soc_device *socdev = rtd->socdev; | 480 | struct snd_soc_device *socdev = rtd->socdev; |
481 | struct snd_soc_codec *codec = socdev->codec; | 481 | struct snd_soc_codec *codec = socdev->card->codec; |
482 | int reg; | 482 | int reg; |
483 | u16 vra; | 483 | u16 vra; |
484 | 484 | ||
@@ -499,7 +499,7 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream, | |||
499 | struct snd_pcm_runtime *runtime = substream->runtime; | 499 | struct snd_pcm_runtime *runtime = substream->runtime; |
500 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | 500 | struct snd_soc_pcm_runtime *rtd = substream->private_data; |
501 | struct snd_soc_device *socdev = rtd->socdev; | 501 | struct snd_soc_device *socdev = rtd->socdev; |
502 | struct snd_soc_codec *codec = socdev->codec; | 502 | struct snd_soc_codec *codec = socdev->card->codec; |
503 | u16 vra, xsle; | 503 | u16 vra, xsle; |
504 | 504 | ||
505 | vra = ac97_read(codec, AC97_EXTENDED_STATUS); | 505 | vra = ac97_read(codec, AC97_EXTENDED_STATUS); |
@@ -592,7 +592,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev, | |||
592 | pm_message_t state) | 592 | pm_message_t state) |
593 | { | 593 | { |
594 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 594 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
595 | struct snd_soc_codec *codec = socdev->codec; | 595 | struct snd_soc_codec *codec = socdev->card->codec; |
596 | 596 | ||
597 | wm9712_set_bias_level(codec, SND_SOC_BIAS_OFF); | 597 | wm9712_set_bias_level(codec, SND_SOC_BIAS_OFF); |
598 | return 0; | 598 | return 0; |
@@ -601,7 +601,7 @@ static int wm9712_soc_suspend(struct platform_device *pdev, | |||
601 | static int wm9712_soc_resume(struct platform_device *pdev) | 601 | static int wm9712_soc_resume(struct platform_device *pdev) |
602 | { | 602 | { |
603 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 603 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
604 | struct snd_soc_codec *codec = socdev->codec; | 604 | struct snd_soc_codec *codec = socdev->card->codec; |
605 | int i, ret; | 605 | int i, ret; |
606 | u16 *cache = codec->reg_cache; | 606 | u16 *cache = codec->reg_cache; |
607 | 607 | ||
@@ -637,10 +637,11 @@ static int wm9712_soc_probe(struct platform_device *pdev) | |||
637 | 637 | ||
638 | printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION); | 638 | printk(KERN_INFO "WM9711/WM9712 SoC Audio Codec %s\n", WM9712_VERSION); |
639 | 639 | ||
640 | socdev->codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); | 640 | socdev->card->codec = kzalloc(sizeof(struct snd_soc_codec), |
641 | if (socdev->codec == NULL) | 641 | GFP_KERNEL); |
642 | if (socdev->card->codec == NULL) | ||
642 | return -ENOMEM; | 643 | return -ENOMEM; |
643 | codec = socdev->codec; | 644 | codec = socdev->card->codec; |
644 | mutex_init(&codec->mutex); | 645 | mutex_init(&codec->mutex); |
645 | 646 | ||
646 | codec->reg_cache = kmemdup(wm9712_reg, sizeof(wm9712_reg), GFP_KERNEL); | 647 | codec->reg_cache = kmemdup(wm9712_reg, sizeof(wm9712_reg), GFP_KERNEL); |
@@ -704,15 +705,15 @@ codec_err: | |||
704 | kfree(codec->reg_cache); | 705 | kfree(codec->reg_cache); |
705 | 706 | ||
706 | cache_err: | 707 | cache_err: |
707 | kfree(socdev->codec); | 708 | kfree(socdev->card->codec); |
708 | socdev->codec = NULL; | 709 | socdev->card->codec = NULL; |
709 | return ret; | 710 | return ret; |
710 | } | 711 | } |
711 | 712 | ||
712 | static int wm9712_soc_remove(struct platform_device *pdev) | 713 | static int wm9712_soc_remove(struct platform_device *pdev) |
713 | { | 714 | { |
714 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 715 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
715 | struct snd_soc_codec *codec = socdev->codec; | 716 | struct snd_soc_codec *codec = socdev->card->codec; |
716 | 717 | ||
717 | if (codec == NULL) | 718 | if (codec == NULL) |
718 | return 0; | 719 | return 0; |