forked from Minki/linux
[ALSA] hda-codec - Use global workqueue
Use global workqueue for simplicity. The unsolicited event frequency isn't so high to have own queue. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
This commit is contained in:
parent
dc041e0b1f
commit
e250af291d
@ -263,7 +263,7 @@ int snd_hda_queue_unsol_event(struct hda_bus *bus, u32 res, u32 res_ex)
|
||||
unsol->queue[wp] = res;
|
||||
unsol->queue[wp + 1] = res_ex;
|
||||
|
||||
queue_work(unsol->workq, &unsol->work);
|
||||
schedule_work(&unsol->work);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -310,12 +310,6 @@ static int init_unsol_queue(struct hda_bus *bus)
|
||||
snd_printk(KERN_ERR "hda_codec: can't allocate unsolicited queue\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
unsol->workq = create_singlethread_workqueue("hda_codec");
|
||||
if (! unsol->workq) {
|
||||
snd_printk(KERN_ERR "hda_codec: can't create workqueue\n");
|
||||
kfree(unsol);
|
||||
return -ENOMEM;
|
||||
}
|
||||
INIT_WORK(&unsol->work, process_unsol_events);
|
||||
unsol->bus = bus;
|
||||
bus->unsol = unsol;
|
||||
@ -334,7 +328,7 @@ static int snd_hda_bus_free(struct hda_bus *bus)
|
||||
if (! bus)
|
||||
return 0;
|
||||
if (bus->unsol) {
|
||||
destroy_workqueue(bus->unsol->workq);
|
||||
flush_scheduled_work();
|
||||
kfree(bus->unsol);
|
||||
}
|
||||
list_for_each_safe(p, n, &bus->codec_list) {
|
||||
|
@ -199,7 +199,6 @@ struct hda_bus_unsolicited {
|
||||
unsigned int rp, wp;
|
||||
|
||||
/* workqueue */
|
||||
struct workqueue_struct *workq;
|
||||
struct work_struct work;
|
||||
struct hda_bus *bus;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user