ASoC: arizona/madera: use fsleep() in up/down DAPM event delays.
Using `fsleep` instead of `msleep` resolves some customer complaints regarding the precision of up/down DAPM event timing. `fsleep()` automatically selects the appropriate sleep function, making the delay time more predictable. Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://patch.msgid.link/20250205160849.500306-1-vitalyr@opensource.cirrus.com Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
dabbd325b2
commit
679074942c
3 changed files with 16 additions and 16 deletions
|
@ -967,7 +967,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case ARIZONA_OUT3L_ENA_SHIFT:
|
||||
case ARIZONA_OUT3R_ENA_SHIFT:
|
||||
priv->out_up_pending++;
|
||||
priv->out_up_delay += 17;
|
||||
priv->out_up_delay += 17000;
|
||||
break;
|
||||
case ARIZONA_OUT4L_ENA_SHIFT:
|
||||
case ARIZONA_OUT4R_ENA_SHIFT:
|
||||
|
@ -977,7 +977,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case WM8997:
|
||||
break;
|
||||
default:
|
||||
priv->out_up_delay += 10;
|
||||
priv->out_up_delay += 10000;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -999,7 +999,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
if (!priv->out_up_pending && priv->out_up_delay) {
|
||||
dev_dbg(component->dev, "Power up delay: %d\n",
|
||||
priv->out_up_delay);
|
||||
msleep(priv->out_up_delay);
|
||||
fsleep(priv->out_up_delay);
|
||||
priv->out_up_delay = 0;
|
||||
}
|
||||
break;
|
||||
|
@ -1017,7 +1017,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case ARIZONA_OUT3L_ENA_SHIFT:
|
||||
case ARIZONA_OUT3R_ENA_SHIFT:
|
||||
priv->out_down_pending++;
|
||||
priv->out_down_delay++;
|
||||
priv->out_down_delay += 1000;
|
||||
break;
|
||||
case ARIZONA_OUT4L_ENA_SHIFT:
|
||||
case ARIZONA_OUT4R_ENA_SHIFT:
|
||||
|
@ -1028,10 +1028,10 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
break;
|
||||
case WM8998:
|
||||
case WM1814:
|
||||
priv->out_down_delay += 5;
|
||||
priv->out_down_delay += 5000;
|
||||
break;
|
||||
default:
|
||||
priv->out_down_delay++;
|
||||
priv->out_down_delay += 1000;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -1053,7 +1053,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|||
if (!priv->out_down_pending && priv->out_down_delay) {
|
||||
dev_dbg(component->dev, "Power down delay: %d\n",
|
||||
priv->out_down_delay);
|
||||
msleep(priv->out_down_delay);
|
||||
fsleep(priv->out_down_delay);
|
||||
priv->out_down_delay = 0;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -2323,10 +2323,10 @@ int madera_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case CS42L92:
|
||||
case CS47L92:
|
||||
case CS47L93:
|
||||
out_up_delay = 6;
|
||||
out_up_delay = 6000;
|
||||
break;
|
||||
default:
|
||||
out_up_delay = 17;
|
||||
out_up_delay = 17000;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2357,7 +2357,7 @@ int madera_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case MADERA_OUT3R_ENA_SHIFT:
|
||||
priv->out_up_pending--;
|
||||
if (!priv->out_up_pending) {
|
||||
msleep(priv->out_up_delay);
|
||||
fsleep(priv->out_up_delay);
|
||||
priv->out_up_delay = 0;
|
||||
}
|
||||
break;
|
||||
|
@ -2376,7 +2376,7 @@ int madera_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case MADERA_OUT3L_ENA_SHIFT:
|
||||
case MADERA_OUT3R_ENA_SHIFT:
|
||||
priv->out_down_pending++;
|
||||
priv->out_down_delay++;
|
||||
priv->out_down_delay += 1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -2393,7 +2393,7 @@ int madera_out_ev(struct snd_soc_dapm_widget *w,
|
|||
case MADERA_OUT3R_ENA_SHIFT:
|
||||
priv->out_down_pending--;
|
||||
if (!priv->out_down_pending) {
|
||||
msleep(priv->out_down_delay);
|
||||
fsleep(priv->out_down_delay);
|
||||
priv->out_down_delay = 0;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -302,7 +302,7 @@ static int wm5110_hp_pre_enable(struct snd_soc_dapm_widget *w)
|
|||
} else {
|
||||
wseq = wm5110_no_dre_left_enable;
|
||||
nregs = ARRAY_SIZE(wm5110_no_dre_left_enable);
|
||||
priv->out_up_delay += 10;
|
||||
priv->out_up_delay += 10000;
|
||||
}
|
||||
break;
|
||||
case ARIZONA_OUT1R_ENA_SHIFT:
|
||||
|
@ -312,7 +312,7 @@ static int wm5110_hp_pre_enable(struct snd_soc_dapm_widget *w)
|
|||
} else {
|
||||
wseq = wm5110_no_dre_right_enable;
|
||||
nregs = ARRAY_SIZE(wm5110_no_dre_right_enable);
|
||||
priv->out_up_delay += 10;
|
||||
priv->out_up_delay += 10000;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -338,7 +338,7 @@ static int wm5110_hp_pre_disable(struct snd_soc_dapm_widget *w)
|
|||
snd_soc_component_update_bits(component,
|
||||
ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG1, 0);
|
||||
priv->out_down_delay += 27;
|
||||
priv->out_down_delay += 27000;
|
||||
}
|
||||
break;
|
||||
case ARIZONA_OUT1R_ENA_SHIFT:
|
||||
|
@ -350,7 +350,7 @@ static int wm5110_hp_pre_disable(struct snd_soc_dapm_widget *w)
|
|||
snd_soc_component_update_bits(component,
|
||||
ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG2, 0);
|
||||
priv->out_down_delay += 27;
|
||||
priv->out_down_delay += 27000;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Add table
Reference in a new issue