Merge tag 'phy-for-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux...
[linux-2.6-microblaze.git] / sound / soc / codecs / rt5682.c
index 0a0ec4a..be68d57 100644 (file)
@@ -1092,11 +1092,13 @@ void rt5682_jack_detect_handler(struct work_struct *work)
        struct snd_soc_dapm_context *dapm;
        int val, btn_type;
 
-       while (!rt5682->component)
-               usleep_range(10000, 15000);
-
-       while (!rt5682->component->card->instantiated)
-               usleep_range(10000, 15000);
+       if (!rt5682->component || !rt5682->component->card ||
+           !rt5682->component->card->instantiated) {
+               /* card not yet ready, try later */
+               mod_delayed_work(system_power_efficient_wq,
+                                &rt5682->jack_detect_work, msecs_to_jiffies(15));
+               return;
+       }
 
        dapm = snd_soc_component_get_dapm(rt5682->component);