Lines Matching refs:etd_num
117 static void etd_writel(struct imx21 *imx21, int etd_num, int dword, u32 value) in etd_writel() argument
119 writel(value, imx21->regs + USB_ETD_DWORD(etd_num, dword)); in etd_writel()
122 static u32 etd_readl(struct imx21 *imx21, int etd_num, int dword) in etd_readl() argument
124 return readl(imx21->regs + USB_ETD_DWORD(etd_num, dword)); in etd_readl()
228 int etd_num, struct urb *urb, u8 dir, u16 maxpacket) in setup_etd_dword0() argument
230 etd_writel(imx21, etd_num, 0, in setup_etd_dword0()
267 static void activate_etd(struct imx21 *imx21, int etd_num, u8 dir) in activate_etd() argument
269 u32 etd_mask = 1 << etd_num; in activate_etd()
270 struct etd_priv *etd = &imx21->etd[etd_num]; in activate_etd()
323 writel(etd->dma_handle, imx21->regs + USB_ETDSMSA(etd_num)); in activate_etd()
344 etd->submitted_dwords[i] = etd_readl(imx21, etd_num, i); in activate_etd()
409 int etd_num = etd - &imx21->etd[0]; in activate_queued_etd() local
410 u32 maxpacket = etd_readl(imx21, etd_num, 1) >> DW1_YBUFSRTAD; in activate_queued_etd()
411 u8 dir = (etd_readl(imx21, etd_num, 2) >> DW2_DIRPID) & 0x03; in activate_queued_etd()
414 etd_num); in activate_queued_etd()
415 etd_writel(imx21, etd_num, 1, in activate_queued_etd()
420 activate_etd(imx21, etd_num, dir); in activate_queued_etd()
487 int etd_num = ep_priv->etd[i]; in ep_idle() local
489 if (etd_num < 0) in ep_idle()
492 etd = &imx21->etd[etd_num]; in ep_idle()
498 free_etd(imx21, etd_num); in ep_idle()
503 "assigning idle etd %d for queued request\n", etd_num); in ep_idle()
507 reset_etd(imx21, etd_num); in ep_idle()
509 ep_priv->etd[i] = etd_num; in ep_idle()
572 int etd_num; in schedule_isoc_etds() local
582 etd_num = ep_priv->etd[i]; in schedule_isoc_etds()
583 if (etd_num < 0) in schedule_isoc_etds()
586 etd = &imx21->etd[etd_num]; in schedule_isoc_etds()
618 setup_etd_dword0(imx21, etd_num, td->urb, dir, etd->dmem_size); in schedule_isoc_etds()
619 etd_writel(imx21, etd_num, 1, etd->dmem_offset); in schedule_isoc_etds()
620 etd_writel(imx21, etd_num, 2, in schedule_isoc_etds()
623 etd_writel(imx21, etd_num, 3, in schedule_isoc_etds()
627 activate_etd(imx21, etd_num, dir); in schedule_isoc_etds()
631 static void isoc_etd_done(struct usb_hcd *hcd, int etd_num) in isoc_etd_done() argument
634 int etd_mask = 1 << etd_num; in isoc_etd_done()
635 struct etd_priv *etd = imx21->etd + etd_num; in isoc_etd_done()
646 disactivate_etd(imx21, etd_num); in isoc_etd_done()
648 cc = (etd_readl(imx21, etd_num, 3) >> DW3_COMPCODE0) & 0xf; in isoc_etd_done()
649 bytes_xfrd = etd_readl(imx21, etd_num, 3) & 0x3ff; in isoc_etd_done()
668 bytes_xfrd, td->len, urb, etd_num, isoc_index); in isoc_etd_done()
715 int etd_num; in alloc_isoc_etds() local
720 etd_num = alloc_etd(imx21); in alloc_isoc_etds()
721 if (etd_num < 0) in alloc_isoc_etds()
724 ep_priv->etd[i] = etd_num; in alloc_isoc_etds()
725 imx21->etd[etd_num].ep = ep_priv->ep; in alloc_isoc_etds()
889 int etd_num = ep_priv->etd[i]; in dequeue_isoc_urb() local
890 if (etd_num != -1 && imx21->etd[etd_num].urb == urb) { in dequeue_isoc_urb()
891 struct etd_priv *etd = imx21->etd + etd_num; in dequeue_isoc_urb()
893 reset_etd(imx21, etd_num); in dequeue_isoc_urb()
917 int etd_num = ep_priv->etd[0]; in schedule_nonisoc_etd() local
928 if (etd_num < 0) { in schedule_nonisoc_etd()
932 if (readl(imx21->regs + USBH_ETDENSET) & (1 << etd_num)) in schedule_nonisoc_etd()
933 dev_err(imx21->dev, "submitting to active ETD %d\n", etd_num); in schedule_nonisoc_etd()
935 etd = &imx21->etd[etd_num]; in schedule_nonisoc_etd()
993 setup_etd_dword0(imx21, etd_num, urb, dir, maxpacket); in schedule_nonisoc_etd()
995 etd_writel(imx21, etd_num, 2, in schedule_nonisoc_etd()
1011 etd_writel(imx21, etd_num, 3, in schedule_nonisoc_etd()
1022 etd_writel(imx21, etd_num, 1, (u32)maxpacket << 16); in schedule_nonisoc_etd()
1024 dev_dbg(imx21->dev, "Queuing etd %d for DMEM\n", etd_num); in schedule_nonisoc_etd()
1030 etd_writel(imx21, etd_num, 1, in schedule_nonisoc_etd()
1038 etd_num, count, dir != TD_DIR_IN ? "out" : "in"); in schedule_nonisoc_etd()
1039 activate_etd(imx21, etd_num, dir); in schedule_nonisoc_etd()
1043 static void nonisoc_etd_done(struct usb_hcd *hcd, int etd_num) in nonisoc_etd_done() argument
1046 struct etd_priv *etd = &imx21->etd[etd_num]; in nonisoc_etd_done()
1048 u32 etd_mask = 1 << etd_num; in nonisoc_etd_done()
1055 disactivate_etd(imx21, etd_num); in nonisoc_etd_done()
1057 dir = (etd_readl(imx21, etd_num, 0) >> DW0_DIRECT) & 0x3; in nonisoc_etd_done()
1058 cc = (etd_readl(imx21, etd_num, 2) >> DW2_COMPCODE) & 0xf; in nonisoc_etd_done()
1059 bytes_xfrd = etd->len - (etd_readl(imx21, etd_num, 3) & 0x1fffff); in nonisoc_etd_done()
1064 (etd_readl(imx21, etd_num, 0) >> DW0_TOGCRY) & 0x1); in nonisoc_etd_done()
1287 int etd_num = ep_priv->etd[0]; in imx21_hc_urb_dequeue() local
1288 if (etd_num != -1) { in imx21_hc_urb_dequeue()
1289 struct etd_priv *etd = &imx21->etd[etd_num]; in imx21_hc_urb_dequeue()
1291 disactivate_etd(imx21, etd_num); in imx21_hc_urb_dequeue()
1315 int etd_num; in process_etds() local
1321 for (etd_num = 0; etd_num < USB_NUM_ETD; etd_num++) { in process_etds()
1322 u32 etd_mask = 1 << etd_num; in process_etds()
1325 struct etd_priv *etd = &imx21->etd[etd_num]; in process_etds()
1356 cc = etd_readl(imx21, etd_num, 2) >> DW2_COMPCODE; in process_etds()
1363 dword0 = etd_readl(imx21, etd_num, 0); in process_etds()
1366 etd_num, dword0 & 0x7F, in process_etds()
1389 etd_num, etd->ep, etd->urb); in process_etds()
1390 disactivate_etd(imx21, etd_num); in process_etds()
1395 isoc_etd_done(hcd, etd_num); in process_etds()
1397 nonisoc_etd_done(hcd, etd_num); in process_etds()