ASoC: rt5645: Add the workqueue of the jack detect function for the debouncing
Subsystems (3)
Oder Chiou
maintainerPATCH 1/1 ASoC: rt5645: Add the workqueue of the jack detect function for the debouncing
Add the workqueue of the jack detect function for the debouncing.
Signed-off-by Oder Chiou <[email protected]>
--- sound/soc/codecs/rt5645.c | 13 ++++++++++++- sound/soc/codecs/rt5645.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-)
sound/soc/codecs/rt5645.c +12 -1
@@ -2166,11 +2166,20 @@ int rt5645_set_jack_detect(struct snd_soc_codec *codec, }EXPORT_SYMBOL_GPL (rt5645_set_jack_detect); +static void rt5645_jack_detect_work (struct work_struct *work) +{ +struct rt5645_priv *rt5645 = + container_of(work, struct rt5645_priv, jack_detect_work.work); + +rt5645_jack_detect (rt5645->codec, rt5645->jack); +} +static irqreturn_t rt5645_irq (int irq,void *data) {struct rt5645_priv *rt5645 = data; -rt5645_jack_detect (rt5645->codec, rt5645->jack); +queue_delayed_work (system_power_efficient_wq, + &rt5645->jack_detect_work,msecs_to_jiffies (250 ));return IRQ_HANDLED ; }
@@ -2436,6 +2445,8 @@ static int rt5645_i2c_probe(struct i2c_client *i2c,dev_err (&i2c->dev,"Fail gpio_direction hp_det_gpio\n" ); } +INIT_DELAYED_WORK (&rt5645->jack_detect_work, rt5645_jack_detect_work); +return snd_soc_register_codec (&i2c->dev, &soc_codec_dev_rt5645, rt5645_dai,ARRAY_SIZE (rt5645_dai)); }
sound/soc/codecs/rt5645.h +1 -0
@@ -2168,6 +2168,7 @@ struct rt5645_priv {struct regmap *regmap;struct i2c_client *i2c;struct snd_soc_jack *jack; +struct delayed_work jack_detect_work;int sysclk;int sysclk_src;
Signature · 1 line
1.8.1.1.439.g50a6b54
At Mon, 6 Oct 2014 18:59:30 +0800,
Quoted 2 lines · Oder Chiou
Add the workqueue of the jack detect function for the debouncing.
A cancel_delayed_work_sync() call seems missing at destructor.
Takashi
Quoted 62 lines
Signed-off-by Oder Chiou <[email protected]>--- sound/soc/codecs/rt5645.c | 13 ++++++++++++- sound/soc/codecs/rt5645.h | 1 + 2 files changed, 13 insertions(+), 1 deletion(-)sound/soc/codecs/rt5645.c +12
-1@@ -2166,11 +2166,20 @@ int rt5645_set_jack_detect(struct snd_soc_codec *codec, }EXPORT_SYMBOL_GPL (rt5645_set_jack_detect); +static void rt5645_jack_detect_work (struct work_struct *work) +{ +struct rt5645_priv *rt5645 = + container_of(work, struct rt5645_priv, jack_detect_work.work); + +rt5645_jack_detect (rt5645->codec, rt5645->jack); +} +static irqreturn_t rt5645_irq (int irq,void *data) {struct rt5645_priv *rt5645 = data; -rt5645_jack_detect (rt5645->codec, rt5645->jack); +queue_delayed_work (system_power_efficient_wq, + &rt5645->jack_detect_work,msecs_to_jiffies (250 ));return IRQ_HANDLED ; }@@ -2436,6 +2445,8 @@ static int rt5645_i2c_probe(struct i2c_client *i2c,dev_err (&i2c->dev,"Fail gpio_direction hp_det_gpio\n" ); } +INIT_DELAYED_WORK (&rt5645->jack_detect_work, rt5645_jack_detect_work); +return snd_soc_register_codec (&i2c->dev, &soc_codec_dev_rt5645, rt5645_dai,ARRAY_SIZE (rt5645_dai)); }sound/soc/codecs/rt5645.h +1
-0@@ -2168,6 +2168,7 @@ struct rt5645_priv {struct regmap *regmap;struct i2c_client *i2c;struct snd_soc_jack *jack; +struct delayed_work jack_detect_work;int sysclk;int sysclk_src;Signature · 6 lines
1.8.1.1.439.g50a6b54 _______________________________________________ Alsa-devel mailing list [email protected] http://mailman.alsa-project.org/mailman/listinfo/alsa-devel