]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: arizona/madera: use fsleep() in up/down DAPM event delays.
authorVitaly Rodionov <vitalyr@opensource.cirrus.com>
Wed, 5 Feb 2025 16:08:46 +0000 (16:08 +0000)
committerMark Brown <broonie@kernel.org>
Thu, 6 Feb 2025 11:33:46 +0000 (11:33 +0000)
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>
sound/soc/codecs/arizona.c
sound/soc/codecs/madera.c
sound/soc/codecs/wm5110.c

index 402b9a2ff02406a91440414e6a983a3e1c36972f..68cdb1027d0c056c3722b2f94ad6142518f9ae2a 100644 (file)
@@ -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;
index a840a2eb92b938b67200ae7aa66526ffd0710a0f..af109761f3599dd7f4faa990485f154ce925284d 100644 (file)
@@ -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;
index 502196253d42a9130fb0551863109db73c474b20..64eee0d2347da18061acd7a3e6269df982605bbe 100644 (file)
@@ -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: