Lines Matching refs:dev

116 		dev_dbg(ep->dev->dev, "%s %s %02x !NAK\n",  in assert_out_naking()
177 struct net2272 *dev; in net2272_enable() local
187 dev = ep->dev; in net2272_enable()
188 if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_enable()
193 spin_lock_irqsave(&dev->lock, flags); in net2272_enable()
210 if ((dev->gadget.speed == USB_SPEED_HIGH && max != 512) || in net2272_enable()
211 (dev->gadget.speed == USB_SPEED_FULL && max > 64)) { in net2272_enable()
212 spin_unlock_irqrestore(&dev->lock, flags); in net2272_enable()
230 tmp = (1 << ep->num) | net2272_read(dev, IRQENB0); in net2272_enable()
231 net2272_write(dev, IRQENB0, tmp); in net2272_enable()
239 dev_dbg(dev->dev, "enabled %s (ep%d%s-%s) max %04x cfg %02x\n", in net2272_enable()
244 spin_unlock_irqrestore(&dev->lock, flags); in net2272_enable()
303 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_disable()
307 dev_vdbg(ep->dev->dev, "disabled %s\n", _ep->name); in net2272_disable()
309 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_disable()
348 struct net2272 *dev; in net2272_done() local
352 if (ep->dev->protocol_stall) { in net2272_done()
366 dev = ep->dev; in net2272_done()
368 usb_gadget_unmap_request(&dev->gadget, &req->req, in net2272_done()
372 dev_vdbg(dev->dev, "complete %s req %p stat %d len %u/%u buf %p\n", in net2272_done()
378 spin_unlock(&dev->lock); in net2272_done()
380 spin_lock(&dev->lock); in net2272_done()
388 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_write_packet()
396 dev_vdbg(ep->dev->dev, "write packet %s req %p max %u len %u avail %u\n", in net2272_write_packet()
412 tmp = net2272_read(ep->dev, LOCCTL); in net2272_write_packet()
413 net2272_write(ep->dev, LOCCTL, tmp & ~(1 << DATA_WIDTH)); in net2272_write_packet()
415 net2272_write(ep->dev, LOCCTL, tmp); in net2272_write_packet()
428 dev_vdbg(ep->dev->dev, "write_fifo %s actual %d len %d\n", in net2272_write_fifo()
496 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_read_packet()
502 dev_vdbg(ep->dev->dev, "read packet %s req %p len %u avail %u\n", in net2272_read_packet()
543 dev_vdbg(ep->dev->dev, "read_fifo %s actual %d len %d\n", in net2272_read_fifo()
562 dev_err(ep->dev->dev, in net2272_read_fifo()
623 net2272_request_dma(struct net2272 *dev, unsigned ep, u32 buf, in net2272_request_dma() argument
626 dev_vdbg(dev->dev, "request_dma ep %d buf %08x len %d dir %d\n", in net2272_request_dma()
630 if (dev->dma_busy) in net2272_request_dma()
639 dev->dma_busy = 1; in net2272_request_dma()
644 switch (dev->dev_id) { in net2272_request_dma()
656 dev->rdk1.plx9054_base_addr + DMAMODE0); in net2272_request_dma()
658 writel(0x100000, dev->rdk1.plx9054_base_addr + DMALADR0); in net2272_request_dma()
659 writel(buf, dev->rdk1.plx9054_base_addr + DMAPADR0); in net2272_request_dma()
660 writel(len, dev->rdk1.plx9054_base_addr + DMASIZ0); in net2272_request_dma()
663 dev->rdk1.plx9054_base_addr + DMADPR0); in net2272_request_dma()
665 readl(dev->rdk1.plx9054_base_addr + INTCSR), in net2272_request_dma()
666 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_request_dma()
672 net2272_write(dev, DMAREQ, in net2272_request_dma()
676 (dev->dma_eot_polarity << EOT_POLARITY) | in net2272_request_dma()
677 (dev->dma_dack_polarity << DACK_POLARITY) | in net2272_request_dma()
678 (dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_request_dma()
681 (void) net2272_read(dev, SCRATCH); in net2272_request_dma()
687 net2272_start_dma(struct net2272 *dev) in net2272_start_dma() argument
691 switch (dev->dev_id) { in net2272_start_dma()
694 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_start_dma()
716 dev_vdbg(ep->dev->dev, "kick_dma %s req %p dma %08llx\n", in net2272_kick_dma()
722 if (ep->dev->dma_busy) in net2272_kick_dma()
734 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 0)) in net2272_kick_dma()
744 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 1)) in net2272_kick_dma()
763 net2272_write(ep->dev, DMAREQ, in net2272_kick_dma()
767 (ep->dev->dma_eot_polarity << EOT_POLARITY) | in net2272_kick_dma()
768 (ep->dev->dma_dack_polarity << DACK_POLARITY) | in net2272_kick_dma()
769 (ep->dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_kick_dma()
779 net2272_start_dma(ep->dev); in net2272_kick_dma()
784 static void net2272_cancel_dma(struct net2272 *dev) in net2272_cancel_dma() argument
787 switch (dev->dev_id) { in net2272_cancel_dma()
789 writeb(0, dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
790 writeb(1 << CHANNEL_ABORT, dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
791 while (!(readb(dev->rdk1.plx9054_base_addr + DMACSR0) & in net2272_cancel_dma()
797 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
802 dev->dma_busy = 0; in net2272_cancel_dma()
812 struct net2272 *dev; in net2272_queue() local
824 dev = ep->dev; in net2272_queue()
825 if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_queue()
830 status = usb_gadget_map_request(&dev->gadget, _req, in net2272_queue()
836 dev_vdbg(dev->dev, "%s queue req %p, len %d buf %p dma %08llx %s\n", in net2272_queue()
840 spin_lock_irqsave(&dev->lock, flags); in net2272_queue()
850 dev_vdbg(dev->dev, "%s status ack\n", ep->ep.name); in net2272_queue()
860 dev_dbg(dev->dev, "WARNING: returning ZLP short packet termination!\n"); in net2272_queue()
902 spin_unlock_irqrestore(&dev->lock, flags); in net2272_queue()
937 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_dequeue()
950 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
956 dev_dbg(ep->dev->dev, "unlink (%s) pio\n", _ep->name); in net2272_dequeue()
961 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
977 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_set_halt_and_wedge()
982 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
988 dev_vdbg(ep->dev->dev, "%s %s %s\n", _ep->name, in net2272_set_halt_and_wedge()
994 ep->dev->protocol_stall = 1; in net2272_set_halt_and_wedge()
1004 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1032 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_status()
1052 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_flush()
1079 struct net2272 *dev; in net2272_get_frame() local
1085 dev = container_of(_gadget, struct net2272, gadget); in net2272_get_frame()
1086 spin_lock_irqsave(&dev->lock, flags); in net2272_get_frame()
1088 ret = net2272_read(dev, FRAME1) << 8; in net2272_get_frame()
1089 ret |= net2272_read(dev, FRAME0); in net2272_get_frame()
1091 spin_unlock_irqrestore(&dev->lock, flags); in net2272_get_frame()
1098 struct net2272 *dev; in net2272_wakeup() local
1104 dev = container_of(_gadget, struct net2272, gadget); in net2272_wakeup()
1106 spin_lock_irqsave(&dev->lock, flags); in net2272_wakeup()
1107 tmp = net2272_read(dev, USBCTL0); in net2272_wakeup()
1109 net2272_write(dev, USBCTL1, (1 << GENERATE_RESUME)); in net2272_wakeup()
1111 spin_unlock_irqrestore(&dev->lock, flags); in net2272_wakeup()
1130 struct net2272 *dev; in net2272_pullup() local
1136 dev = container_of(_gadget, struct net2272, gadget); in net2272_pullup()
1138 spin_lock_irqsave(&dev->lock, flags); in net2272_pullup()
1139 tmp = net2272_read(dev, USBCTL0); in net2272_pullup()
1140 dev->softconnect = (is_on != 0); in net2272_pullup()
1145 net2272_write(dev, USBCTL0, tmp); in net2272_pullup()
1146 spin_unlock_irqrestore(&dev->lock, flags); in net2272_pullup()
1171 struct net2272 *dev; in registers_show() local
1179 dev = dev_get_drvdata(_dev); in registers_show()
1182 spin_lock_irqsave(&dev->lock, flags); in registers_show()
1189 driver_name, driver_vers, dev->chiprev, in registers_show()
1190 net2272_read(dev, LOCCTL), in registers_show()
1191 net2272_read(dev, IRQENB0), in registers_show()
1192 net2272_read(dev, IRQENB1), in registers_show()
1193 net2272_read(dev, IRQSTAT0), in registers_show()
1194 net2272_read(dev, IRQSTAT1)); in registers_show()
1199 t1 = net2272_read(dev, DMAREQ); in registers_show()
1210 t1 = net2272_read(dev, USBCTL1); in registers_show()
1214 else if (dev->gadget.speed == USB_SPEED_UNKNOWN) in registers_show()
1222 net2272_read(dev, USBCTL0), t1, in registers_show()
1223 net2272_read(dev, OURADDR), s); in registers_show()
1231 ep = &dev->ep[i]; in registers_show()
1284 spin_unlock_irqrestore(&dev->lock, flags); in registers_show()
1293 net2272_set_fifo_mode(struct net2272 *dev, int mode) in net2272_set_fifo_mode() argument
1297 tmp = net2272_read(dev, LOCCTL) & 0x3f; in net2272_set_fifo_mode()
1299 net2272_write(dev, LOCCTL, tmp); in net2272_set_fifo_mode()
1301 INIT_LIST_HEAD(&dev->gadget.ep_list); in net2272_set_fifo_mode()
1304 list_add_tail(&dev->ep[1].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1308 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1309 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1312 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1313 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1314 dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1317 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1318 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 1024; in net2272_set_fifo_mode()
1321 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1326 list_add_tail(&dev->ep[3].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1327 dev->ep[3].fifo_size = 512; in net2272_set_fifo_mode()
1333 net2272_usb_reset(struct net2272 *dev) in net2272_usb_reset() argument
1335 dev->gadget.speed = USB_SPEED_UNKNOWN; in net2272_usb_reset()
1337 net2272_cancel_dma(dev); in net2272_usb_reset()
1339 net2272_write(dev, IRQENB0, 0); in net2272_usb_reset()
1340 net2272_write(dev, IRQENB1, 0); in net2272_usb_reset()
1343 net2272_write(dev, IRQSTAT0, 0xff); in net2272_usb_reset()
1344 net2272_write(dev, IRQSTAT1, ~(1 << SUSPEND_REQUEST_INTERRUPT)); in net2272_usb_reset()
1346 net2272_write(dev, DMAREQ, in net2272_usb_reset()
1350 (dev->dma_eot_polarity << EOT_POLARITY) | in net2272_usb_reset()
1351 (dev->dma_dack_polarity << DACK_POLARITY) | in net2272_usb_reset()
1352 (dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_usb_reset()
1355 net2272_cancel_dma(dev); in net2272_usb_reset()
1356 net2272_set_fifo_mode(dev, (fifo_mode <= 3) ? fifo_mode : 0); in net2272_usb_reset()
1362 net2272_write(dev, LOCCTL, net2272_read(dev, LOCCTL) | (1 << DATA_WIDTH)); in net2272_usb_reset()
1363 net2272_write(dev, LOCCTL1, (dma_mode << DMA_MODE)); in net2272_usb_reset()
1367 net2272_usb_reinit(struct net2272 *dev) in net2272_usb_reinit() argument
1373 struct net2272_ep *ep = &dev->ep[i]; in net2272_usb_reinit()
1376 ep->dev = dev; in net2272_usb_reinit()
1400 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1402 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1403 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1404 INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); in net2272_usb_reinit()
1408 net2272_ep0_start(struct net2272 *dev) in net2272_ep0_start() argument
1410 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1418 net2272_write(dev, USBCTL0, in net2272_ep0_start()
1419 (dev->softconnect << USB_DETECT_ENABLE) | in net2272_ep0_start()
1422 net2272_write(dev, IRQENB0, in net2272_ep0_start()
1426 net2272_write(dev, IRQENB1, in net2272_ep0_start()
1441 struct net2272 *dev; in net2272_start() local
1448 dev = container_of(_gadget, struct net2272, gadget); in net2272_start()
1451 dev->ep[i].irqs = 0; in net2272_start()
1453 dev->softconnect = 1; in net2272_start()
1454 dev->driver = driver; in net2272_start()
1459 net2272_ep0_start(dev); in net2272_start()
1465 stop_activity(struct net2272 *dev, struct usb_gadget_driver *driver) in stop_activity() argument
1470 if (dev->gadget.speed == USB_SPEED_UNKNOWN) in stop_activity()
1476 net2272_usb_reset(dev); in stop_activity()
1478 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1481 if (dev->async_callbacks && driver) { in stop_activity()
1482 spin_unlock(&dev->lock); in stop_activity()
1483 driver->disconnect(&dev->gadget); in stop_activity()
1484 spin_lock(&dev->lock); in stop_activity()
1487 net2272_usb_reinit(dev); in stop_activity()
1492 struct net2272 *dev; in net2272_stop() local
1495 dev = container_of(_gadget, struct net2272, gadget); in net2272_stop()
1497 spin_lock_irqsave(&dev->lock, flags); in net2272_stop()
1498 stop_activity(dev, NULL); in net2272_stop()
1499 spin_unlock_irqrestore(&dev->lock, flags); in net2272_stop()
1501 dev->driver = NULL; in net2272_stop()
1508 struct net2272 *dev = container_of(_gadget, struct net2272, gadget); in net2272_async_callbacks() local
1510 spin_lock_irq(&dev->lock); in net2272_async_callbacks()
1511 dev->async_callbacks = enable; in net2272_async_callbacks()
1512 spin_unlock_irq(&dev->lock); in net2272_async_callbacks()
1530 dev_vdbg(ep->dev->dev, "handle_dma %s req %p\n", ep->ep.name, req); in net2272_handle_dma()
1533 net2272_write(ep->dev, DMAREQ, in net2272_handle_dma()
1537 | (ep->dev->dma_eot_polarity << EOT_POLARITY) in net2272_handle_dma()
1538 | (ep->dev->dma_dack_polarity << DACK_POLARITY) in net2272_handle_dma()
1539 | (ep->dev->dma_dreq_polarity << DREQ_POLARITY) in net2272_handle_dma()
1542 ep->dev->dma_busy = 0; in net2272_handle_dma()
1568 if (net2272_read(ep->dev, IRQSTAT0) & in net2272_handle_dma()
1571 net2272_cancel_dma(ep->dev); in net2272_handle_dma()
1612 dev_vdbg(ep->dev->dev, "%s ack ep_stat0 %02x, ep_stat1 %02x, req %p\n", in net2272_handle_ep()
1632 net2272_get_ep_by_addr(struct net2272 *dev, u16 wIndex) in net2272_get_ep_by_addr() argument
1637 return &dev->ep[0]; in net2272_get_ep_by_addr()
1639 list_for_each_entry(ep, &dev->gadget.ep_list, ep.ep_list) { in net2272_get_ep_by_addr()
1672 net2272_set_test_mode(struct net2272 *dev, int mode) in net2272_set_test_mode() argument
1679 net2272_write(dev, IRQENB0, 0x00); in net2272_set_test_mode()
1680 net2272_write(dev, IRQENB1, 0x00); in net2272_set_test_mode()
1683 net2272_write(dev, XCVRDIAG, 1 << FORCE_HIGH_SPEED); in net2272_set_test_mode()
1685 net2272_write(dev, PAGESEL, 0); in net2272_set_test_mode()
1686 net2272_write(dev, EP_STAT0, 1 << DATA_PACKET_TRANSMITTED_INTERRUPT); in net2272_set_test_mode()
1687 net2272_write(dev, EP_RSPCLR, in net2272_set_test_mode()
1690 net2272_write(dev, EP_CFG, 1 << ENDPOINT_DIRECTION); in net2272_set_test_mode()
1691 net2272_write(dev, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_set_test_mode()
1694 while (!(net2272_read(dev, EP_STAT0) & in net2272_set_test_mode()
1699 net2272_write(dev, USBTEST, mode); in net2272_set_test_mode()
1704 net2272_write(dev, LOCCTL, net2272_read(dev, LOCCTL) & in net2272_set_test_mode()
1708 net2272_write(dev, EP_DATA, net2272_test_packet[i]); in net2272_set_test_mode()
1711 net2272_write(dev, EP_TRANSFER0, 0); in net2272_set_test_mode()
1716 net2272_handle_stat0_irqs(struct net2272 *dev, u8 stat) in net2272_handle_stat0_irqs() argument
1730 if (dev->gadget.speed == USB_SPEED_UNKNOWN) { in net2272_handle_stat0_irqs()
1731 if (net2272_read(dev, USBCTL1) & (1 << USB_HIGH_SPEED)) in net2272_handle_stat0_irqs()
1732 dev->gadget.speed = USB_SPEED_HIGH; in net2272_handle_stat0_irqs()
1734 dev->gadget.speed = USB_SPEED_FULL; in net2272_handle_stat0_irqs()
1735 dev_dbg(dev->dev, "%s\n", in net2272_handle_stat0_irqs()
1736 usb_speed_string(dev->gadget.speed)); in net2272_handle_stat0_irqs()
1739 ep = &dev->ep[0]; in net2272_handle_stat0_irqs()
1751 dev->protocol_stall = 0; in net2272_handle_stat0_irqs()
1776 net2272_write(dev, PAGESEL, 0); in net2272_handle_stat0_irqs()
1777 net2272_write(dev, EP_TRANSFER2, 0xff); in net2272_handle_stat0_irqs()
1778 net2272_write(dev, EP_TRANSFER1, 0xff); in net2272_handle_stat0_irqs()
1779 net2272_write(dev, EP_TRANSFER0, 0xff); in net2272_handle_stat0_irqs()
1781 u.raw[0] = net2272_read(dev, SETUP0); in net2272_handle_stat0_irqs()
1782 u.raw[1] = net2272_read(dev, SETUP1); in net2272_handle_stat0_irqs()
1783 u.raw[2] = net2272_read(dev, SETUP2); in net2272_handle_stat0_irqs()
1784 u.raw[3] = net2272_read(dev, SETUP3); in net2272_handle_stat0_irqs()
1785 u.raw[4] = net2272_read(dev, SETUP4); in net2272_handle_stat0_irqs()
1786 u.raw[5] = net2272_read(dev, SETUP5); in net2272_handle_stat0_irqs()
1787 u.raw[6] = net2272_read(dev, SETUP6); in net2272_handle_stat0_irqs()
1788 u.raw[7] = net2272_read(dev, SETUP7); in net2272_handle_stat0_irqs()
1798 net2272_write(dev, IRQSTAT0, 1 << SETUP_PACKET_INTERRUPT); in net2272_handle_stat0_irqs()
1825 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1834 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1835 writew(status, net2272_reg_addr(dev, EP_DATA)); in net2272_handle_stat0_irqs()
1836 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1838 dev_vdbg(dev->dev, "%s stat %02x\n", in net2272_handle_stat0_irqs()
1844 if (dev->gadget.is_selfpowered) in net2272_handle_stat0_irqs()
1848 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1849 writew(status, net2272_reg_addr(dev, EP_DATA)); in net2272_handle_stat0_irqs()
1850 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1852 dev_vdbg(dev->dev, "device stat %02x\n", status); in net2272_handle_stat0_irqs()
1859 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1860 writew(status, net2272_reg_addr(dev, EP_DATA)); in net2272_handle_stat0_irqs()
1861 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1863 dev_vdbg(dev->dev, "interface status %02x\n", status); in net2272_handle_stat0_irqs()
1877 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1881 dev_vdbg(dev->dev, "%s wedged, halt not cleared\n", in net2272_handle_stat0_irqs()
1884 dev_vdbg(dev->dev, "%s clear halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1895 net2272_set_test_mode(dev, (u.r.wIndex >> 8)); in net2272_handle_stat0_irqs()
1897 dev_vdbg(dev->dev, "test mode: %d\n", u.r.wIndex); in net2272_handle_stat0_irqs()
1904 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1909 dev_vdbg(dev->dev, "%s set halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1913 net2272_write(dev, OURADDR, u.r.wValue & 0xff); in net2272_handle_stat0_irqs()
1919 dev_vdbg(dev->dev, "setup %02x.%02x v%04x i%04x " in net2272_handle_stat0_irqs()
1924 if (dev->async_callbacks) { in net2272_handle_stat0_irqs()
1925 spin_unlock(&dev->lock); in net2272_handle_stat0_irqs()
1926 tmp = dev->driver->setup(&dev->gadget, &u.r); in net2272_handle_stat0_irqs()
1927 spin_lock(&dev->lock); in net2272_handle_stat0_irqs()
1934 dev_vdbg(dev->dev, "req %02x.%02x protocol STALL; stat %d\n", in net2272_handle_stat0_irqs()
1936 dev->protocol_stall = 1; in net2272_handle_stat0_irqs()
1940 net2272_cancel_dma(dev); in net2272_handle_stat0_irqs()
1941 net2272_write(dev, IRQSTAT0, 1 << DMA_DONE_INTERRUPT); in net2272_handle_stat0_irqs()
1943 num = (net2272_read(dev, DMAREQ) & (1 << DMA_ENDPOINT_SELECT)) in net2272_handle_stat0_irqs()
1946 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1963 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1971 dev_dbg(dev->dev, "unhandled irqstat0 %02x\n", stat); in net2272_handle_stat0_irqs()
1975 net2272_handle_stat1_irqs(struct net2272 *dev, u8 stat) in net2272_handle_stat1_irqs() argument
1991 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
1992 if (dev->gadget.speed != USB_SPEED_UNKNOWN) { in net2272_handle_stat1_irqs()
1994 (net2272_read(dev, USBCTL1) & in net2272_handle_stat1_irqs()
1997 dev_dbg(dev->dev, "disconnect %s\n", in net2272_handle_stat1_irqs()
1998 dev->driver->driver.name); in net2272_handle_stat1_irqs()
2000 (net2272_read(dev, USBCTL1) & mask) in net2272_handle_stat1_irqs()
2003 dev_dbg(dev->dev, "reset %s\n", in net2272_handle_stat1_irqs()
2004 dev->driver->driver.name); in net2272_handle_stat1_irqs()
2008 stop_activity(dev, dev->driver); in net2272_handle_stat1_irqs()
2009 net2272_ep0_start(dev); in net2272_handle_stat1_irqs()
2010 if (dev->async_callbacks) { in net2272_handle_stat1_irqs()
2011 spin_unlock(&dev->lock); in net2272_handle_stat1_irqs()
2013 usb_gadget_udc_reset(&dev->gadget, dev->driver); in net2272_handle_stat1_irqs()
2015 (dev->driver->disconnect)(&dev->gadget); in net2272_handle_stat1_irqs()
2016 spin_lock(&dev->lock); in net2272_handle_stat1_irqs()
2029 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
2031 if (dev->async_callbacks && dev->driver->suspend) in net2272_handle_stat1_irqs()
2032 dev->driver->suspend(&dev->gadget); in net2272_handle_stat1_irqs()
2035 dev_dbg(dev->dev, "Suspend disabled, ignoring\n"); in net2272_handle_stat1_irqs()
2038 if (dev->async_callbacks && dev->driver->resume) in net2272_handle_stat1_irqs()
2039 dev->driver->resume(&dev->gadget); in net2272_handle_stat1_irqs()
2046 net2272_write(dev, IRQSTAT1, stat); in net2272_handle_stat1_irqs()
2055 dev_dbg(dev->dev, "unhandled irqstat1 %02x\n", stat); in net2272_handle_stat1_irqs()
2060 struct net2272 *dev = _dev; in net2272_irq() local
2067 spin_lock(&dev->lock); in net2272_irq()
2069 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2073 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2074 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2075 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2076 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2078 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2082 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_irq()
2084 dmareq = net2272_read(dev, DMAREQ); in net2272_irq()
2086 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2088 net2272_handle_dma(&dev->ep[1]); in net2272_irq()
2093 intcsr = readl(dev->rdk2.fpga_base_addr + RDK2_IRQSTAT); in net2272_irq()
2095 spin_unlock(&dev->lock); in net2272_irq()
2102 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2103 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2105 spin_unlock(&dev->lock); in net2272_irq()
2110 static int net2272_present(struct net2272 *dev) in net2272_present() argument
2125 refval = net2272_read(dev, SCRATCH); in net2272_present()
2127 net2272_write(dev, SCRATCH, ii); in net2272_present()
2128 val = net2272_read(dev, SCRATCH); in net2272_present()
2130 dev_dbg(dev->dev, in net2272_present()
2138 net2272_write(dev, SCRATCH, refval); in net2272_present()
2141 refval = net2272_read(dev, CHIPREV_2272); in net2272_present()
2143 net2272_write(dev, CHIPREV_2272, ii); in net2272_present()
2144 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2146 dev_dbg(dev->dev, in net2272_present()
2161 val = net2272_read(dev, CHIPREV_LEGACY); in net2272_present()
2167 dev_dbg(dev->dev, in net2272_present()
2179 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2186 dev_dbg(dev->dev, in net2272_present()
2194 dev_dbg(dev->dev, in net2272_present()
2212 struct net2272 *dev = container_of(_dev, struct net2272, gadget.dev); in net2272_gadget_release() local
2214 kfree(dev); in net2272_gadget_release()
2220 net2272_remove(struct net2272 *dev) in net2272_remove() argument
2222 if (dev->added) in net2272_remove()
2223 usb_del_gadget(&dev->gadget); in net2272_remove()
2224 free_irq(dev->irq, dev); in net2272_remove()
2225 iounmap(dev->base_addr); in net2272_remove()
2226 device_remove_file(dev->dev, &dev_attr_registers); in net2272_remove()
2228 dev_info(dev->dev, "unbind\n"); in net2272_remove()
2231 static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq) in net2272_probe_init() argument
2236 dev_dbg(dev, "No IRQ!\n"); in net2272_probe_init()
2247 ret->dev = dev; in net2272_probe_init()
2253 usb_initialize_gadget(dev, &ret->gadget, net2272_gadget_release); in net2272_probe_init()
2259 net2272_probe_fin(struct net2272 *dev, unsigned int irqflags) in net2272_probe_fin() argument
2264 if (net2272_present(dev)) { in net2272_probe_fin()
2265 dev_warn(dev->dev, "2272 not found!\n"); in net2272_probe_fin()
2270 net2272_usb_reset(dev); in net2272_probe_fin()
2271 net2272_usb_reinit(dev); in net2272_probe_fin()
2273 ret = request_irq(dev->irq, net2272_irq, irqflags, driver_name, dev); in net2272_probe_fin()
2275 dev_err(dev->dev, "request interrupt %i failed\n", dev->irq); in net2272_probe_fin()
2279 dev->chiprev = net2272_read(dev, CHIPREV_2272); in net2272_probe_fin()
2282 dev_info(dev->dev, "%s\n", driver_desc); in net2272_probe_fin()
2283 dev_info(dev->dev, "irq %i, mem %p, chip rev %04x, dma %s\n", in net2272_probe_fin()
2284 dev->irq, dev->base_addr, dev->chiprev, in net2272_probe_fin()
2286 dev_info(dev->dev, "version: %s\n", driver_vers); in net2272_probe_fin()
2288 ret = device_create_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2292 ret = usb_add_gadget(&dev->gadget); in net2272_probe_fin()
2295 dev->added = 1; in net2272_probe_fin()
2300 device_remove_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2302 free_irq(dev->irq, dev); in net2272_probe_fin()
2315 net2272_rdk1_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_probe() argument
2337 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk1_probe()
2345 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk1_probe()
2351 dev->rdk1.plx9054_base_addr = mem_mapped_addr[0]; in net2272_rdk1_probe()
2352 dev->rdk1.epld_base_addr = mem_mapped_addr[2]; in net2272_rdk1_probe()
2353 dev->base_addr = mem_mapped_addr[3]; in net2272_rdk1_probe()
2356 tmp = readl(dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2358 dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2361 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) | in net2272_rdk1_probe()
2364 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_probe()
2367 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_rdk1_probe()
2377 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2380 writeb(readb(dev->base_addr + EPLD_IO_CONTROL_REGISTER) & in net2272_rdk1_probe()
2382 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2400 net2272_rdk2_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_probe() argument
2417 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk2_probe()
2425 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk2_probe()
2431 dev->rdk2.fpga_base_addr = mem_mapped_addr[0]; in net2272_rdk2_probe()
2432 dev->base_addr = mem_mapped_addr[1]; in net2272_rdk2_probe()
2436 writel((1 << CHIP_RESET), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2438 writel((1 << BUS_WIDTH), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2440 dev_info(dev->dev, "RDK2 FPGA version %08x\n", in net2272_rdk2_probe()
2441 readl(dev->rdk2.fpga_base_addr + RDK2_FPGAREV)); in net2272_rdk2_probe()
2443 writel((1 << NET2272_PCI_IRQ), dev->rdk2.fpga_base_addr + RDK2_IRQENB); in net2272_rdk2_probe()
2460 struct net2272 *dev; in net2272_pci_probe() local
2463 dev = net2272_probe_init(&pdev->dev, pdev->irq); in net2272_pci_probe()
2464 if (IS_ERR(dev)) in net2272_pci_probe()
2465 return PTR_ERR(dev); in net2272_pci_probe()
2466 dev->dev_id = pdev->device; in net2272_pci_probe()
2476 case PCI_DEVICE_ID_RDK1: ret = net2272_rdk1_probe(pdev, dev); break; in net2272_pci_probe()
2477 case PCI_DEVICE_ID_RDK2: ret = net2272_rdk2_probe(pdev, dev); break; in net2272_pci_probe()
2483 ret = net2272_probe_fin(dev, 0); in net2272_pci_probe()
2487 pci_set_drvdata(pdev, dev); in net2272_pci_probe()
2494 usb_put_gadget(&dev->gadget); in net2272_pci_probe()
2500 net2272_rdk1_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_remove() argument
2505 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) & in net2272_rdk1_remove()
2507 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_remove()
2510 iounmap(dev->rdk1.plx9054_base_addr); in net2272_rdk1_remove()
2511 iounmap(dev->rdk1.epld_base_addr); in net2272_rdk1_remove()
2522 net2272_rdk2_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_remove() argument
2533 iounmap(dev->rdk2.fpga_base_addr); in net2272_rdk2_remove()
2543 struct net2272 *dev = pci_get_drvdata(pdev); in net2272_pci_remove() local
2545 net2272_remove(dev); in net2272_pci_remove()
2548 case PCI_DEVICE_ID_RDK1: net2272_rdk1_remove(pdev, dev); break; in net2272_pci_remove()
2549 case PCI_DEVICE_ID_RDK2: net2272_rdk2_remove(pdev, dev); break; in net2272_pci_remove()
2555 usb_put_gadget(&dev->gadget); in net2272_pci_remove()
2608 struct net2272 *dev; in net2272_plat_probe() local
2618 dev_err(&pdev->dev, "must provide irq/base addr"); in net2272_plat_probe()
2622 dev = net2272_probe_init(&pdev->dev, irq_res->start); in net2272_plat_probe()
2623 if (IS_ERR(dev)) in net2272_plat_probe()
2624 return PTR_ERR(dev); in net2272_plat_probe()
2639 dev->base_shift = iomem_bus->start; in net2272_plat_probe()
2642 dev_dbg(dev->dev, "get request memory region!\n"); in net2272_plat_probe()
2646 dev->base_addr = ioremap(base, len); in net2272_plat_probe()
2647 if (!dev->base_addr) { in net2272_plat_probe()
2648 dev_dbg(dev->dev, "can't map memory\n"); in net2272_plat_probe()
2653 ret = net2272_probe_fin(dev, irqflags); in net2272_plat_probe()
2657 platform_set_drvdata(pdev, dev); in net2272_plat_probe()
2658 dev_info(&pdev->dev, "running in 16-bit, %sbyte swap local bus mode\n", in net2272_plat_probe()
2659 (net2272_read(dev, LOCCTL) & (1 << BYTE_SWAP)) ? "" : "no "); in net2272_plat_probe()
2664 iounmap(dev->base_addr); in net2272_plat_probe()
2668 usb_put_gadget(&dev->gadget); in net2272_plat_probe()
2676 struct net2272 *dev = platform_get_drvdata(pdev); in net2272_plat_remove() local
2678 net2272_remove(dev); in net2272_plat_remove()
2683 usb_put_gadget(&dev->gadget); in net2272_plat_remove()