• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/usb/host/whci/

Lines Matching defs:whc

28 static void update_pzl_pointers(struct whc *whc, int period, u64 addr)
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);
82 qset_clear(whc, qset);
83 list_move(&qset->list_node, &whc->periodic_list[period]);
87 static void pzl_qset_remove(struct whc *whc, struct whc_qset *qset)
89 list_move(&qset->list_node, &whc->periodic_removed_list);
103 static enum whc_update pzl_process_qset(struct whc *whc, struct whc_qset *qset)
124 process_halted_qtd(whc, qset, td);
133 process_inactive_qtd(whc, qset, td);
137 update |= qset_add_qtds(whc, qset);
144 pzl_qset_remove(whc, qset);
153 * @whc: the WHCI host controller
158 void pzl_start(struct whc *whc)
160 le_writeq(whc->pz_list_dma, whc->base + WUSBPERIODICLISTBASE);
162 whc_write_wusbcmd(whc, WUSBCMD_PERIODIC_EN, WUSBCMD_PERIODIC_EN);
163 whci_wait_for(&whc->umc->dev, whc->base + WUSBSTS,
170 * @whc: the WHCI host controller
172 void pzl_stop(struct whc *whc)
174 whc_write_wusbcmd(whc, WUSBCMD_PERIODIC_EN, 0);
175 whci_wait_for(&whc->umc->dev, whc->base + WUSBSTS,
182 * @whc: the WHCI HC
189 void pzl_update(struct whc *whc, uint32_t wusbcmd)
191 struct wusbhc *wusbhc = &whc->wusbhc;
196 whc_write_wusbcmd(whc, wusbcmd, wusbcmd);
198 whc->periodic_list_wq,
199 (le_readl(whc->base + WUSBCMD) & WUSBCMD_PERIODIC_UPDATED) == 0,
202 whc_hw_error(whc, "PZL update timeout");
207 static void update_pzl_hw_view(struct whc *whc)
214 list_for_each_entry_safe(qset, t, &whc->periodic_list[period], list_node) {
219 update_pzl_pointers(whc, period, tmp_qh);
233 struct whc *whc = container_of(work, struct whc, periodic_work);
238 spin_lock_irq(&whc->lock);
241 list_for_each_entry_safe(qset, t, &whc->periodic_list[period], list_node) {
244 update |= pzl_process_qset(whc, qset);
249 update_pzl_hw_view(whc);
251 spin_unlock_irq(&whc->lock);
257 pzl_update(whc, wusbcmd);
267 spin_lock_irq(&whc->lock);
269 list_for_each_entry_safe(qset, t, &whc->periodic_removed_list, list_node) {
270 qset_remove_complete(whc, qset);
272 qset_reset(whc, qset);
274 qset_insert_in_sw_list(whc, qset);
275 queue_work(whc->workqueue, &whc->periodic_work);
280 spin_unlock_irq(&whc->lock);
285 * @whc: the WHCI host controller
293 int pzl_urb_enqueue(struct whc *whc, struct urb *urb, gfp_t mem_flags)
299 spin_lock_irqsave(&whc->lock, flags);
301 err = usb_hcd_link_urb_to_ep(&whc->wusbhc.usb_hcd, urb);
303 spin_unlock_irqrestore(&whc->lock, flags);
307 qset = get_qset(whc, urb, GFP_ATOMIC);
311 err = qset_add_urb(whc, qset, urb, GFP_ATOMIC);
314 qset_insert_in_sw_list(whc, qset);
316 usb_hcd_unlink_urb_from_ep(&whc->wusbhc.usb_hcd, urb);
318 spin_unlock_irqrestore(&whc->lock, flags);
321 queue_work(whc->workqueue, &whc->periodic_work);
328 * @whc: the WHCI host controller
336 int pzl_urb_dequeue(struct whc *whc, struct urb *urb, int status)
345 spin_lock_irqsave(&whc->lock, flags);
347 ret = usb_hcd_check_unlink_urb(&whc->wusbhc.usb_hcd, urb, status);
355 qset_free_std(whc, std);
361 pzl_qset_remove(whc, qset);
362 update_pzl_hw_view(whc);
365 queue_work(whc->workqueue, &wurb->dequeue_work);
367 qset_remove_urb(whc, qset, urb, status);
369 spin_unlock_irqrestore(&whc->lock, flags);
377 void pzl_qset_delete(struct whc *whc, struct whc_qset *qset)
380 queue_work(whc->workqueue, &whc->periodic_work);
381 qset_delete(whc, qset);
386 * @whc: the WHCI host controller
388 int pzl_init(struct whc *whc)
392 whc->pz_list = dma_alloc_coherent(&whc->umc->dev, sizeof(u64) * 16,
393 &whc->pz_list_dma, GFP_KERNEL);
394 if (whc->pz_list == NULL)
399 whc->pz_list[i] = cpu_to_le64(QH_LINK_NTDS(8) | QH_LINK_T);
401 le_writeq(whc->pz_list_dma, whc->base + WUSBPERIODICLISTBASE);
408 * @whc: the WHCI host controller
412 void pzl_clean_up(struct whc *whc)
414 if (whc->pz_list)
415 dma_free_coherent(&whc->umc->dev, sizeof(u64) * 16, whc->pz_list,
416 whc->pz_list_dma);