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

Lines Matching refs:imx_usb

45 void ep0_chg_stat(const char *label, struct imx_udc_struct *imx_usb,
53 void imx_udc_enable(struct imx_udc_struct *imx_usb)
55 int temp = __raw_readl(imx_usb->base + USB_CTRL);
57 imx_usb->base + USB_CTRL);
58 imx_usb->gadget.speed = USB_SPEED_FULL;
61 void imx_udc_disable(struct imx_udc_struct *imx_usb)
63 int temp = __raw_readl(imx_usb->base + USB_CTRL);
66 imx_usb->base + USB_CTRL);
68 ep0_chg_stat(__func__, imx_usb, EP0_IDLE);
69 imx_usb->gadget.speed = USB_SPEED_UNKNOWN;
72 void imx_udc_reset(struct imx_udc_struct *imx_usb)
74 int temp = __raw_readl(imx_usb->base + USB_ENAB);
77 __raw_writel(temp | ENAB_RST, imx_usb->base + USB_ENAB);
80 do {} while (__raw_readl(imx_usb->base + USB_ENAB) & ENAB_RST);
83 do {} while (!(__raw_readl(imx_usb->base + USB_DADR) & DADR_CFG));
88 void imx_udc_config(struct imx_udc_struct *imx_usb)
95 do {} while (!(__raw_readl(imx_usb->base + USB_DADR) & DADR_CFG));
99 i = (j == 2 ? imx_usb->imx_ep[0].fifosize : 0x00);
100 __raw_writeb(i, imx_usb->base + USB_DDAT);
101 do {} while (__raw_readl(imx_usb->base + USB_DADR) & DADR_BSY);
109 imx_ep = &imx_usb->imx_ep[i];
122 D_INI(imx_usb->dev,
131 imx_usb->base + USB_DDAT);
132 do {} while (__raw_readl(imx_usb->base
140 do {} while (__raw_readl(imx_usb->base + USB_DADR) & DADR_CFG);
143 void imx_udc_init_irq(struct imx_udc_struct *imx_usb)
148 __raw_writel(0xFFFFFFFF, imx_usb->base + USB_MASK);
149 __raw_writel(0xFFFFFFFF, imx_usb->base + USB_INTR);
151 __raw_writel(0x1FF, imx_usb->base + USB_EP_MASK(i));
152 __raw_writel(0x1FF, imx_usb->base + USB_EP_INTR(i));
156 __raw_writel(INTR_MSOF | INTR_FRAME_MATCH, imx_usb->base + USB_MASK);
161 imx_usb->base + USB_EP_MASK(0));
164 void imx_udc_init_ep(struct imx_udc_struct *imx_usb)
169 imx_ep = &imx_usb->imx_ep[i];
189 __raw_writel(temp, imx_usb->base + USB_EP_STAT(i));
191 imx_usb->base + USB_EP_STAT(i));
192 D_INI(imx_usb->dev, "<%s> ep%d_stat %08x\n", __func__, i,
193 __raw_readl(imx_usb->base + USB_EP_STAT(i)));
197 void imx_udc_init_fifo(struct imx_udc_struct *imx_usb)
202 imx_ep = &imx_usb->imx_ep[i];
206 __raw_writel(temp, imx_usb->base + USB_EP_FCTRL(i));
207 D_INI(imx_usb->dev, "<%s> ep%d_fctrl %08x\n", __func__, i,
208 __raw_readl(imx_usb->base + USB_EP_FCTRL(i)));
212 __raw_writel(temp, imx_usb->base + USB_EP_FALRM(i));
213 D_INI(imx_usb->dev, "<%s> ep%d_falrm %08x\n", __func__, i,
214 __raw_readl(imx_usb->base + USB_EP_FALRM(i)));
218 static void imx_udc_init(struct imx_udc_struct *imx_usb)
221 imx_udc_reset(imx_usb);
224 imx_udc_config(imx_usb);
227 imx_udc_init_irq(imx_usb);
230 imx_udc_init_ep(imx_usb);
233 imx_udc_init_fifo(imx_usb);
241 __raw_writel(0x1FF, imx_ep->imx_usb->base + USB_EP_MASK(i));
242 __raw_writel(0x1FF, imx_ep->imx_usb->base + USB_EP_INTR(i));
244 imx_ep->imx_usb->base + USB_EP_MASK(i));
252 __raw_writel(0x1FF, imx_ep->imx_usb->base + USB_EP_MASK(i));
253 __raw_writel(0x1FF, imx_ep->imx_usb->base + USB_EP_INTR(i));
258 struct imx_udc_struct *imx_usb = imx_ep->imx_usb;
260 return __raw_readl(imx_usb->base + USB_EP_FSTAT(EP_NO(imx_ep)))
266 struct imx_udc_struct *imx_usb = imx_ep->imx_usb;
268 return (__raw_readl(imx_usb->base + USB_EP_STAT(EP_NO(imx_ep)))
274 struct imx_udc_struct *imx_usb = imx_ep->imx_usb;
276 int temp = __raw_readl(imx_usb->base + USB_EP_STAT(EP_NO(imx_ep)));
278 imx_usb->base + USB_EP_STAT(EP_NO(imx_ep)));
283 struct imx_udc_struct *imx_usb = imx_ep->imx_usb;
286 D_ERR(imx_usb->dev,
293 temp = __raw_readl(imx_usb->base + USB_CTRL);
295 imx_usb->base + USB_CTRL);
296 do { } while (__raw_readl(imx_usb->base + USB_CTRL)
298 temp = __raw_readl(imx_usb->base + USB_CTRL);
299 __raw_writel(temp & ~CTRL_CMDERROR, imx_usb->base + USB_CTRL);
302 temp = __raw_readl(imx_usb->base + USB_EP_STAT(EP_NO(imx_ep)));
304 imx_usb->base + USB_EP_STAT(EP_NO(imx_ep)));
307 temp = __raw_readl(imx_usb->base
314 D_ERR(imx_usb->dev, "<%s> Non finished stall on %s\n",
321 struct imx_udc_struct *imx_usb = container_of(_gadget,
324 return __raw_readl(imx_usb->base + USB_FRAME) & 0x7FF;
368 D_ERR(imx_ep->imx_usb->dev,
407 *buf++ = __raw_readb(imx_ep->imx_usb->base
419 if (unlikely(__raw_readl(imx_ep->imx_usb->base +
421 D_TRX(imx_ep->imx_usb->dev, "<%s> zlp still queued in EP %s\n",
432 D_TRX(imx_ep->imx_usb->dev, "<%s> packet overfill %s fifo\n",
441 temp = __raw_readl(imx_ep->imx_usb->base
443 __raw_writel(temp | EPSTAT_ZLPS, imx_ep->imx_usb->base
445 D_TRX(imx_ep->imx_usb->dev, "<%s> zero packet\n", __func__);
451 temp = __raw_readl(imx_ep->imx_usb->base
453 __raw_writel(temp | FCTRL_WFR, imx_ep->imx_usb->base
457 imx_ep->imx_usb->base + USB_EP_FDAT0(EP_NO(imx_ep)));
469 while (__raw_readl(imx_ep->imx_usb->base + USB_EP_FSTAT(EP_NO(imx_ep)))
483 D_REQ(imx_ep->imx_usb->dev, "<%s> %s req<%p> %s\n",
487 ep0_chg_stat(__func__, imx_ep->imx_usb, EP0_IDLE);
490 D_TRX(imx_ep->imx_usb->dev, "<%s> bytes read: %d\n", __func__, bytes);
512 D_REQ(imx_ep->imx_usb->dev, "<%s> %s req<%p> %s\n",
517 imx_ep->imx_usb, EP0_IDLE);
521 D_TRX(imx_ep->imx_usb->dev, "<%s> bytes sent: %d\n", __func__, bytes);
540 D_REQ(imx_ep->imx_usb->dev, "<%s> no request on %s\n",
565 switch (imx_ep->imx_usb->ep0state) {
574 D_EP0(imx_ep->imx_usb->dev,
576 __func__, imx_ep->imx_usb->ep0state);
584 D_ERR(imx_ep->imx_usb->dev, "<%s> no request on %s\n",
590 static void handle_ep0_devreq(struct imx_udc_struct *imx_usb)
592 struct imx_ep_struct *imx_ep = &imx_usb->imx_ep[0];
605 D_ERR(imx_usb->dev,
609 u.word[i] = __raw_readl(imx_usb->base
615 i = __raw_readl(imx_usb->base + USB_EP_FDAT(EP_NO(imx_ep)));
616 D_ERR(imx_usb->dev,
627 D_REQ(imx_usb->dev, "<%s> SETUP %02x.%02x v%04x i%04x l%04x\n",
631 if (imx_usb->set_config) {
633 temp = __raw_readl(imx_usb->base + USB_CTRL);
634 __raw_writel(temp | CTRL_CMDOVER, imx_usb->base + USB_CTRL);
636 D_ERR(imx_usb->dev,
643 ep0_chg_stat(__func__, imx_usb, EP0_IN_DATA_PHASE);
645 ep0_chg_stat(__func__, imx_usb, EP0_OUT_DATA_PHASE);
647 i = imx_usb->driver->setup(&imx_usb->gadget, &u.r);
649 D_ERR(imx_usb->dev, "<%s> device setup error %d\n",
656 D_ERR(imx_usb->dev, "<%s> protocol STALL\n", __func__);
658 ep0_chg_stat(__func__, imx_usb, EP0_STALL);
672 struct imx_udc_struct *imx_usb = imx_ep->imx_usb;
680 D_ERR(imx_usb->dev,
686 D_ERR(imx_usb->dev,
692 D_ERR(imx_usb->dev,
697 if (!imx_usb->driver || imx_usb->gadget.speed == USB_SPEED_UNKNOWN) {
698 D_ERR(imx_usb->dev, "<%s> bogus device state\n", __func__);
710 D_EPX(imx_usb->dev, "<%s> ENABLED %s\n", __func__, usb_ep->name);
721 D_ERR(imx_ep->imx_usb->dev, "<%s> %s can not be disabled\n",
735 D_EPX(imx_ep->imx_usb->dev,
772 struct imx_udc_struct *imx_usb;
778 imx_usb = imx_ep->imx_usb;
787 if (imx_usb->set_config && !EP_NO(imx_ep)) {
788 imx_usb->set_config = 0;
789 D_ERR(imx_usb->dev,
795 D_ERR(imx_usb->dev, "<%s> bad params\n", __func__);
800 D_ERR(imx_usb->dev, "<%s> bad ep\n", __func__);
804 if (!imx_usb->driver || imx_usb->gadget.speed == USB_SPEED_UNKNOWN) {
805 D_ERR(imx_usb->dev, "<%s> bogus device state\n", __func__);
810 D_REQ(imx_usb->dev, "<%s> ep%d %s request for [%d] bytes\n",
812 ((!EP_NO(imx_ep) && imx_ep->imx_usb->ep0state
824 D_ERR(imx_usb->dev,
855 D_ERR(imx_ep->imx_usb->dev, "<%s> bad ep\n", __func__);
884 D_ERR(imx_ep->imx_usb->dev, "<%s> bad ep\n", __func__);
900 D_EPX(imx_ep->imx_usb->dev, "<%s> %s halt\n", __func__, usb_ep->name);
910 D_ERR(imx_ep->imx_usb->dev, "<%s> bad ep\n", __func__);
914 if (imx_ep->imx_usb->gadget.speed == USB_SPEED_UNKNOWN)
929 D_ERR(imx_ep->imx_usb->dev, "<%s> bad ep\n", __func__);
961 struct imx_udc_struct *imx_usb, enum ep0_state stat)
963 D_EP0(imx_usb->dev, "<%s> from %15s to %15s\n",
964 label, state_name[imx_usb->ep0state], state_name[stat]);
966 if (imx_usb->ep0state == stat)
969 imx_usb->ep0state = stat;
972 static void usb_init_data(struct imx_udc_struct *imx_usb)
978 INIT_LIST_HEAD(&imx_usb->gadget.ep_list);
979 INIT_LIST_HEAD(&imx_usb->gadget.ep0->ep_list);
980 ep0_chg_stat(__func__, imx_usb, EP0_IDLE);
984 imx_ep = &imx_usb->imx_ep[i];
988 &imx_usb->gadget.ep_list);
997 static void udc_stop_activity(struct imx_udc_struct *imx_usb,
1003 if (imx_usb->gadget.speed == USB_SPEED_UNKNOWN)
1008 imx_ep = &imx_usb->imx_ep[i];
1015 imx_usb->cfg = 0;
1016 imx_usb->intf = 0;
1017 imx_usb->alt = 0;
1020 driver->disconnect(&imx_usb->gadget);
1034 struct imx_udc_struct *imx_usb = (void *)data;
1040 temp = __raw_readl(imx_usb->base + USB_STAT);
1045 D_REQ(imx_usb->dev,
1048 __func__, imx_usb->cfg, imx_usb->intf, imx_usb->alt,
1053 if (imx_usb->cfg != cfg) {
1061 imx_usb->cfg = cfg;
1062 imx_usb->driver->setup(&imx_usb->gadget, &u);
1065 if (imx_usb->intf != intf || imx_usb->alt != alt) {
1073 imx_usb->intf = intf;
1074 imx_usb->alt = alt;
1075 imx_usb->driver->setup(&imx_usb->gadget, &u);
1079 imx_usb->set_config = 0;
1086 struct imx_udc_struct *imx_usb = dev;
1087 int intr = __raw_readl(imx_usb->base + USB_INTR);
1092 dump_intr(__func__, intr, imx_usb->dev);
1093 dump_usb_stat(__func__, imx_usb);
1096 if (!imx_usb->driver)
1105 if (imx_usb->ep0state == EP0_IDLE) {
1106 temp = __raw_readl(imx_usb->base + USB_CTRL);
1108 imx_usb->base + USB_CTRL);
1113 __raw_writel(INTR_CFG_CHG, imx_usb->base + USB_INTR);
1114 imx_usb->set_config = 1;
1115 mod_timer(&imx_usb->timer, jiffies + 5);
1120 if (imx_usb->gadget.speed == USB_SPEED_UNKNOWN
1121 && imx_usb->driver && imx_usb->driver->resume)
1122 imx_usb->driver->resume(&imx_usb->gadget);
1123 imx_usb->set_config = 0;
1124 del_timer(&imx_usb->timer);
1125 imx_usb->gadget.speed = USB_SPEED_FULL;
1129 if (imx_usb->gadget.speed != USB_SPEED_UNKNOWN
1130 && imx_usb->driver && imx_usb->driver->suspend)
1131 imx_usb->driver->suspend(&imx_usb->gadget);
1132 imx_usb->set_config = 0;
1133 del_timer(&imx_usb->timer);
1134 imx_usb->gadget.speed = USB_SPEED_UNKNOWN;
1138 __raw_writel(intr, imx_usb->base + USB_INTR);
1139 udc_stop_activity(imx_usb, imx_usb->driver);
1140 imx_usb->set_config = 0;
1141 del_timer(&imx_usb->timer);
1142 imx_usb->gadget.speed = USB_SPEED_UNKNOWN;
1146 imx_usb->gadget.speed = USB_SPEED_FULL;
1149 __raw_writel(intr, imx_usb->base + USB_INTR);
1155 struct imx_udc_struct *imx_usb = dev;
1156 struct imx_ep_struct *imx_ep = &imx_usb->imx_ep[0];
1157 int intr = __raw_readl(imx_usb->base + USB_EP_INTR(0));
1159 dump_ep_intr(__func__, 0, intr, imx_usb->dev);
1161 if (!imx_usb->driver) {
1162 __raw_writel(intr, imx_usb->base + USB_EP_INTR(0));
1168 handle_ep0_devreq(imx_usb);
1176 __raw_writel(intr, imx_usb->base + USB_EP_INTR(0));
1183 struct imx_udc_struct *imx_usb = dev;
1184 struct imx_ep_struct *imx_ep = &imx_usb->imx_ep[irq - USBD_INT0];
1185 int intr = __raw_readl(imx_usb->base + USB_EP_INTR(EP_NO(imx_ep)));
1187 dump_ep_intr(__func__, irq - USBD_INT0, intr, imx_usb->dev);
1189 if (!imx_usb->driver) {
1190 __raw_writel(intr, imx_usb->base + USB_EP_INTR(EP_NO(imx_ep)));
1196 __raw_writel(intr, imx_usb->base + USB_EP_INTR(EP_NO(imx_ep)));
1243 .imx_usb = &controller,
1254 .imx_usb = &controller,
1265 .imx_usb = &controller,
1276 .imx_usb = &controller,
1287 .imx_usb = &controller,
1298 .imx_usb = &controller,
1311 struct imx_udc_struct *imx_usb = &controller;
1320 if (!imx_usb)
1322 if (imx_usb->driver)
1326 imx_usb->driver = driver;
1327 imx_usb->gadget.dev.driver = &driver->driver;
1329 retval = device_add(&imx_usb->gadget.dev);
1332 retval = driver->bind(&imx_usb->gadget);
1334 D_ERR(imx_usb->dev, "<%s> bind to driver %s --> error %d\n",
1336 device_del(&imx_usb->gadget.dev);
1341 D_INI(imx_usb->dev, "<%s> registered gadget driver '%s'\n",
1344 imx_udc_enable(imx_usb);
1348 imx_usb->driver = NULL;
1349 imx_usb->gadget.dev.driver = NULL;
1356 struct imx_udc_struct *imx_usb = &controller;
1358 if (!imx_usb)
1360 if (!driver || driver != imx_usb->driver || !driver->unbind)
1363 udc_stop_activity(imx_usb, driver);
1364 imx_udc_disable(imx_usb);
1365 del_timer(&imx_usb->timer);
1367 driver->unbind(&imx_usb->gadget);
1368 imx_usb->gadget.dev.driver = NULL;
1369 imx_usb->driver = NULL;
1371 device_del(&imx_usb->gadget.dev);
1373 D_INI(imx_usb->dev, "<%s> unregistered gadget driver '%s'\n",
1387 struct imx_udc_struct *imx_usb = &controller;
1449 imx_usb->usbd_int[i] = platform_get_irq(pdev, i);
1450 if (imx_usb->usbd_int[i] < 0) {
1458 ret = request_irq(imx_usb->usbd_int[i], intr_handler(i),
1459 IRQF_DISABLED, driver_name, imx_usb);
1462 imx_usb->usbd_int[i], ret);
1464 free_irq(imx_usb->usbd_int[i], imx_usb);
1469 imx_usb->res = res;
1470 imx_usb->base = base;
1471 imx_usb->clk = clk;
1472 imx_usb->dev = &pdev->dev;
1474 device_initialize(&imx_usb->gadget.dev);
1476 imx_usb->gadget.dev.parent = &pdev->dev;
1477 imx_usb->gadget.dev.dma_mask = pdev->dev.dma_mask;
1479 platform_set_drvdata(pdev, imx_usb);
1481 usb_init_data(imx_usb);
1482 imx_udc_init(imx_usb);
1484 init_timer(&imx_usb->timer);
1485 imx_usb->timer.function = handle_config;
1486 imx_usb->timer.data = (unsigned long)imx_usb;
1505 struct imx_udc_struct *imx_usb = platform_get_drvdata(pdev);
1509 imx_udc_disable(imx_usb);
1510 del_timer(&imx_usb->timer);
1513 free_irq(imx_usb->usbd_int[i], imx_usb);
1515 clk_put(imx_usb->clk);
1516 clk_disable(imx_usb->clk);
1517 iounmap(imx_usb->base);
1519 release_mem_region(imx_usb->res->start, resource_size(imx_usb->res));