[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
2 changed files with 2 additions and 9 deletions
|
@ -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] = res;
|
||||||
unsol->queue[wp + 1] = res_ex;
|
unsol->queue[wp + 1] = res_ex;
|
||||||
|
|
||||||
queue_work(unsol->workq, &unsol->work);
|
schedule_work(&unsol->work);
|
||||||
|
|
||||||
return 0;
|
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");
|
snd_printk(KERN_ERR "hda_codec: can't allocate unsolicited queue\n");
|
||||||
return -ENOMEM;
|
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);
|
INIT_WORK(&unsol->work, process_unsol_events);
|
||||||
unsol->bus = bus;
|
unsol->bus = bus;
|
||||||
bus->unsol = unsol;
|
bus->unsol = unsol;
|
||||||
|
@ -334,7 +328,7 @@ static int snd_hda_bus_free(struct hda_bus *bus)
|
||||||
if (! bus)
|
if (! bus)
|
||||||
return 0;
|
return 0;
|
||||||
if (bus->unsol) {
|
if (bus->unsol) {
|
||||||
destroy_workqueue(bus->unsol->workq);
|
flush_scheduled_work();
|
||||||
kfree(bus->unsol);
|
kfree(bus->unsol);
|
||||||
}
|
}
|
||||||
list_for_each_safe(p, n, &bus->codec_list) {
|
list_for_each_safe(p, n, &bus->codec_list) {
|
||||||
|
|
|
@ -199,7 +199,6 @@ struct hda_bus_unsolicited {
|
||||||
unsigned int rp, wp;
|
unsigned int rp, wp;
|
||||||
|
|
||||||
/* workqueue */
|
/* workqueue */
|
||||||
struct workqueue_struct *workq;
|
|
||||||
struct work_struct work;
|
struct work_struct work;
|
||||||
struct hda_bus *bus;
|
struct hda_bus *bus;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue