diff options
Diffstat (limited to 'sound/soc/codecs/wm8971.c')
-rw-r--r-- | sound/soc/codecs/wm8971.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/sound/soc/codecs/wm8971.c b/sound/soc/codecs/wm8971.c index 63f6dbf5d070..84b2dcb18aea 100644 --- a/sound/soc/codecs/wm8971.c +++ b/sound/soc/codecs/wm8971.c | |||
@@ -333,10 +333,11 @@ static const struct snd_soc_dapm_route audio_map[] = { | |||
333 | 333 | ||
334 | static int wm8971_add_widgets(struct snd_soc_codec *codec) | 334 | static int wm8971_add_widgets(struct snd_soc_codec *codec) |
335 | { | 335 | { |
336 | snd_soc_dapm_new_controls(codec, wm8971_dapm_widgets, | 336 | struct snd_soc_dapm_context *dapm = &codec->dapm; |
337 | ARRAY_SIZE(wm8971_dapm_widgets)); | ||
338 | 337 | ||
339 | snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map)); | 338 | snd_soc_dapm_new_controls(dapm, wm8971_dapm_widgets, |
339 | ARRAY_SIZE(wm8971_dapm_widgets)); | ||
340 | snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map)); | ||
340 | 341 | ||
341 | return 0; | 342 | return 0; |
342 | } | 343 | } |
@@ -553,7 +554,7 @@ static int wm8971_set_bias_level(struct snd_soc_codec *codec, | |||
553 | snd_soc_write(codec, WM8971_PWR1, 0x0001); | 554 | snd_soc_write(codec, WM8971_PWR1, 0x0001); |
554 | break; | 555 | break; |
555 | } | 556 | } |
556 | codec->bias_level = level; | 557 | codec->dapm.bias_level = level; |
557 | return 0; | 558 | return 0; |
558 | } | 559 | } |
559 | 560 | ||
@@ -590,9 +591,11 @@ static struct snd_soc_dai_driver wm8971_dai = { | |||
590 | 591 | ||
591 | static void wm8971_work(struct work_struct *work) | 592 | static void wm8971_work(struct work_struct *work) |
592 | { | 593 | { |
593 | struct snd_soc_codec *codec = | 594 | struct snd_soc_dapm_context *dapm = |
594 | container_of(work, struct snd_soc_codec, delayed_work.work); | 595 | container_of(work, struct snd_soc_dapm_context, |
595 | wm8971_set_bias_level(codec, codec->bias_level); | 596 | delayed_work.work); |
597 | struct snd_soc_codec *codec = dapm->codec; | ||
598 | wm8971_set_bias_level(codec, codec->dapm.bias_level); | ||
596 | } | 599 | } |
597 | 600 | ||
598 | static int wm8971_suspend(struct snd_soc_codec *codec, pm_message_t state) | 601 | static int wm8971_suspend(struct snd_soc_codec *codec, pm_message_t state) |
@@ -620,11 +623,11 @@ static int wm8971_resume(struct snd_soc_codec *codec) | |||
620 | wm8971_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 623 | wm8971_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
621 | 624 | ||
622 | /* charge wm8971 caps */ | 625 | /* charge wm8971 caps */ |
623 | if (codec->suspend_bias_level == SND_SOC_BIAS_ON) { | 626 | if (codec->dapm.suspend_bias_level == SND_SOC_BIAS_ON) { |
624 | reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e; | 627 | reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e; |
625 | snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0); | 628 | snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0); |
626 | codec->bias_level = SND_SOC_BIAS_ON; | 629 | codec->dapm.bias_level = SND_SOC_BIAS_ON; |
627 | queue_delayed_work(wm8971_workq, &codec->delayed_work, | 630 | queue_delayed_work(wm8971_workq, &codec->dapm.delayed_work, |
628 | msecs_to_jiffies(1000)); | 631 | msecs_to_jiffies(1000)); |
629 | } | 632 | } |
630 | 633 | ||
@@ -643,7 +646,7 @@ static int wm8971_probe(struct snd_soc_codec *codec) | |||
643 | return ret; | 646 | return ret; |
644 | } | 647 | } |
645 | 648 | ||
646 | INIT_DELAYED_WORK(&codec->delayed_work, wm8971_work); | 649 | INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8971_work); |
647 | wm8971_workq = create_workqueue("wm8971"); | 650 | wm8971_workq = create_workqueue("wm8971"); |
648 | if (wm8971_workq == NULL) | 651 | if (wm8971_workq == NULL) |
649 | return -ENOMEM; | 652 | return -ENOMEM; |
@@ -653,8 +656,8 @@ static int wm8971_probe(struct snd_soc_codec *codec) | |||
653 | /* charge output caps - set vmid to 5k for quick power up */ | 656 | /* charge output caps - set vmid to 5k for quick power up */ |
654 | reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e; | 657 | reg = snd_soc_read(codec, WM8971_PWR1) & 0xfe3e; |
655 | snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0); | 658 | snd_soc_write(codec, WM8971_PWR1, reg | 0x01c0); |
656 | codec->bias_level = SND_SOC_BIAS_STANDBY; | 659 | codec->dapm.bias_level = SND_SOC_BIAS_STANDBY; |
657 | queue_delayed_work(wm8971_workq, &codec->delayed_work, | 660 | queue_delayed_work(wm8971_workq, &codec->dapm.delayed_work, |
658 | msecs_to_jiffies(1000)); | 661 | msecs_to_jiffies(1000)); |
659 | 662 | ||
660 | /* set the update bits */ | 663 | /* set the update bits */ |