diff options
author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2015-01-20 11:31:51 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-01-27 12:28:50 -0500 |
commit | e1ae5fba3fae34537492758a21eef90a182620de (patch) | |
tree | ea499438f4913a829f25855c9efdcea8b2b59394 /sound/soc/codecs | |
parent | 054e1b4892271731453fbfa8658899050196e427 (diff) |
ASoC: arizona: Coalesce output power up delays
Save a bit of scheduling by coalescing all the output power up delays
into a single delay.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs')
-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), |