aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>2015-01-20 11:31:51 -0500
committerMark Brown <broonie@kernel.org>2015-01-27 12:28:50 -0500
commite1ae5fba3fae34537492758a21eef90a182620de (patch)
treeea499438f4913a829f25855c9efdcea8b2b59394 /sound/soc/codecs
parent054e1b4892271731453fbfa8658899050196e427 (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.c22
-rw-r--r--sound/soc/codecs/arizona.h2
-rw-r--r--sound/soc/codecs/wm5102.c10
-rw-r--r--sound/soc/codecs/wm5110.c12
-rw-r--r--sound/soc/codecs/wm8997.c6
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,
1273SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, 1273SND_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),
1277SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, 1277SND_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),
1281SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, 1281SND_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),
1285SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, 1285SND_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),
1289SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, 1289SND_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),
1293SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, 1293SND_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,
906SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, 906SND_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),
910SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, 910SND_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),
914SND_SOC_DAPM_PGA_E("OUT2L", ARIZONA_OUTPUT_ENABLES_1, 914SND_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),
918SND_SOC_DAPM_PGA_E("OUT2R", ARIZONA_OUTPUT_ENABLES_1, 918SND_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),
922SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, 922SND_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),
926SND_SOC_DAPM_PGA_E("OUT3R", ARIZONA_OUTPUT_ENABLES_1, 926SND_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),
930SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, 930SND_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,
611SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, 611SND_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),
615SND_SOC_DAPM_PGA_E("OUT1R", SND_SOC_NOPM, 615SND_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),
619SND_SOC_DAPM_PGA_E("OUT3L", ARIZONA_OUTPUT_ENABLES_1, 619SND_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),
623SND_SOC_DAPM_PGA_E("OUT5L", ARIZONA_OUTPUT_ENABLES_1, 623SND_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),