Lines Matching refs:dev

130 		dev_dbg(ep->dev->dev, "%s %s %02x !NAK\n",  in assert_out_naking()
191 struct net2272 *dev; in net2272_enable() local
201 dev = ep->dev; in net2272_enable()
202 if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_enable()
207 spin_lock_irqsave(&dev->lock, flags); in net2272_enable()
224 if ((dev->gadget.speed == USB_SPEED_HIGH && max != 512) || in net2272_enable()
225 (dev->gadget.speed == USB_SPEED_FULL && max > 64)) { in net2272_enable()
226 spin_unlock_irqrestore(&dev->lock, flags); in net2272_enable()
244 tmp = (1 << ep->num) | net2272_read(dev, IRQENB0); in net2272_enable()
245 net2272_write(dev, IRQENB0, tmp); in net2272_enable()
253 dev_dbg(dev->dev, "enabled %s (ep%d%s-%s) max %04x cfg %02x\n", in net2272_enable()
258 spin_unlock_irqrestore(&dev->lock, flags); in net2272_enable()
317 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_disable()
321 dev_vdbg(ep->dev->dev, "disabled %s\n", _ep->name); in net2272_disable()
323 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_disable()
366 struct net2272 *dev; in net2272_done() local
370 if (ep->dev->protocol_stall) { in net2272_done()
384 dev = ep->dev; in net2272_done()
386 usb_gadget_unmap_request(&dev->gadget, &req->req, in net2272_done()
390 dev_vdbg(dev->dev, "complete %s req %p stat %d len %u/%u buf %p\n", in net2272_done()
396 spin_unlock(&dev->lock); in net2272_done()
398 spin_lock(&dev->lock); in net2272_done()
406 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_write_packet()
414 dev_vdbg(ep->dev->dev, "write packet %s req %p max %u len %u avail %u\n", in net2272_write_packet()
430 tmp = net2272_read(ep->dev, LOCCTL); in net2272_write_packet()
431 net2272_write(ep->dev, LOCCTL, tmp & ~(1 << DATA_WIDTH)); in net2272_write_packet()
433 net2272_write(ep->dev, LOCCTL, tmp); in net2272_write_packet()
446 dev_vdbg(ep->dev->dev, "write_fifo %s actual %d len %d\n", in net2272_write_fifo()
514 u16 __iomem *ep_data = net2272_reg_addr(ep->dev, EP_DATA); in net2272_read_packet()
520 dev_vdbg(ep->dev->dev, "read packet %s req %p len %u avail %u\n", in net2272_read_packet()
562 dev_vdbg(ep->dev->dev, "read_fifo %s actual %d len %d\n", in net2272_read_fifo()
581 dev_err(ep->dev->dev, in net2272_read_fifo()
641 net2272_request_dma(struct net2272 *dev, unsigned ep, u32 buf, in net2272_request_dma() argument
644 dev_vdbg(dev->dev, "request_dma ep %d buf %08x len %d dir %d\n", in net2272_request_dma()
648 if (dev->dma_busy) in net2272_request_dma()
657 dev->dma_busy = 1; in net2272_request_dma()
662 switch (dev->dev_id) { in net2272_request_dma()
674 dev->rdk1.plx9054_base_addr + DMAMODE0); in net2272_request_dma()
676 writel(0x100000, dev->rdk1.plx9054_base_addr + DMALADR0); in net2272_request_dma()
677 writel(buf, dev->rdk1.plx9054_base_addr + DMAPADR0); in net2272_request_dma()
678 writel(len, dev->rdk1.plx9054_base_addr + DMASIZ0); in net2272_request_dma()
681 dev->rdk1.plx9054_base_addr + DMADPR0); in net2272_request_dma()
683 readl(dev->rdk1.plx9054_base_addr + INTCSR), in net2272_request_dma()
684 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_request_dma()
690 net2272_write(dev, DMAREQ, in net2272_request_dma()
694 (dev->dma_eot_polarity << EOT_POLARITY) | in net2272_request_dma()
695 (dev->dma_dack_polarity << DACK_POLARITY) | in net2272_request_dma()
696 (dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_request_dma()
699 (void) net2272_read(dev, SCRATCH); in net2272_request_dma()
705 net2272_start_dma(struct net2272 *dev) in net2272_start_dma() argument
709 switch (dev->dev_id) { in net2272_start_dma()
712 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_start_dma()
734 dev_vdbg(ep->dev->dev, "kick_dma %s req %p dma %08llx\n", in net2272_kick_dma()
740 if (ep->dev->dma_busy) in net2272_kick_dma()
752 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 0)) in net2272_kick_dma()
762 if (net2272_request_dma(ep->dev, ep->num, req->req.dma, size, 1)) in net2272_kick_dma()
781 net2272_write(ep->dev, DMAREQ, in net2272_kick_dma()
785 (ep->dev->dma_eot_polarity << EOT_POLARITY) | in net2272_kick_dma()
786 (ep->dev->dma_dack_polarity << DACK_POLARITY) | in net2272_kick_dma()
787 (ep->dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_kick_dma()
797 net2272_start_dma(ep->dev); in net2272_kick_dma()
802 static void net2272_cancel_dma(struct net2272 *dev) in net2272_cancel_dma() argument
805 switch (dev->dev_id) { in net2272_cancel_dma()
807 writeb(0, dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
808 writeb(1 << CHANNEL_ABORT, dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
809 while (!(readb(dev->rdk1.plx9054_base_addr + DMACSR0) & in net2272_cancel_dma()
815 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_cancel_dma()
820 dev->dma_busy = 0; in net2272_cancel_dma()
830 struct net2272 *dev; in net2272_queue() local
842 dev = ep->dev; in net2272_queue()
843 if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_queue()
848 status = usb_gadget_map_request(&dev->gadget, _req, in net2272_queue()
854 dev_vdbg(dev->dev, "%s queue req %p, len %d buf %p dma %08llx %s\n", in net2272_queue()
858 spin_lock_irqsave(&dev->lock, flags); in net2272_queue()
868 dev_vdbg(dev->dev, "%s status ack\n", ep->ep.name); in net2272_queue()
878 dev_dbg(dev->dev, "WARNING: returning ZLP short packet termination!\n"); in net2272_queue()
920 spin_unlock_irqrestore(&dev->lock, flags); in net2272_queue()
955 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_dequeue()
965 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
971 dev_dbg(ep->dev->dev, "unlink (%s) pio\n", _ep->name); in net2272_dequeue()
977 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_dequeue()
993 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_set_halt_and_wedge()
998 spin_lock_irqsave(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1004 dev_vdbg(ep->dev->dev, "%s %s %s\n", _ep->name, in net2272_set_halt_and_wedge()
1010 ep->dev->protocol_stall = 1; in net2272_set_halt_and_wedge()
1020 spin_unlock_irqrestore(&ep->dev->lock, flags); in net2272_set_halt_and_wedge()
1048 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_status()
1068 if (!ep->dev->driver || ep->dev->gadget.speed == USB_SPEED_UNKNOWN) in net2272_fifo_flush()
1095 struct net2272 *dev; in net2272_get_frame() local
1101 dev = container_of(_gadget, struct net2272, gadget); in net2272_get_frame()
1102 spin_lock_irqsave(&dev->lock, flags); in net2272_get_frame()
1104 ret = net2272_read(dev, FRAME1) << 8; in net2272_get_frame()
1105 ret |= net2272_read(dev, FRAME0); in net2272_get_frame()
1107 spin_unlock_irqrestore(&dev->lock, flags); in net2272_get_frame()
1114 struct net2272 *dev; in net2272_wakeup() local
1120 dev = container_of(_gadget, struct net2272, gadget); in net2272_wakeup()
1122 spin_lock_irqsave(&dev->lock, flags); in net2272_wakeup()
1123 tmp = net2272_read(dev, USBCTL0); in net2272_wakeup()
1125 net2272_write(dev, USBCTL1, (1 << GENERATE_RESUME)); in net2272_wakeup()
1127 spin_unlock_irqrestore(&dev->lock, flags); in net2272_wakeup()
1146 struct net2272 *dev; in net2272_pullup() local
1152 dev = container_of(_gadget, struct net2272, gadget); in net2272_pullup()
1154 spin_lock_irqsave(&dev->lock, flags); in net2272_pullup()
1155 tmp = net2272_read(dev, USBCTL0); in net2272_pullup()
1156 dev->softconnect = (is_on != 0); in net2272_pullup()
1161 net2272_write(dev, USBCTL0, tmp); in net2272_pullup()
1162 spin_unlock_irqrestore(&dev->lock, flags); in net2272_pullup()
1185 struct net2272 *dev; in registers_show() local
1193 dev = dev_get_drvdata(_dev); in registers_show()
1196 spin_lock_irqsave(&dev->lock, flags); in registers_show()
1198 if (dev->driver) in registers_show()
1199 s = dev->driver->driver.name; in registers_show()
1208 driver_name, driver_vers, dev->chiprev, in registers_show()
1209 net2272_read(dev, LOCCTL), in registers_show()
1210 net2272_read(dev, IRQENB0), in registers_show()
1211 net2272_read(dev, IRQENB1), in registers_show()
1212 net2272_read(dev, IRQSTAT0), in registers_show()
1213 net2272_read(dev, IRQSTAT1)); in registers_show()
1218 t1 = net2272_read(dev, DMAREQ); in registers_show()
1229 t1 = net2272_read(dev, USBCTL1); in registers_show()
1233 else if (dev->gadget.speed == USB_SPEED_UNKNOWN) in registers_show()
1241 net2272_read(dev, USBCTL0), t1, in registers_show()
1242 net2272_read(dev, OURADDR), s); in registers_show()
1250 ep = &dev->ep[i]; in registers_show()
1303 spin_unlock_irqrestore(&dev->lock, flags); in registers_show()
1312 net2272_set_fifo_mode(struct net2272 *dev, int mode) in net2272_set_fifo_mode() argument
1316 tmp = net2272_read(dev, LOCCTL) & 0x3f; in net2272_set_fifo_mode()
1318 net2272_write(dev, LOCCTL, tmp); in net2272_set_fifo_mode()
1320 INIT_LIST_HEAD(&dev->gadget.ep_list); in net2272_set_fifo_mode()
1323 list_add_tail(&dev->ep[1].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1327 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1328 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1331 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1332 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1333 dev->ep[2].fifo_size = 512; in net2272_set_fifo_mode()
1336 list_add_tail(&dev->ep[2].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1337 dev->ep[1].fifo_size = dev->ep[2].fifo_size = 1024; in net2272_set_fifo_mode()
1340 dev->ep[1].fifo_size = 1024; in net2272_set_fifo_mode()
1345 list_add_tail(&dev->ep[3].ep.ep_list, &dev->gadget.ep_list); in net2272_set_fifo_mode()
1346 dev->ep[3].fifo_size = 512; in net2272_set_fifo_mode()
1352 net2272_usb_reset(struct net2272 *dev) in net2272_usb_reset() argument
1354 dev->gadget.speed = USB_SPEED_UNKNOWN; in net2272_usb_reset()
1356 net2272_cancel_dma(dev); in net2272_usb_reset()
1358 net2272_write(dev, IRQENB0, 0); in net2272_usb_reset()
1359 net2272_write(dev, IRQENB1, 0); in net2272_usb_reset()
1362 net2272_write(dev, IRQSTAT0, 0xff); in net2272_usb_reset()
1363 net2272_write(dev, IRQSTAT1, ~(1 << SUSPEND_REQUEST_INTERRUPT)); in net2272_usb_reset()
1365 net2272_write(dev, DMAREQ, in net2272_usb_reset()
1369 (dev->dma_eot_polarity << EOT_POLARITY) | in net2272_usb_reset()
1370 (dev->dma_dack_polarity << DACK_POLARITY) | in net2272_usb_reset()
1371 (dev->dma_dreq_polarity << DREQ_POLARITY) | in net2272_usb_reset()
1374 net2272_cancel_dma(dev); in net2272_usb_reset()
1375 net2272_set_fifo_mode(dev, (fifo_mode <= 3) ? fifo_mode : 0); in net2272_usb_reset()
1381 net2272_write(dev, LOCCTL, net2272_read(dev, LOCCTL) | (1 << DATA_WIDTH)); in net2272_usb_reset()
1382 net2272_write(dev, LOCCTL1, (dma_mode << DMA_MODE)); in net2272_usb_reset()
1386 net2272_usb_reinit(struct net2272 *dev) in net2272_usb_reinit() argument
1392 struct net2272_ep *ep = &dev->ep[i]; in net2272_usb_reinit()
1395 ep->dev = dev; in net2272_usb_reinit()
1408 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1410 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1411 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1412 INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); in net2272_usb_reinit()
1416 net2272_ep0_start(struct net2272 *dev) in net2272_ep0_start() argument
1418 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1426 net2272_write(dev, USBCTL0, in net2272_ep0_start()
1427 (dev->softconnect << USB_DETECT_ENABLE) | in net2272_ep0_start()
1430 net2272_write(dev, IRQENB0, in net2272_ep0_start()
1434 net2272_write(dev, IRQENB1, in net2272_ep0_start()
1449 struct net2272 *dev; in net2272_start() local
1456 dev = container_of(_gadget, struct net2272, gadget); in net2272_start()
1459 dev->ep[i].irqs = 0; in net2272_start()
1461 dev->softconnect = 1; in net2272_start()
1463 dev->driver = driver; in net2272_start()
1468 net2272_ep0_start(dev); in net2272_start()
1474 stop_activity(struct net2272 *dev, struct usb_gadget_driver *driver) in stop_activity() argument
1479 if (dev->gadget.speed == USB_SPEED_UNKNOWN) in stop_activity()
1485 net2272_usb_reset(dev); in stop_activity()
1487 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1491 spin_unlock(&dev->lock); in stop_activity()
1492 driver->disconnect(&dev->gadget); in stop_activity()
1493 spin_lock(&dev->lock); in stop_activity()
1496 net2272_usb_reinit(dev); in stop_activity()
1501 struct net2272 *dev; in net2272_stop() local
1504 dev = container_of(_gadget, struct net2272, gadget); in net2272_stop()
1506 spin_lock_irqsave(&dev->lock, flags); in net2272_stop()
1507 stop_activity(dev, NULL); in net2272_stop()
1508 spin_unlock_irqrestore(&dev->lock, flags); in net2272_stop()
1510 dev->driver = NULL; in net2272_stop()
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 spin_unlock(&dev->lock); in net2272_handle_stat0_irqs()
1925 tmp = dev->driver->setup(&dev->gadget, &u.r); in net2272_handle_stat0_irqs()
1926 spin_lock(&dev->lock); in net2272_handle_stat0_irqs()
1932 dev_vdbg(dev->dev, "req %02x.%02x protocol STALL; stat %d\n", in net2272_handle_stat0_irqs()
1934 dev->protocol_stall = 1; in net2272_handle_stat0_irqs()
1938 net2272_cancel_dma(dev); in net2272_handle_stat0_irqs()
1939 net2272_write(dev, IRQSTAT0, 1 << DMA_DONE_INTERRUPT); in net2272_handle_stat0_irqs()
1941 num = (net2272_read(dev, DMAREQ) & (1 << DMA_ENDPOINT_SELECT)) in net2272_handle_stat0_irqs()
1944 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1961 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1969 dev_dbg(dev->dev, "unhandled irqstat0 %02x\n", stat); in net2272_handle_stat0_irqs()
1973 net2272_handle_stat1_irqs(struct net2272 *dev, u8 stat) in net2272_handle_stat1_irqs() argument
1989 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
1990 if (dev->gadget.speed != USB_SPEED_UNKNOWN) { in net2272_handle_stat1_irqs()
1992 (net2272_read(dev, USBCTL1) & in net2272_handle_stat1_irqs()
1995 dev_dbg(dev->dev, "disconnect %s\n", in net2272_handle_stat1_irqs()
1996 dev->driver->driver.name); in net2272_handle_stat1_irqs()
1998 (net2272_read(dev, USBCTL1) & mask) in net2272_handle_stat1_irqs()
2001 dev_dbg(dev->dev, "reset %s\n", in net2272_handle_stat1_irqs()
2002 dev->driver->driver.name); in net2272_handle_stat1_irqs()
2006 stop_activity(dev, dev->driver); in net2272_handle_stat1_irqs()
2007 net2272_ep0_start(dev); in net2272_handle_stat1_irqs()
2008 spin_unlock(&dev->lock); in net2272_handle_stat1_irqs()
2011 (&dev->gadget, dev->driver); in net2272_handle_stat1_irqs()
2013 (dev->driver->disconnect) in net2272_handle_stat1_irqs()
2014 (&dev->gadget); in net2272_handle_stat1_irqs()
2015 spin_lock(&dev->lock); in net2272_handle_stat1_irqs()
2027 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
2029 if (dev->driver->suspend) in net2272_handle_stat1_irqs()
2030 dev->driver->suspend(&dev->gadget); in net2272_handle_stat1_irqs()
2033 dev_dbg(dev->dev, "Suspend disabled, ignoring\n"); in net2272_handle_stat1_irqs()
2036 if (dev->driver->resume) in net2272_handle_stat1_irqs()
2037 dev->driver->resume(&dev->gadget); in net2272_handle_stat1_irqs()
2044 net2272_write(dev, IRQSTAT1, stat); in net2272_handle_stat1_irqs()
2053 dev_dbg(dev->dev, "unhandled irqstat1 %02x\n", stat); in net2272_handle_stat1_irqs()
2058 struct net2272 *dev = _dev; in net2272_irq() local
2065 spin_lock(&dev->lock); in net2272_irq()
2067 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2071 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2072 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2073 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2074 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2076 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2080 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_irq()
2082 dmareq = net2272_read(dev, DMAREQ); in net2272_irq()
2084 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2086 net2272_handle_dma(&dev->ep[1]); in net2272_irq()
2091 intcsr = readl(dev->rdk2.fpga_base_addr + RDK2_IRQSTAT); in net2272_irq()
2093 spin_unlock(&dev->lock); in net2272_irq()
2100 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2101 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2103 spin_unlock(&dev->lock); in net2272_irq()
2108 static int net2272_present(struct net2272 *dev) in net2272_present() argument
2123 refval = net2272_read(dev, SCRATCH); in net2272_present()
2125 net2272_write(dev, SCRATCH, ii); in net2272_present()
2126 val = net2272_read(dev, SCRATCH); in net2272_present()
2128 dev_dbg(dev->dev, in net2272_present()
2136 net2272_write(dev, SCRATCH, refval); in net2272_present()
2139 refval = net2272_read(dev, CHIPREV_2272); in net2272_present()
2141 net2272_write(dev, CHIPREV_2272, ii); in net2272_present()
2142 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2144 dev_dbg(dev->dev, in net2272_present()
2159 val = net2272_read(dev, CHIPREV_LEGACY); in net2272_present()
2165 dev_dbg(dev->dev, in net2272_present()
2177 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2184 dev_dbg(dev->dev, in net2272_present()
2192 dev_dbg(dev->dev, in net2272_present()
2210 struct net2272 *dev = dev_get_drvdata(_dev); in net2272_gadget_release() local
2211 kfree(dev); in net2272_gadget_release()
2217 net2272_remove(struct net2272 *dev) in net2272_remove() argument
2219 usb_del_gadget_udc(&dev->gadget); in net2272_remove()
2220 free_irq(dev->irq, dev); in net2272_remove()
2221 iounmap(dev->base_addr); in net2272_remove()
2222 device_remove_file(dev->dev, &dev_attr_registers); in net2272_remove()
2224 dev_info(dev->dev, "unbind\n"); in net2272_remove()
2227 static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq) in net2272_probe_init() argument
2232 dev_dbg(dev, "No IRQ!\n"); in net2272_probe_init()
2243 ret->dev = dev; in net2272_probe_init()
2254 net2272_probe_fin(struct net2272 *dev, unsigned int irqflags) in net2272_probe_fin() argument
2259 if (net2272_present(dev)) { in net2272_probe_fin()
2260 dev_warn(dev->dev, "2272 not found!\n"); in net2272_probe_fin()
2265 net2272_usb_reset(dev); in net2272_probe_fin()
2266 net2272_usb_reinit(dev); in net2272_probe_fin()
2268 ret = request_irq(dev->irq, net2272_irq, irqflags, driver_name, dev); in net2272_probe_fin()
2270 dev_err(dev->dev, "request interrupt %i failed\n", dev->irq); in net2272_probe_fin()
2274 dev->chiprev = net2272_read(dev, CHIPREV_2272); in net2272_probe_fin()
2277 dev_info(dev->dev, "%s\n", driver_desc); in net2272_probe_fin()
2278 dev_info(dev->dev, "irq %i, mem %p, chip rev %04x, dma %s\n", in net2272_probe_fin()
2279 dev->irq, dev->base_addr, dev->chiprev, in net2272_probe_fin()
2281 dev_info(dev->dev, "version: %s\n", driver_vers); in net2272_probe_fin()
2283 ret = device_create_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2287 ret = usb_add_gadget_udc_release(dev->dev, &dev->gadget, in net2272_probe_fin()
2295 device_remove_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2297 free_irq(dev->irq, dev); in net2272_probe_fin()
2310 net2272_rdk1_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_probe() argument
2332 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk1_probe()
2340 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk1_probe()
2346 dev->rdk1.plx9054_base_addr = mem_mapped_addr[0]; in net2272_rdk1_probe()
2347 dev->rdk1.epld_base_addr = mem_mapped_addr[2]; in net2272_rdk1_probe()
2348 dev->base_addr = mem_mapped_addr[3]; in net2272_rdk1_probe()
2351 tmp = readl(dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2353 dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2356 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) | in net2272_rdk1_probe()
2359 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_probe()
2362 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_rdk1_probe()
2372 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2375 writeb(readb(dev->base_addr + EPLD_IO_CONTROL_REGISTER) & in net2272_rdk1_probe()
2377 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2393 net2272_rdk2_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_probe() argument
2410 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk2_probe()
2418 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk2_probe()
2424 dev->rdk2.fpga_base_addr = mem_mapped_addr[0]; in net2272_rdk2_probe()
2425 dev->base_addr = mem_mapped_addr[1]; in net2272_rdk2_probe()
2429 writel((1 << CHIP_RESET), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2431 writel((1 << BUS_WIDTH), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2433 dev_info(dev->dev, "RDK2 FPGA version %08x\n", in net2272_rdk2_probe()
2434 readl(dev->rdk2.fpga_base_addr + RDK2_FPGAREV)); in net2272_rdk2_probe()
2436 writel((1 << NET2272_PCI_IRQ), dev->rdk2.fpga_base_addr + RDK2_IRQENB); in net2272_rdk2_probe()
2453 struct net2272 *dev; in net2272_pci_probe() local
2456 dev = net2272_probe_init(&pdev->dev, pdev->irq); in net2272_pci_probe()
2457 if (IS_ERR(dev)) in net2272_pci_probe()
2458 return PTR_ERR(dev); in net2272_pci_probe()
2459 dev->dev_id = pdev->device; in net2272_pci_probe()
2469 case PCI_DEVICE_ID_RDK1: ret = net2272_rdk1_probe(pdev, dev); break; in net2272_pci_probe()
2470 case PCI_DEVICE_ID_RDK2: ret = net2272_rdk2_probe(pdev, dev); break; in net2272_pci_probe()
2476 ret = net2272_probe_fin(dev, 0); in net2272_pci_probe()
2480 pci_set_drvdata(pdev, dev); in net2272_pci_probe()
2487 kfree(dev); in net2272_pci_probe()
2493 net2272_rdk1_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_remove() argument
2498 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) & in net2272_rdk1_remove()
2500 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_remove()
2503 iounmap(dev->rdk1.plx9054_base_addr); in net2272_rdk1_remove()
2504 iounmap(dev->rdk1.epld_base_addr); in net2272_rdk1_remove()
2515 net2272_rdk2_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_remove() argument
2526 iounmap(dev->rdk2.fpga_base_addr); in net2272_rdk2_remove()
2536 struct net2272 *dev = pci_get_drvdata(pdev); in net2272_pci_remove() local
2538 net2272_remove(dev); in net2272_pci_remove()
2541 case PCI_DEVICE_ID_RDK1: net2272_rdk1_remove(pdev, dev); break; in net2272_pci_remove()
2542 case PCI_DEVICE_ID_RDK2: net2272_rdk2_remove(pdev, dev); break; in net2272_pci_remove()
2548 kfree(dev); in net2272_pci_remove()
2601 struct net2272 *dev; in net2272_plat_probe() local
2611 dev_err(&pdev->dev, "must provide irq/base addr"); in net2272_plat_probe()
2615 dev = net2272_probe_init(&pdev->dev, irq_res->start); in net2272_plat_probe()
2616 if (IS_ERR(dev)) in net2272_plat_probe()
2617 return PTR_ERR(dev); in net2272_plat_probe()
2632 dev->base_shift = iomem_bus->start; in net2272_plat_probe()
2635 dev_dbg(dev->dev, "get request memory region!\n"); in net2272_plat_probe()
2639 dev->base_addr = ioremap_nocache(base, len); in net2272_plat_probe()
2640 if (!dev->base_addr) { in net2272_plat_probe()
2641 dev_dbg(dev->dev, "can't map memory\n"); in net2272_plat_probe()
2646 ret = net2272_probe_fin(dev, IRQF_TRIGGER_LOW); in net2272_plat_probe()
2650 platform_set_drvdata(pdev, dev); in net2272_plat_probe()
2651 dev_info(&pdev->dev, "running in 16-bit, %sbyte swap local bus mode\n", in net2272_plat_probe()
2652 (net2272_read(dev, LOCCTL) & (1 << BYTE_SWAP)) ? "" : "no "); in net2272_plat_probe()
2657 iounmap(dev->base_addr); in net2272_plat_probe()
2667 struct net2272 *dev = platform_get_drvdata(pdev); in net2272_plat_remove() local
2669 net2272_remove(dev); in net2272_plat_remove()
2674 kfree(dev); in net2272_plat_remove()