Lines Matching refs:unsol
751 struct hda_bus_unsolicited *unsol; in snd_hda_queue_unsol_event() local
758 unsol = bus->unsol; in snd_hda_queue_unsol_event()
759 if (!unsol) in snd_hda_queue_unsol_event()
762 wp = (unsol->wp + 1) % HDA_UNSOL_QUEUE_SIZE; in snd_hda_queue_unsol_event()
763 unsol->wp = wp; in snd_hda_queue_unsol_event()
766 unsol->queue[wp] = res; in snd_hda_queue_unsol_event()
767 unsol->queue[wp + 1] = res_ex; in snd_hda_queue_unsol_event()
769 queue_work(bus->workq, &unsol->work); in snd_hda_queue_unsol_event()
780 struct hda_bus_unsolicited *unsol = in process_unsol_events() local
782 struct hda_bus *bus = unsol->bus; in process_unsol_events()
786 while (unsol->rp != unsol->wp) { in process_unsol_events()
787 rp = (unsol->rp + 1) % HDA_UNSOL_QUEUE_SIZE; in process_unsol_events()
788 unsol->rp = rp; in process_unsol_events()
790 res = unsol->queue[rp]; in process_unsol_events()
791 caddr = unsol->queue[rp + 1]; in process_unsol_events()
805 struct hda_bus_unsolicited *unsol; in init_unsol_queue() local
807 if (bus->unsol) /* already initialized */ in init_unsol_queue()
810 unsol = kzalloc(sizeof(*unsol), GFP_KERNEL); in init_unsol_queue()
811 if (!unsol) { in init_unsol_queue()
815 INIT_WORK(&unsol->work, process_unsol_events); in init_unsol_queue()
816 unsol->bus = bus; in init_unsol_queue()
817 bus->unsol = unsol; in init_unsol_queue()
832 if (bus->unsol) in snd_hda_bus_free()
833 kfree(bus->unsol); in snd_hda_bus_free()