[ALSA] hda-codec - Use global workqueue
[firefly-linux-kernel-4.4.55.git] / sound / pci / hda / hda_codec.c
index e14faf5d50530ffc041cd747bb10dc18e135fed9..8f34fb4479837087b177c6f0c15d6eeb29caf300 100644 (file)
@@ -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) {