ASoC: codecs: rt298: Reorganize jack detect handling
authorCezary Rojewski <cezary.rojewski@intel.com>
Thu, 9 Jun 2022 13:35:33 +0000 (15:35 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 10 Jun 2022 12:32:18 +0000 (13:32 +0100)
Clean up in order to use and expose .set_jack callback.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Link: https://lore.kernel.org/r/20220609133541.3984886-4-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt298.c
sound/soc/codecs/rt298.h
sound/soc/intel/boards/bxt_rt298.c

index c291786..1a27e5e 100644 (file)
@@ -326,7 +326,8 @@ static void rt298_jack_detect_work(struct work_struct *work)
                SND_JACK_MICROPHONE | SND_JACK_HEADPHONE);
 }
 
-int rt298_mic_detect(struct snd_soc_component *component, struct snd_soc_jack *jack)
+static int rt298_mic_detect(struct snd_soc_component *component,
+                           struct snd_soc_jack *jack, void *data)
 {
        struct rt298_priv *rt298 = snd_soc_component_get_drvdata(component);
        struct snd_soc_dapm_context *dapm;
@@ -358,7 +359,6 @@ int rt298_mic_detect(struct snd_soc_component *component, struct snd_soc_jack *j
 
        return 0;
 }
-EXPORT_SYMBOL_GPL(rt298_mic_detect);
 
 static int is_mclk_mode(struct snd_soc_dapm_widget *source,
                         struct snd_soc_dapm_widget *sink)
@@ -1011,17 +1011,11 @@ static int rt298_probe(struct snd_soc_component *component)
        struct rt298_priv *rt298 = snd_soc_component_get_drvdata(component);
 
        rt298->component = component;
+       INIT_DELAYED_WORK(&rt298->jack_detect_work, rt298_jack_detect_work);
 
-       if (rt298->i2c->irq) {
-               regmap_update_bits(rt298->regmap,
-                                       RT298_IRQ_CTRL, 0x2, 0x2);
-
-               INIT_DELAYED_WORK(&rt298->jack_detect_work,
-                                       rt298_jack_detect_work);
+       if (rt298->i2c->irq)
                schedule_delayed_work(&rt298->jack_detect_work,
-                                       msecs_to_jiffies(1250));
-       }
-
+                                     msecs_to_jiffies(1250));
        return 0;
 }
 
@@ -1120,6 +1114,7 @@ static const struct snd_soc_component_driver soc_component_dev_rt298 = {
        .suspend                = rt298_suspend,
        .resume                 = rt298_resume,
        .set_bias_level         = rt298_set_bias_level,
+       .set_jack               = rt298_mic_detect,
        .controls               = rt298_snd_controls,
        .num_controls           = ARRAY_SIZE(rt298_snd_controls),
        .dapm_widgets           = rt298_dapm_widgets,
index ed2b8fd..f1be9c1 100644 (file)
@@ -207,7 +207,5 @@ enum {
        RT298_AIFS,
 };
 
-int rt298_mic_detect(struct snd_soc_component *component, struct snd_soc_jack *jack);
-
 #endif /* __RT298_H__ */
 
index 75995d1..4bd93c3 100644 (file)
@@ -176,7 +176,7 @@ static int broxton_rt298_codec_init(struct snd_soc_pcm_runtime *rtd)
        if (ret)
                return ret;
 
-       rt298_mic_detect(component, &broxton_headset);
+       snd_soc_component_set_jack(component, &broxton_headset, NULL);
 
        snd_soc_dapm_ignore_suspend(&rtd->card->dapm, "SoC DMIC");