diff options
| -rw-r--r-- | sound/soc/codecs/arizona.c | 22 | ||||
| -rw-r--r-- | sound/soc/codecs/arizona.h | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm5102.c | 10 | ||||
| -rw-r--r-- | sound/soc/codecs/wm5110.c | 12 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8997.c | 6 |
5 files changed, 37 insertions, 15 deletions
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index 9e203eff6860..32bc609f23e4 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c | |||
| @@ -737,6 +737,21 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w, | |||
| 737 | struct arizona_priv *priv = snd_soc_codec_get_drvdata(w->codec); | 737 | struct arizona_priv *priv = snd_soc_codec_get_drvdata(w->codec); |
| 738 | 738 | ||
| 739 | switch (event) { | 739 | switch (event) { |
| 740 | case SND_SOC_DAPM_PRE_PMU: | ||
| 741 | switch (w->shift) { | ||
| 742 | case ARIZONA_OUT1L_ENA_SHIFT: | ||
| 743 | case ARIZONA_OUT1R_ENA_SHIFT: | ||
| 744 | case ARIZONA_OUT2L_ENA_SHIFT: | ||
| 745 | case ARIZONA_OUT2R_ENA_SHIFT: | ||
| 746 | case ARIZONA_OUT3L_ENA_SHIFT: | ||
| 747 | case ARIZONA_OUT3R_ENA_SHIFT: | ||
| 748 | priv->out_up_pending++; | ||
| 749 | priv->out_up_delay += 17; | ||
| 750 | break; | ||
| 751 | default: | ||
| 752 | break; | ||
| 753 | } | ||
| 754 | break; | ||
| 740 | case SND_SOC_DAPM_POST_PMU: | 755 | case SND_SOC_DAPM_POST_PMU: |
| 741 | switch (w->shift) { | 756 | switch (w->shift) { |
| 742 | case ARIZONA_OUT1L_ENA_SHIFT: | 757 | case ARIZONA_OUT1L_ENA_SHIFT: |
| @@ -745,7 +760,11 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w, | |||
| 745 | case ARIZONA_OUT2R_ENA_SHIFT: | 760 | case ARIZONA_OUT2R_ENA_SHIFT: |
| 746 | case ARIZONA_OUT3L_ENA_SHIFT: | 761 | case ARIZONA_OUT3L_ENA_SHIFT: |
| 747 | case ARIZONA_OUT3R_ENA_SHIFT: | 762 | case ARIZONA_OUT3R_ENA_SHIFT: |
| 748 | msleep(17); | 763 | priv->out_up_pending--; |
| 764 | if (!priv->out_up_pending) { | ||
| 765 | msleep(priv->out_up_delay); | ||
| 766 | priv->out_up_delay = 0; | ||
| 767 | } | ||
| 749 | break; | 768 | break; |
| 750 | 769 | ||
| 751 | default: | 770 | default: |
| @@ -807,6 +826,7 @@ int arizona_hp_ev(struct snd_soc_dapm_widget *w, | |||
| 807 | case SND_SOC_DAPM_PRE_PMD: | 826 | case SND_SOC_DAPM_PRE_PMD: |
| 808 | val = 0; | 827 | val = 0; |
| 809 | break; | 828 | break; |
| 829 | case SND_SOC_DAPM_PRE_PMU: | ||
| 810 | case SND_SOC_DAPM_POST_PMD: | 830 | case SND_SOC_DAPM_POST_PMD: |
| 811 | return arizona_out_ev(w, kcontrol, event); | 831 | return arizona_out_ev(w, kcontrol, event); |
| 812 | default: | 832 | default: |
diff --git a/sound/soc/codecs/arizona.h b/sound/soc/codecs/arizona.h index 59b0f50b80b4..11ff899b0272 100644 --- a/sound/soc/codecs/arizona.h +++ b/sound/soc/codecs/arizona.h | |||
| @@ -77,6 +77,8 @@ struct arizona_priv { | |||
| 77 | int num_inputs; | 77 | int num_inputs; |
| 78 | unsigned int in_pending; | 78 | unsigned int in_pending; |
| 79 | 79 | ||
| 80 | unsigned int out_up_pending; | ||
| 81 | unsigned int out_up_delay; | ||
| 80 | unsigned int out_down_pending; | 82 | unsigned int out_down_pending; |
| 81 | unsigned int out_down_delay; | 83 | unsigned int out_down_delay; |
| 82 | 84 | ||
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index 5e0f72cb3181..154d67d7f249 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c | |||
| @@ -1273,23 +1273,23 @@ SND_SOC_DAPM_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, | |||
| 1273 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, | 1273 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, |
| 1274 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 1274 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 1275 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 1275 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 1276 | SND_SOC_DAPM_POST_PMU), | 1276 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 1277 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, | 1277 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, |
| 1278 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 1278 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 1279 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 1279 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 1280 | SND_SOC_DAPM_POST_PMU), | 1280 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 1281 | SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, | 1281 | SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, |
| 1282 | ARIZONA_OUT2L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 1282 | ARIZONA_OUT2L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 1283 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 1283 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 1284 | SND_SOC_DAPM_POST_PMU), | 1284 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 1285 | SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, | 1285 | SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, |
| 1286 | ARIZONA_OUT2R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 1286 | ARIZONA_OUT2R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 1287 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 1287 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 1288 | SND_SOC_DAPM_POST_PMU), | 1288 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 1289 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, | 1289 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, |
| 1290 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 1290 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 1291 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 1291 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 1292 | SND_SOC_DAPM_POST_PMU), | 1292 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 1293 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, | 1293 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, |
| 1294 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 1294 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 1295 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), | 1295 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index 009a9ba95bdf..33eefec54be4 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
| @@ -906,27 +906,27 @@ SND_SOC_DAPM_AIF_IN("AIF3RX2", NULL, 0, | |||
| 906 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, | 906 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, |
| 907 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 907 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 908 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 908 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 909 | SND_SOC_DAPM_POST_PMU), | 909 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 910 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, | 910 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, |
| 911 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 911 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 912 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 912 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 913 | SND_SOC_DAPM_POST_PMU), | 913 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 914 | SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, | 914 | SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, |
| 915 | ARIZONA_OUT2L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 915 | ARIZONA_OUT2L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 916 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 916 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 917 | SND_SOC_DAPM_POST_PMU), | 917 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 918 | SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, | 918 | SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, |
| 919 | ARIZONA_OUT2R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 919 | ARIZONA_OUT2R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 920 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 920 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 921 | SND_SOC_DAPM_POST_PMU), | 921 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 922 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, | 922 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, |
| 923 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 923 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 924 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 924 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 925 | SND_SOC_DAPM_POST_PMU), | 925 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 926 | SND_SOC_DAPM_PGA_E("OUT3R", ARIZONA_OUTPUT_ENABLES_1, | 926 | SND_SOC_DAPM_PGA_E("OUT3R", ARIZONA_OUTPUT_ENABLES_1, |
| 927 | ARIZONA_OUT3R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 927 | ARIZONA_OUT3R_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 928 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 928 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 929 | SND_SOC_DAPM_POST_PMU), | 929 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 930 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, | 930 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, |
| 931 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 931 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 932 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), | 932 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), |
diff --git a/sound/soc/codecs/wm8997.c b/sound/soc/codecs/wm8997.c index a1d4ac717d08..911132943b50 100644 --- a/sound/soc/codecs/wm8997.c +++ b/sound/soc/codecs/wm8997.c | |||
| @@ -611,15 +611,15 @@ SND_SOC_DAPM_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, | |||
| 611 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, | 611 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, |
| 612 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 612 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 613 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 613 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 614 | SND_SOC_DAPM_POST_PMU), | 614 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 615 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, | 615 | SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, |
| 616 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 616 | ARIZONA_OUT1R_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
| 617 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 617 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 618 | SND_SOC_DAPM_POST_PMU), | 618 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 619 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, | 619 | SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, |
| 620 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 620 | ARIZONA_OUT3L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 621 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | | 621 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD | |
| 622 | SND_SOC_DAPM_POST_PMU), | 622 | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU), |
| 623 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, | 623 | SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, |
| 624 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, | 624 | ARIZONA_OUT5L_ENA_SHIFT, 0, NULL, 0, arizona_out_ev, |
| 625 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), | 625 | SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU), |
