ASoC: twl6040: Switch to use system workqueue for jack reporting

There's no need to create a queue for this anymore

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Peter Ujfalusi 2013-01-11 17:01:02 +01:00 committed by Mark Brown
parent 9523fcdcc0
commit da2107d1e4
1 changed files with 3 additions and 18 deletions

View File

@ -75,7 +75,6 @@ struct twl6040_data {
u16 hf_right_step; u16 hf_right_step;
struct twl6040_jack_data hs_jack; struct twl6040_jack_data hs_jack;
struct snd_soc_codec *codec; struct snd_soc_codec *codec;
struct workqueue_struct *workqueue;
struct mutex mutex; struct mutex mutex;
}; };
@ -404,8 +403,7 @@ static irqreturn_t twl6040_audio_handler(int irq, void *data)
struct snd_soc_codec *codec = data; struct snd_soc_codec *codec = data;
struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec); struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
queue_delayed_work(priv->workqueue, &priv->hs_jack.work, schedule_delayed_work(&priv->hs_jack.work, msecs_to_jiffies(200));
msecs_to_jiffies(200));
return IRQ_HANDLED; return IRQ_HANDLED;
} }
@ -1162,10 +1160,6 @@ static int twl6040_probe(struct snd_soc_codec *codec)
return -EINVAL; return -EINVAL;
} }
priv->workqueue = alloc_workqueue("twl6040-codec", 0, 0);
if (!priv->workqueue)
return -ENOMEM;
INIT_DELAYED_WORK(&priv->hs_jack.work, twl6040_accessory_work); INIT_DELAYED_WORK(&priv->hs_jack.work, twl6040_accessory_work);
mutex_init(&priv->mutex); mutex_init(&priv->mutex);
@ -1175,27 +1169,18 @@ static int twl6040_probe(struct snd_soc_codec *codec)
"twl6040_irq_plug", codec); "twl6040_irq_plug", codec);
if (ret) { if (ret) {
dev_err(codec->dev, "PLUG IRQ request failed: %d\n", ret); dev_err(codec->dev, "PLUG IRQ request failed: %d\n", ret);
goto err; return ret;
} }
twl6040_init_chip(codec); twl6040_init_chip(codec);
/* power on device */ /* power on device */
ret = twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY); return twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
if (!ret)
return 0;
err:
destroy_workqueue(priv->workqueue);
return ret;
} }
static int twl6040_remove(struct snd_soc_codec *codec) static int twl6040_remove(struct snd_soc_codec *codec)
{ {
struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF); twl6040_set_bias_level(codec, SND_SOC_BIAS_OFF);
destroy_workqueue(priv->workqueue);
return 0; return 0;
} }