diff options
Diffstat (limited to 'sound/soc/codecs/wm8960.c')
-rw-r--r-- | sound/soc/codecs/wm8960.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c index ff6ff2f529d2..4393394b7bc1 100644 --- a/sound/soc/codecs/wm8960.c +++ b/sound/soc/codecs/wm8960.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <sound/pcm.h> | 20 | #include <sound/pcm.h> |
21 | #include <sound/pcm_params.h> | 21 | #include <sound/pcm_params.h> |
22 | #include <sound/soc.h> | 22 | #include <sound/soc.h> |
23 | #include <sound/soc-dapm.h> | ||
24 | #include <sound/initval.h> | 23 | #include <sound/initval.h> |
25 | #include <sound/tlv.h> | 24 | #include <sound/tlv.h> |
26 | #include <sound/wm8960.h> | 25 | #include <sound/wm8960.h> |
@@ -72,7 +71,6 @@ static const u16 wm8960_reg[WM8960_CACHEREGNUM] = { | |||
72 | }; | 71 | }; |
73 | 72 | ||
74 | struct wm8960_priv { | 73 | struct wm8960_priv { |
75 | u16 reg_cache[WM8960_CACHEREGNUM]; | ||
76 | enum snd_soc_control_type control_type; | 74 | enum snd_soc_control_type control_type; |
77 | void *control_data; | 75 | void *control_data; |
78 | int (*set_bias_level)(struct snd_soc_codec *, | 76 | int (*set_bias_level)(struct snd_soc_codec *, |
@@ -389,27 +387,28 @@ static int wm8960_add_widgets(struct snd_soc_codec *codec) | |||
389 | { | 387 | { |
390 | struct wm8960_data *pdata = codec->dev->platform_data; | 388 | struct wm8960_data *pdata = codec->dev->platform_data; |
391 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); | 389 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); |
390 | struct snd_soc_dapm_context *dapm = &codec->dapm; | ||
392 | struct snd_soc_dapm_widget *w; | 391 | struct snd_soc_dapm_widget *w; |
393 | 392 | ||
394 | snd_soc_dapm_new_controls(codec, wm8960_dapm_widgets, | 393 | snd_soc_dapm_new_controls(dapm, wm8960_dapm_widgets, |
395 | ARRAY_SIZE(wm8960_dapm_widgets)); | 394 | ARRAY_SIZE(wm8960_dapm_widgets)); |
396 | 395 | ||
397 | snd_soc_dapm_add_routes(codec, audio_paths, ARRAY_SIZE(audio_paths)); | 396 | snd_soc_dapm_add_routes(dapm, audio_paths, ARRAY_SIZE(audio_paths)); |
398 | 397 | ||
399 | /* In capless mode OUT3 is used to provide VMID for the | 398 | /* In capless mode OUT3 is used to provide VMID for the |
400 | * headphone outputs, otherwise it is used as a mono mixer. | 399 | * headphone outputs, otherwise it is used as a mono mixer. |
401 | */ | 400 | */ |
402 | if (pdata && pdata->capless) { | 401 | if (pdata && pdata->capless) { |
403 | snd_soc_dapm_new_controls(codec, wm8960_dapm_widgets_capless, | 402 | snd_soc_dapm_new_controls(dapm, wm8960_dapm_widgets_capless, |
404 | ARRAY_SIZE(wm8960_dapm_widgets_capless)); | 403 | ARRAY_SIZE(wm8960_dapm_widgets_capless)); |
405 | 404 | ||
406 | snd_soc_dapm_add_routes(codec, audio_paths_capless, | 405 | snd_soc_dapm_add_routes(dapm, audio_paths_capless, |
407 | ARRAY_SIZE(audio_paths_capless)); | 406 | ARRAY_SIZE(audio_paths_capless)); |
408 | } else { | 407 | } else { |
409 | snd_soc_dapm_new_controls(codec, wm8960_dapm_widgets_out3, | 408 | snd_soc_dapm_new_controls(dapm, wm8960_dapm_widgets_out3, |
410 | ARRAY_SIZE(wm8960_dapm_widgets_out3)); | 409 | ARRAY_SIZE(wm8960_dapm_widgets_out3)); |
411 | 410 | ||
412 | snd_soc_dapm_add_routes(codec, audio_paths_out3, | 411 | snd_soc_dapm_add_routes(dapm, audio_paths_out3, |
413 | ARRAY_SIZE(audio_paths_out3)); | 412 | ARRAY_SIZE(audio_paths_out3)); |
414 | } | 413 | } |
415 | 414 | ||
@@ -418,7 +417,9 @@ static int wm8960_add_widgets(struct snd_soc_codec *codec) | |||
418 | * list each time to find the desired power state do so now | 417 | * list each time to find the desired power state do so now |
419 | * and save the result. | 418 | * and save the result. |
420 | */ | 419 | */ |
421 | list_for_each_entry(w, &codec->dapm_widgets, list) { | 420 | list_for_each_entry(w, &codec->card->widgets, list) { |
421 | if (w->dapm != &codec->dapm) | ||
422 | continue; | ||
422 | if (strcmp(w->name, "LOUT1 PGA") == 0) | 423 | if (strcmp(w->name, "LOUT1 PGA") == 0) |
423 | wm8960->lout1 = w; | 424 | wm8960->lout1 = w; |
424 | if (strcmp(w->name, "ROUT1 PGA") == 0) | 425 | if (strcmp(w->name, "ROUT1 PGA") == 0) |
@@ -573,7 +574,7 @@ static int wm8960_set_bias_level_out3(struct snd_soc_codec *codec, | |||
573 | break; | 574 | break; |
574 | 575 | ||
575 | case SND_SOC_BIAS_STANDBY: | 576 | case SND_SOC_BIAS_STANDBY: |
576 | if (codec->bias_level == SND_SOC_BIAS_OFF) { | 577 | if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) { |
577 | /* Enable anti-pop features */ | 578 | /* Enable anti-pop features */ |
578 | snd_soc_write(codec, WM8960_APOP1, | 579 | snd_soc_write(codec, WM8960_APOP1, |
579 | WM8960_POBCTRL | WM8960_SOFT_ST | | 580 | WM8960_POBCTRL | WM8960_SOFT_ST | |
@@ -611,7 +612,7 @@ static int wm8960_set_bias_level_out3(struct snd_soc_codec *codec, | |||
611 | break; | 612 | break; |
612 | } | 613 | } |
613 | 614 | ||
614 | codec->bias_level = level; | 615 | codec->dapm.bias_level = level; |
615 | 616 | ||
616 | return 0; | 617 | return 0; |
617 | } | 618 | } |
@@ -627,7 +628,7 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec, | |||
627 | break; | 628 | break; |
628 | 629 | ||
629 | case SND_SOC_BIAS_PREPARE: | 630 | case SND_SOC_BIAS_PREPARE: |
630 | switch (codec->bias_level) { | 631 | switch (codec->dapm.bias_level) { |
631 | case SND_SOC_BIAS_STANDBY: | 632 | case SND_SOC_BIAS_STANDBY: |
632 | /* Enable anti pop mode */ | 633 | /* Enable anti pop mode */ |
633 | snd_soc_update_bits(codec, WM8960_APOP1, | 634 | snd_soc_update_bits(codec, WM8960_APOP1, |
@@ -682,7 +683,7 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec, | |||
682 | break; | 683 | break; |
683 | 684 | ||
684 | case SND_SOC_BIAS_STANDBY: | 685 | case SND_SOC_BIAS_STANDBY: |
685 | switch (codec->bias_level) { | 686 | switch (codec->dapm.bias_level) { |
686 | case SND_SOC_BIAS_PREPARE: | 687 | case SND_SOC_BIAS_PREPARE: |
687 | /* Disable HP discharge */ | 688 | /* Disable HP discharge */ |
688 | snd_soc_update_bits(codec, WM8960_APOP2, | 689 | snd_soc_update_bits(codec, WM8960_APOP2, |
@@ -706,7 +707,7 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec, | |||
706 | break; | 707 | break; |
707 | } | 708 | } |
708 | 709 | ||
709 | codec->bias_level = level; | 710 | codec->dapm.bias_level = level; |
710 | 711 | ||
711 | return 0; | 712 | return 0; |
712 | } | 713 | } |