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