Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e250af29 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela
Browse files

[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: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent dc041e0b
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -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) {
+0 −1
Original line number Diff line number Diff line
@@ -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;
};