On Tue, Mar 9, 2021 at 12:58 AM <shumingf@xxxxxxxxxxx> wrote: > > From: Shuming Fan <shumingf@xxxxxxxxxxx> > > This patch keeps the delay time (50 ms) for jack detection and zero delay time for the button press. > This patch improves the reaction of the button press. > > Signed-off-by: Shuming Fan <shumingf@xxxxxxxxxxx> Thanks for fixing this up Tested-by Curtis Malainey <cujomalainey@xxxxxxxxxxxx> > --- > sound/soc/codecs/rt5682-i2c.c | 2 +- > sound/soc/codecs/rt5682-sdw.c | 2 +- > sound/soc/codecs/rt5682.c | 2 ++ > sound/soc/codecs/rt5682.h | 1 + > 4 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/sound/soc/codecs/rt5682-i2c.c b/sound/soc/codecs/rt5682-i2c.c > index 93c1603b42f1..8ea9f1d9fec0 100644 > --- a/sound/soc/codecs/rt5682-i2c.c > +++ b/sound/soc/codecs/rt5682-i2c.c > @@ -78,7 +78,7 @@ static irqreturn_t rt5682_irq(int irq, void *data) > struct rt5682_priv *rt5682 = data; > > mod_delayed_work(system_power_efficient_wq, > - &rt5682->jack_detect_work, msecs_to_jiffies(250)); > + &rt5682->jack_detect_work, msecs_to_jiffies(rt5682->irq_work_delay_time)); > > return IRQ_HANDLED; > } > diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c > index 5e097f776561..fed80c8f994f 100644 > --- a/sound/soc/codecs/rt5682-sdw.c > +++ b/sound/soc/codecs/rt5682-sdw.c > @@ -677,7 +677,7 @@ static int rt5682_interrupt_callback(struct sdw_slave *slave, > > if (status->control_port & 0x4) { > mod_delayed_work(system_power_efficient_wq, > - &rt5682->jack_detect_work, msecs_to_jiffies(250)); > + &rt5682->jack_detect_work, msecs_to_jiffies(rt5682->irq_work_delay_time)); > } > > return 0; > diff --git a/sound/soc/codecs/rt5682.c b/sound/soc/codecs/rt5682.c > index 559dc6db1f7c..0e2a10ed11da 100644 > --- a/sound/soc/codecs/rt5682.c > +++ b/sound/soc/codecs/rt5682.c > @@ -1094,6 +1094,7 @@ void rt5682_jack_detect_handler(struct work_struct *work) > /* jack was out, report jack type */ > rt5682->jack_type = > rt5682_headset_detect(rt5682->component, 1); > + rt5682->irq_work_delay_time = 0; > } else if ((rt5682->jack_type & SND_JACK_HEADSET) == > SND_JACK_HEADSET) { > /* jack is already in, report button event */ > @@ -1139,6 +1140,7 @@ void rt5682_jack_detect_handler(struct work_struct *work) > } else { > /* jack out */ > rt5682->jack_type = rt5682_headset_detect(rt5682->component, 0); > + rt5682->irq_work_delay_time = 50; > } > > snd_soc_jack_report(rt5682->hs_jack, rt5682->jack_type, > diff --git a/sound/soc/codecs/rt5682.h b/sound/soc/codecs/rt5682.h > index 1f9c51a5b9bf..74ff66767016 100644 > --- a/sound/soc/codecs/rt5682.h > +++ b/sound/soc/codecs/rt5682.h > @@ -1439,6 +1439,7 @@ struct rt5682_priv { > int pll_out[RT5682_PLLS]; > > int jack_type; > + int irq_work_delay_time; > }; > > extern const char *rt5682_supply_names[RT5682_NUM_SUPPLIES]; > -- > 2.29.0 >