• 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/

Lines Matching refs:etd

64 #define DEBUG_LOG_FRAME(imx21, etd, event) \
65 (etd)->event##_frame = readl((imx21)->regs + USBH_FRMNUB)
67 #define DEBUG_LOG_FRAME(imx21, etd, event) do { } while (0)
149 struct etd_priv *etd = imx21->etd;
151 for (i = 0; i < USB_NUM_ETD; i++, etd++) {
152 if (etd->alloc == 0) {
153 memset(etd, 0, sizeof(imx21->etd[0]));
154 etd->alloc = 1;
165 struct etd_priv *etd = &imx21->etd[num];
172 etd->active_count = 0;
174 DEBUG_LOG_FRAME(imx21, etd, disactivated);
179 struct etd_priv *etd = imx21->etd + num;
186 etd->urb = NULL;
187 etd->ep = NULL;
188 etd->td = NULL;;
197 dev_err(imx21->dev, "BAD etd=%d!\n", num);
200 if (imx21->etd[num].alloc == 0) {
207 memset(&imx21->etd[num], 0, sizeof(imx21->etd[0]));
228 struct etd_priv *etd = &imx21->etd[etd_num];
249 DEBUG_LOG_FRAME(imx21, etd, activated);
252 if (!etd->active_count) {
254 etd->activated_frame = readl(imx21->regs + USBH_FRMNUB);
255 etd->disactivated_frame = -1;
256 etd->last_int_frame = -1;
257 etd->last_req_frame = -1;
260 etd->submitted_dwords[i] = etd_readl(imx21, etd_num, i);
264 etd->active_count = 1;
314 struct etd_priv *etd, u32 dmem_offset)
316 struct urb_priv *urb_priv = etd->urb->hcpriv;
317 int etd_num = etd - &imx21->etd[0];
327 activate_etd(imx21, etd_num, etd->dma_handle, dir);
333 struct etd_priv *etd, *tmp;
353 list_for_each_entry_safe(etd, tmp, &imx21->queue_for_dmem, queue) {
354 offset = alloc_dmem(imx21, etd->dmem_size, etd->ep);
356 list_del(&etd->queue);
357 activate_queued_etd(imx21, etd, (u32)offset);
390 etd_num = ep_priv->etd[i];
394 ep_priv->etd[i] = -1;
401 "assigning idle etd %d for queued request\n", etd_num);
407 ep_priv->etd[i] = etd_num;
449 struct etd_priv *etd;
462 etd_num = ep_priv->etd[i];
466 etd = &imx21->etd[etd_num];
467 if (etd->urb)
488 etd->td = td;
489 etd->ep = td->ep;
490 etd->urb = td->urb;
491 etd->len = td->len;
496 setup_etd_dword0(imx21, etd_num, td->urb, dir, etd->dmem_size);
497 etd_writel(imx21, etd_num, 1, etd->dmem_offset);
514 struct etd_priv *etd = imx21->etd + etd_num;
515 struct td *td = etd->td;
516 struct usb_host_endpoint *ep = etd->ep;
543 "cnt=%d len=%d urb=%p etd=%d index=%d\n",
555 etd->td = NULL;
556 etd->urb = NULL;
557 etd->ep = NULL;
577 ep_priv->etd[i] = alloc_etd(imx21);
578 if (ep_priv->etd[i] < 0) {
580 dev_err(imx21->dev, "isoc: Couldn't allocate etd\n");
582 free_etd(imx21, ep_priv->etd[j]);
585 imx21->etd[ep_priv->etd[i]].ep = ep;
648 struct etd_priv *etd = &imx21->etd[ep_priv->etd[i]];
650 if (etd->dmem_size > 0 && etd->dmem_size < maxpacket) {
653 etd->dmem_size, maxpacket);
658 if (etd->dmem_size == 0) {
659 etd->dmem_offset = alloc_dmem(imx21, maxpacket, ep);
660 if (etd->dmem_offset < 0) {
665 etd->dmem_size = maxpacket;
732 int etd_num = ep_priv->etd[i];
733 if (etd_num != -1 && imx21->etd[etd_num].urb == urb) {
734 struct etd_priv *etd = imx21->etd + etd_num;
737 if (etd->dmem_size)
738 free_dmem(imx21, etd->dmem_offset);
739 etd->dmem_size = 0;
762 int etd_num = ep_priv->etd[0];
763 struct etd_priv *etd;
781 etd = &imx21->etd[etd_num];
789 etd->dma_handle = urb->setup_dma;
795 etd->dma_handle = urb->transfer_dma;
803 etd->dma_handle = urb->transfer_dma;
822 etd->urb = urb;
823 etd->ep = urb_priv->ep;
824 etd->len = count;
854 etd->dma_handle = 0;
857 etd->dmem_size = (count > maxpacket) ? maxpacket * 2 : maxpacket;
858 dmem_offset = alloc_dmem(imx21, etd->dmem_size, urb_priv->ep);
863 dev_dbg(imx21->dev, "Queuing etd %d for DMEM\n", etd_num);
865 list_add_tail(&etd->queue, &imx21->queue_for_dmem);
876 dev_vdbg(imx21->dev, "Activating etd %d for %d bytes %s\n",
878 activate_etd(imx21, etd_num, etd->dma_handle, dir);
885 struct etd_priv *etd = &imx21->etd[etd_num];
899 bytes_xfrd = etd->len - (etd_readl(imx21, etd_num, 3) & 0x1fffff);
974 etd->urb = NULL;
995 ep_priv->etd[i] = -1;
1007 struct etd_priv *etd;
1061 if (ep_priv->etd[0] < 0) {
1069 ep_priv->etd[0] = alloc_etd(imx21);
1070 if (ep_priv->etd[0] < 0) {
1081 etd = &imx21->etd[ep_priv->etd[0]];
1082 if (etd->urb == NULL) {
1083 DEBUG_LOG_FRAME(imx21, etd, last_req);
1125 int etd_num = ep_priv->etd[0];
1129 imx21->etd[etd_num].urb = NULL;
1159 struct etd_priv *etd = &imx21->etd[etd_num];
1163 DEBUG_LOG_FRAME(imx21, etd, last_int);
1184 if (etd->active_count && !enabled) /* suspicious... */
1187 if (!sof || enabled || !etd->active_count)
1194 if (++etd->active_count < 10)
1208 etd->activated_frame,
1209 etd->disactivated_frame,
1210 etd->last_int_frame,
1211 etd->last_req_frame,
1215 etd->active_count = 0;
1219 if (etd->ep == NULL || etd->urb == NULL) {
1221 "Interrupt for unexpected etd %d"
1223 etd_num, etd->ep, etd->urb);
1228 if (usb_pipeisoc(etd->urb->pipe))
1229 isoc_etd_done(hcd, etd->urb, etd_num);
1231 nonisoc_etd_done(hcd, etd->urb, etd_num);
1282 if (ep_priv->etd[i] > -1)
1283 dev_dbg(imx21->dev, "free etd %d for disable\n",
1284 ep_priv->etd[i]);
1286 free_etd(imx21, ep_priv->etd[i]);
1293 if (imx21->etd[i].alloc && imx21->etd[i].ep == ep) {
1295 "Active etd %d for disabled ep=%p!\n", i, ep);