18 #include <linux/kernel.h>
24 #include "../../wusbcore/wusbhc.h"
32 whc_qset_set_link_ptr(&whc->
pz_list[0], addr);
33 whc_qset_set_link_ptr(&whc->
pz_list[2], addr);
34 whc_qset_set_link_ptr(&whc->
pz_list[4], addr);
35 whc_qset_set_link_ptr(&whc->
pz_list[6], addr);
36 whc_qset_set_link_ptr(&whc->
pz_list[8], addr);
37 whc_qset_set_link_ptr(&whc->
pz_list[10], addr);
38 whc_qset_set_link_ptr(&whc->
pz_list[12], addr);
39 whc_qset_set_link_ptr(&whc->
pz_list[14], addr);
42 whc_qset_set_link_ptr(&whc->
pz_list[1], addr);
43 whc_qset_set_link_ptr(&whc->
pz_list[5], addr);
44 whc_qset_set_link_ptr(&whc->
pz_list[9], addr);
45 whc_qset_set_link_ptr(&whc->
pz_list[13], addr);
48 whc_qset_set_link_ptr(&whc->
pz_list[3], addr);
49 whc_qset_set_link_ptr(&whc->
pz_list[11], addr);
52 whc_qset_set_link_ptr(&whc->
pz_list[7], addr);
55 whc_qset_set_link_ptr(&whc->
pz_list[15], addr);
65 static int qset_get_period(
struct whc *whc,
struct whc_qset *qset)
76 static void qset_insert_in_sw_list(
struct whc *whc,
struct whc_qset *qset)
80 period = qset_get_period(whc, qset);
87 static void pzl_qset_remove(
struct whc *whc,
struct whc_qset *qset)
144 pzl_qset_remove(whc, qset);
207 static void update_pzl_hw_view(
struct whc *whc)
213 for (period = 0; period < 5; period++) {
215 whc_qset_set_link_ptr(&qset->
qh.link, tmp_qh);
219 update_pzl_pointers(whc, period, tmp_qh);
238 spin_lock_irq(&whc->
lock);
240 for (period = 4; period >= 0; period--) {
244 update |= pzl_process_qset(whc, qset);
249 update_pzl_hw_view(whc);
251 spin_unlock_irq(&whc->
lock);
267 spin_lock_irq(&whc->
lock);
273 if (!list_empty(&qset->
stds)) {
274 qset_insert_in_sw_list(whc, qset);
280 spin_unlock_irq(&whc->
lock);
303 spin_unlock_irqrestore(&whc->
lock, flags);
314 qset_insert_in_sw_list(whc, qset);
318 spin_unlock_irqrestore(&whc->
lock, flags);
338 struct whc_urb *wurb = urb->hcpriv;
341 bool has_qtd =
false;
352 if (std->
urb == urb) {
361 pzl_qset_remove(whc, qset);
362 update_pzl_hw_view(whc);
369 spin_unlock_irqrestore(&whc->
lock, flags);
398 for (i = 0; i < 16; i++)