Lines Matching refs:etd_num
104 static void etd_writel(struct imx21 *imx21, int etd_num, int dword, u32 value) in etd_writel() argument
106 writel(value, imx21->regs + USB_ETD_DWORD(etd_num, dword)); in etd_writel()
109 static u32 etd_readl(struct imx21 *imx21, int etd_num, int dword) in etd_readl() argument
111 return readl(imx21->regs + USB_ETD_DWORD(etd_num, dword)); in etd_readl()
215 int etd_num, struct urb *urb, u8 dir, u16 maxpacket) in setup_etd_dword0() argument
217 etd_writel(imx21, etd_num, 0, in setup_etd_dword0()
254 static void activate_etd(struct imx21 *imx21, int etd_num, u8 dir) in activate_etd() argument
256 u32 etd_mask = 1 << etd_num; in activate_etd()
257 struct etd_priv *etd = &imx21->etd[etd_num]; in activate_etd()
310 writel(etd->dma_handle, imx21->regs + USB_ETDSMSA(etd_num)); in activate_etd()
331 etd->submitted_dwords[i] = etd_readl(imx21, etd_num, i); in activate_etd()
396 int etd_num = etd - &imx21->etd[0]; in activate_queued_etd() local
397 u32 maxpacket = etd_readl(imx21, etd_num, 1) >> DW1_YBUFSRTAD; in activate_queued_etd()
398 u8 dir = (etd_readl(imx21, etd_num, 2) >> DW2_DIRPID) & 0x03; in activate_queued_etd()
401 etd_num); in activate_queued_etd()
402 etd_writel(imx21, etd_num, 1, in activate_queued_etd()
407 activate_etd(imx21, etd_num, dir); in activate_queued_etd()
474 int etd_num = ep_priv->etd[i]; in ep_idle() local
476 if (etd_num < 0) in ep_idle()
479 etd = &imx21->etd[etd_num]; in ep_idle()
485 free_etd(imx21, etd_num); in ep_idle()
490 "assigning idle etd %d for queued request\n", etd_num); in ep_idle()
494 reset_etd(imx21, etd_num); in ep_idle()
496 ep_priv->etd[i] = etd_num; in ep_idle()
559 int etd_num; in schedule_isoc_etds() local
569 etd_num = ep_priv->etd[i]; in schedule_isoc_etds()
570 if (etd_num < 0) in schedule_isoc_etds()
573 etd = &imx21->etd[etd_num]; in schedule_isoc_etds()
605 setup_etd_dword0(imx21, etd_num, td->urb, dir, etd->dmem_size); in schedule_isoc_etds()
606 etd_writel(imx21, etd_num, 1, etd->dmem_offset); in schedule_isoc_etds()
607 etd_writel(imx21, etd_num, 2, in schedule_isoc_etds()
610 etd_writel(imx21, etd_num, 3, in schedule_isoc_etds()
614 activate_etd(imx21, etd_num, dir); in schedule_isoc_etds()
618 static void isoc_etd_done(struct usb_hcd *hcd, int etd_num) in isoc_etd_done() argument
621 int etd_mask = 1 << etd_num; in isoc_etd_done()
622 struct etd_priv *etd = imx21->etd + etd_num; in isoc_etd_done()
633 disactivate_etd(imx21, etd_num); in isoc_etd_done()
635 cc = (etd_readl(imx21, etd_num, 3) >> DW3_COMPCODE0) & 0xf; in isoc_etd_done()
636 bytes_xfrd = etd_readl(imx21, etd_num, 3) & 0x3ff; in isoc_etd_done()
655 bytes_xfrd, td->len, urb, etd_num, isoc_index); in isoc_etd_done()
702 int etd_num; in alloc_isoc_etds() local
707 etd_num = alloc_etd(imx21); in alloc_isoc_etds()
708 if (etd_num < 0) in alloc_isoc_etds()
711 ep_priv->etd[i] = etd_num; in alloc_isoc_etds()
712 imx21->etd[etd_num].ep = ep_priv->ep; in alloc_isoc_etds()
876 int etd_num = ep_priv->etd[i]; in dequeue_isoc_urb() local
877 if (etd_num != -1 && imx21->etd[etd_num].urb == urb) { in dequeue_isoc_urb()
878 struct etd_priv *etd = imx21->etd + etd_num; in dequeue_isoc_urb()
880 reset_etd(imx21, etd_num); in dequeue_isoc_urb()
904 int etd_num = ep_priv->etd[0]; in schedule_nonisoc_etd() local
915 if (etd_num < 0) { in schedule_nonisoc_etd()
919 if (readl(imx21->regs + USBH_ETDENSET) & (1 << etd_num)) in schedule_nonisoc_etd()
920 dev_err(imx21->dev, "submitting to active ETD %d\n", etd_num); in schedule_nonisoc_etd()
922 etd = &imx21->etd[etd_num]; in schedule_nonisoc_etd()
980 setup_etd_dword0(imx21, etd_num, urb, dir, maxpacket); in schedule_nonisoc_etd()
982 etd_writel(imx21, etd_num, 2, in schedule_nonisoc_etd()
998 etd_writel(imx21, etd_num, 3, in schedule_nonisoc_etd()
1009 etd_writel(imx21, etd_num, 1, (u32)maxpacket << 16); in schedule_nonisoc_etd()
1011 dev_dbg(imx21->dev, "Queuing etd %d for DMEM\n", etd_num); in schedule_nonisoc_etd()
1017 etd_writel(imx21, etd_num, 1, in schedule_nonisoc_etd()
1025 etd_num, count, dir != TD_DIR_IN ? "out" : "in"); in schedule_nonisoc_etd()
1026 activate_etd(imx21, etd_num, dir); in schedule_nonisoc_etd()
1030 static void nonisoc_etd_done(struct usb_hcd *hcd, int etd_num) in nonisoc_etd_done() argument
1033 struct etd_priv *etd = &imx21->etd[etd_num]; in nonisoc_etd_done()
1035 u32 etd_mask = 1 << etd_num; in nonisoc_etd_done()
1042 disactivate_etd(imx21, etd_num); in nonisoc_etd_done()
1044 dir = (etd_readl(imx21, etd_num, 0) >> DW0_DIRECT) & 0x3; in nonisoc_etd_done()
1045 cc = (etd_readl(imx21, etd_num, 2) >> DW2_COMPCODE) & 0xf; in nonisoc_etd_done()
1046 bytes_xfrd = etd->len - (etd_readl(imx21, etd_num, 3) & 0x1fffff); in nonisoc_etd_done()
1051 (etd_readl(imx21, etd_num, 0) >> DW0_TOGCRY) & 0x1); in nonisoc_etd_done()
1274 int etd_num = ep_priv->etd[0]; in imx21_hc_urb_dequeue() local
1275 if (etd_num != -1) { in imx21_hc_urb_dequeue()
1276 struct etd_priv *etd = &imx21->etd[etd_num]; in imx21_hc_urb_dequeue()
1278 disactivate_etd(imx21, etd_num); in imx21_hc_urb_dequeue()
1302 int etd_num; in process_etds() local
1308 for (etd_num = 0; etd_num < USB_NUM_ETD; etd_num++) { in process_etds()
1309 u32 etd_mask = 1 << etd_num; in process_etds()
1312 struct etd_priv *etd = &imx21->etd[etd_num]; in process_etds()
1343 cc = etd_readl(imx21, etd_num, 2) >> DW2_COMPCODE; in process_etds()
1350 dword0 = etd_readl(imx21, etd_num, 0); in process_etds()
1353 etd_num, dword0 & 0x7F, in process_etds()
1376 etd_num, etd->ep, etd->urb); in process_etds()
1377 disactivate_etd(imx21, etd_num); in process_etds()
1382 isoc_etd_done(hcd, etd_num); in process_etds()
1384 nonisoc_etd_done(hcd, etd_num); in process_etds()