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()
1419 usb_ep_set_maxpacket_limit(&dev->ep[0].ep, 64); in net2272_usb_reinit()
1421 dev->gadget.ep0 = &dev->ep[0].ep; in net2272_usb_reinit()
1422 dev->ep[0].stopped = 0; in net2272_usb_reinit()
1423 INIT_LIST_HEAD(&dev->gadget.ep0->ep_list); in net2272_usb_reinit()
1427 net2272_ep0_start(struct net2272 *dev) in net2272_ep0_start() argument
1429 struct net2272_ep *ep0 = &dev->ep[0]; in net2272_ep0_start()
1437 net2272_write(dev, USBCTL0, in net2272_ep0_start()
1438 (dev->softconnect << USB_DETECT_ENABLE) | in net2272_ep0_start()
1441 net2272_write(dev, IRQENB0, in net2272_ep0_start()
1445 net2272_write(dev, IRQENB1, in net2272_ep0_start()
1460 struct net2272 *dev; in net2272_start() local
1467 dev = container_of(_gadget, struct net2272, gadget); in net2272_start()
1470 dev->ep[i].irqs = 0; in net2272_start()
1472 dev->softconnect = 1; in net2272_start()
1474 dev->driver = driver; in net2272_start()
1479 net2272_ep0_start(dev); in net2272_start()
1485 stop_activity(struct net2272 *dev, struct usb_gadget_driver *driver) in stop_activity() argument
1490 if (dev->gadget.speed == USB_SPEED_UNKNOWN) in stop_activity()
1496 net2272_usb_reset(dev); in stop_activity()
1498 net2272_dequeue_all(&dev->ep[i]); in stop_activity()
1502 spin_unlock(&dev->lock); in stop_activity()
1503 driver->disconnect(&dev->gadget); in stop_activity()
1504 spin_lock(&dev->lock); in stop_activity()
1507 net2272_usb_reinit(dev); in stop_activity()
1512 struct net2272 *dev; in net2272_stop() local
1515 dev = container_of(_gadget, struct net2272, gadget); in net2272_stop()
1517 spin_lock_irqsave(&dev->lock, flags); in net2272_stop()
1518 stop_activity(dev, NULL); in net2272_stop()
1519 spin_unlock_irqrestore(&dev->lock, flags); in net2272_stop()
1521 dev->driver = NULL; in net2272_stop()
1541 dev_vdbg(ep->dev->dev, "handle_dma %s req %p\n", ep->ep.name, req); in net2272_handle_dma()
1544 net2272_write(ep->dev, DMAREQ, in net2272_handle_dma()
1548 | (ep->dev->dma_eot_polarity << EOT_POLARITY) in net2272_handle_dma()
1549 | (ep->dev->dma_dack_polarity << DACK_POLARITY) in net2272_handle_dma()
1550 | (ep->dev->dma_dreq_polarity << DREQ_POLARITY) in net2272_handle_dma()
1553 ep->dev->dma_busy = 0; in net2272_handle_dma()
1579 if (net2272_read(ep->dev, IRQSTAT0) & in net2272_handle_dma()
1582 net2272_cancel_dma(ep->dev); in net2272_handle_dma()
1623 dev_vdbg(ep->dev->dev, "%s ack ep_stat0 %02x, ep_stat1 %02x, req %p\n", in net2272_handle_ep()
1643 net2272_get_ep_by_addr(struct net2272 *dev, u16 wIndex) in net2272_get_ep_by_addr() argument
1648 return &dev->ep[0]; in net2272_get_ep_by_addr()
1650 list_for_each_entry(ep, &dev->gadget.ep_list, ep.ep_list) { in net2272_get_ep_by_addr()
1683 net2272_set_test_mode(struct net2272 *dev, int mode) in net2272_set_test_mode() argument
1690 net2272_write(dev, IRQENB0, 0x00); in net2272_set_test_mode()
1691 net2272_write(dev, IRQENB1, 0x00); in net2272_set_test_mode()
1694 net2272_write(dev, XCVRDIAG, 1 << FORCE_HIGH_SPEED); in net2272_set_test_mode()
1696 net2272_write(dev, PAGESEL, 0); in net2272_set_test_mode()
1697 net2272_write(dev, EP_STAT0, 1 << DATA_PACKET_TRANSMITTED_INTERRUPT); in net2272_set_test_mode()
1698 net2272_write(dev, EP_RSPCLR, in net2272_set_test_mode()
1701 net2272_write(dev, EP_CFG, 1 << ENDPOINT_DIRECTION); in net2272_set_test_mode()
1702 net2272_write(dev, EP_STAT1, 1 << BUFFER_FLUSH); in net2272_set_test_mode()
1705 while (!(net2272_read(dev, EP_STAT0) & in net2272_set_test_mode()
1710 net2272_write(dev, USBTEST, mode); in net2272_set_test_mode()
1715 net2272_write(dev, LOCCTL, net2272_read(dev, LOCCTL) & in net2272_set_test_mode()
1719 net2272_write(dev, EP_DATA, net2272_test_packet[i]); in net2272_set_test_mode()
1722 net2272_write(dev, EP_TRANSFER0, 0); in net2272_set_test_mode()
1727 net2272_handle_stat0_irqs(struct net2272 *dev, u8 stat) in net2272_handle_stat0_irqs() argument
1741 if (dev->gadget.speed == USB_SPEED_UNKNOWN) { in net2272_handle_stat0_irqs()
1742 if (net2272_read(dev, USBCTL1) & (1 << USB_HIGH_SPEED)) in net2272_handle_stat0_irqs()
1743 dev->gadget.speed = USB_SPEED_HIGH; in net2272_handle_stat0_irqs()
1745 dev->gadget.speed = USB_SPEED_FULL; in net2272_handle_stat0_irqs()
1746 dev_dbg(dev->dev, "%s\n", in net2272_handle_stat0_irqs()
1747 usb_speed_string(dev->gadget.speed)); in net2272_handle_stat0_irqs()
1750 ep = &dev->ep[0]; in net2272_handle_stat0_irqs()
1762 dev->protocol_stall = 0; in net2272_handle_stat0_irqs()
1787 net2272_write(dev, PAGESEL, 0); in net2272_handle_stat0_irqs()
1788 net2272_write(dev, EP_TRANSFER2, 0xff); in net2272_handle_stat0_irqs()
1789 net2272_write(dev, EP_TRANSFER1, 0xff); in net2272_handle_stat0_irqs()
1790 net2272_write(dev, EP_TRANSFER0, 0xff); in net2272_handle_stat0_irqs()
1792 u.raw[0] = net2272_read(dev, SETUP0); in net2272_handle_stat0_irqs()
1793 u.raw[1] = net2272_read(dev, SETUP1); in net2272_handle_stat0_irqs()
1794 u.raw[2] = net2272_read(dev, SETUP2); in net2272_handle_stat0_irqs()
1795 u.raw[3] = net2272_read(dev, SETUP3); in net2272_handle_stat0_irqs()
1796 u.raw[4] = net2272_read(dev, SETUP4); in net2272_handle_stat0_irqs()
1797 u.raw[5] = net2272_read(dev, SETUP5); in net2272_handle_stat0_irqs()
1798 u.raw[6] = net2272_read(dev, SETUP6); in net2272_handle_stat0_irqs()
1799 u.raw[7] = net2272_read(dev, SETUP7); in net2272_handle_stat0_irqs()
1809 net2272_write(dev, IRQSTAT0, 1 << SETUP_PACKET_INTERRUPT); in net2272_handle_stat0_irqs()
1836 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1845 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1846 writew(status, net2272_reg_addr(dev, EP_DATA)); in net2272_handle_stat0_irqs()
1847 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1849 dev_vdbg(dev->dev, "%s stat %02x\n", in net2272_handle_stat0_irqs()
1855 if (dev->gadget.is_selfpowered) 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, "device stat %02x\n", status); in net2272_handle_stat0_irqs()
1870 net2272_ep_write(&dev->ep[0], EP_IRQENB, 0); in net2272_handle_stat0_irqs()
1871 writew(status, net2272_reg_addr(dev, EP_DATA)); in net2272_handle_stat0_irqs()
1872 set_fifo_bytecount(&dev->ep[0], 0); in net2272_handle_stat0_irqs()
1874 dev_vdbg(dev->dev, "interface status %02x\n", status); in net2272_handle_stat0_irqs()
1888 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1892 dev_vdbg(dev->dev, "%s wedged, halt not cleared\n", in net2272_handle_stat0_irqs()
1895 dev_vdbg(dev->dev, "%s clear halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1906 net2272_set_test_mode(dev, (u.r.wIndex >> 8)); in net2272_handle_stat0_irqs()
1908 dev_vdbg(dev->dev, "test mode: %d\n", u.r.wIndex); in net2272_handle_stat0_irqs()
1915 e = net2272_get_ep_by_addr(dev, u.r.wIndex); in net2272_handle_stat0_irqs()
1920 dev_vdbg(dev->dev, "%s set halt\n", ep->ep.name); in net2272_handle_stat0_irqs()
1924 net2272_write(dev, OURADDR, u.r.wValue & 0xff); in net2272_handle_stat0_irqs()
1930 dev_vdbg(dev->dev, "setup %02x.%02x v%04x i%04x " in net2272_handle_stat0_irqs()
1935 spin_unlock(&dev->lock); in net2272_handle_stat0_irqs()
1936 tmp = dev->driver->setup(&dev->gadget, &u.r); in net2272_handle_stat0_irqs()
1937 spin_lock(&dev->lock); in net2272_handle_stat0_irqs()
1943 dev_vdbg(dev->dev, "req %02x.%02x protocol STALL; stat %d\n", in net2272_handle_stat0_irqs()
1945 dev->protocol_stall = 1; in net2272_handle_stat0_irqs()
1949 net2272_cancel_dma(dev); in net2272_handle_stat0_irqs()
1950 net2272_write(dev, IRQSTAT0, 1 << DMA_DONE_INTERRUPT); in net2272_handle_stat0_irqs()
1952 num = (net2272_read(dev, DMAREQ) & (1 << DMA_ENDPOINT_SELECT)) in net2272_handle_stat0_irqs()
1955 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1972 ep = &dev->ep[num]; in net2272_handle_stat0_irqs()
1980 dev_dbg(dev->dev, "unhandled irqstat0 %02x\n", stat); in net2272_handle_stat0_irqs()
1984 net2272_handle_stat1_irqs(struct net2272 *dev, u8 stat) in net2272_handle_stat1_irqs() argument
2000 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
2001 if (dev->gadget.speed != USB_SPEED_UNKNOWN) { in net2272_handle_stat1_irqs()
2003 (net2272_read(dev, USBCTL1) & in net2272_handle_stat1_irqs()
2006 dev_dbg(dev->dev, "disconnect %s\n", in net2272_handle_stat1_irqs()
2007 dev->driver->driver.name); in net2272_handle_stat1_irqs()
2009 (net2272_read(dev, USBCTL1) & mask) in net2272_handle_stat1_irqs()
2012 dev_dbg(dev->dev, "reset %s\n", in net2272_handle_stat1_irqs()
2013 dev->driver->driver.name); in net2272_handle_stat1_irqs()
2017 stop_activity(dev, dev->driver); in net2272_handle_stat1_irqs()
2018 net2272_ep0_start(dev); in net2272_handle_stat1_irqs()
2019 spin_unlock(&dev->lock); in net2272_handle_stat1_irqs()
2022 (&dev->gadget, dev->driver); in net2272_handle_stat1_irqs()
2024 (dev->driver->disconnect) in net2272_handle_stat1_irqs()
2025 (&dev->gadget); in net2272_handle_stat1_irqs()
2026 spin_lock(&dev->lock); in net2272_handle_stat1_irqs()
2038 net2272_write(dev, IRQSTAT1, tmp); in net2272_handle_stat1_irqs()
2040 if (dev->driver->suspend) in net2272_handle_stat1_irqs()
2041 dev->driver->suspend(&dev->gadget); in net2272_handle_stat1_irqs()
2044 dev_dbg(dev->dev, "Suspend disabled, ignoring\n"); in net2272_handle_stat1_irqs()
2047 if (dev->driver->resume) in net2272_handle_stat1_irqs()
2048 dev->driver->resume(&dev->gadget); in net2272_handle_stat1_irqs()
2055 net2272_write(dev, IRQSTAT1, stat); in net2272_handle_stat1_irqs()
2064 dev_dbg(dev->dev, "unhandled irqstat1 %02x\n", stat); in net2272_handle_stat1_irqs()
2069 struct net2272 *dev = _dev; in net2272_irq() local
2076 spin_lock(&dev->lock); in net2272_irq()
2078 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2082 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2083 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2084 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2085 intcsr = readl(dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2087 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_irq()
2091 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_irq()
2093 dmareq = net2272_read(dev, DMAREQ); in net2272_irq()
2095 net2272_handle_dma(&dev->ep[2]); in net2272_irq()
2097 net2272_handle_dma(&dev->ep[1]); in net2272_irq()
2102 intcsr = readl(dev->rdk2.fpga_base_addr + RDK2_IRQSTAT); in net2272_irq()
2104 spin_unlock(&dev->lock); in net2272_irq()
2111 net2272_handle_stat1_irqs(dev, net2272_read(dev, IRQSTAT1)); in net2272_irq()
2112 net2272_handle_stat0_irqs(dev, net2272_read(dev, IRQSTAT0)); in net2272_irq()
2114 spin_unlock(&dev->lock); in net2272_irq()
2119 static int net2272_present(struct net2272 *dev) in net2272_present() argument
2134 refval = net2272_read(dev, SCRATCH); in net2272_present()
2136 net2272_write(dev, SCRATCH, ii); in net2272_present()
2137 val = net2272_read(dev, SCRATCH); in net2272_present()
2139 dev_dbg(dev->dev, in net2272_present()
2147 net2272_write(dev, SCRATCH, refval); in net2272_present()
2150 refval = net2272_read(dev, CHIPREV_2272); in net2272_present()
2152 net2272_write(dev, CHIPREV_2272, ii); in net2272_present()
2153 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2155 dev_dbg(dev->dev, in net2272_present()
2170 val = net2272_read(dev, CHIPREV_LEGACY); in net2272_present()
2176 dev_dbg(dev->dev, in net2272_present()
2188 val = net2272_read(dev, CHIPREV_2272); in net2272_present()
2195 dev_dbg(dev->dev, in net2272_present()
2203 dev_dbg(dev->dev, in net2272_present()
2221 struct net2272 *dev = dev_get_drvdata(_dev); in net2272_gadget_release() local
2222 kfree(dev); in net2272_gadget_release()
2228 net2272_remove(struct net2272 *dev) in net2272_remove() argument
2230 usb_del_gadget_udc(&dev->gadget); in net2272_remove()
2231 free_irq(dev->irq, dev); in net2272_remove()
2232 iounmap(dev->base_addr); in net2272_remove()
2233 device_remove_file(dev->dev, &dev_attr_registers); in net2272_remove()
2235 dev_info(dev->dev, "unbind\n"); in net2272_remove()
2238 static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq) in net2272_probe_init() argument
2243 dev_dbg(dev, "No IRQ!\n"); in net2272_probe_init()
2254 ret->dev = dev; in net2272_probe_init()
2265 net2272_probe_fin(struct net2272 *dev, unsigned int irqflags) in net2272_probe_fin() argument
2270 if (net2272_present(dev)) { in net2272_probe_fin()
2271 dev_warn(dev->dev, "2272 not found!\n"); in net2272_probe_fin()
2276 net2272_usb_reset(dev); in net2272_probe_fin()
2277 net2272_usb_reinit(dev); in net2272_probe_fin()
2279 ret = request_irq(dev->irq, net2272_irq, irqflags, driver_name, dev); in net2272_probe_fin()
2281 dev_err(dev->dev, "request interrupt %i failed\n", dev->irq); in net2272_probe_fin()
2285 dev->chiprev = net2272_read(dev, CHIPREV_2272); in net2272_probe_fin()
2288 dev_info(dev->dev, "%s\n", driver_desc); in net2272_probe_fin()
2289 dev_info(dev->dev, "irq %i, mem %p, chip rev %04x, dma %s\n", in net2272_probe_fin()
2290 dev->irq, dev->base_addr, dev->chiprev, in net2272_probe_fin()
2292 dev_info(dev->dev, "version: %s\n", driver_vers); in net2272_probe_fin()
2294 ret = device_create_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2298 ret = usb_add_gadget_udc_release(dev->dev, &dev->gadget, in net2272_probe_fin()
2306 device_remove_file(dev->dev, &dev_attr_registers); in net2272_probe_fin()
2308 free_irq(dev->irq, dev); in net2272_probe_fin()
2321 net2272_rdk1_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_probe() argument
2343 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk1_probe()
2351 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk1_probe()
2357 dev->rdk1.plx9054_base_addr = mem_mapped_addr[0]; in net2272_rdk1_probe()
2358 dev->rdk1.epld_base_addr = mem_mapped_addr[2]; in net2272_rdk1_probe()
2359 dev->base_addr = mem_mapped_addr[3]; in net2272_rdk1_probe()
2362 tmp = readl(dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2364 dev->rdk1.plx9054_base_addr + LBRD1); in net2272_rdk1_probe()
2367 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) | in net2272_rdk1_probe()
2370 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_probe()
2373 dev->rdk1.plx9054_base_addr + DMACSR0); in net2272_rdk1_probe()
2383 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2386 writeb(readb(dev->base_addr + EPLD_IO_CONTROL_REGISTER) & in net2272_rdk1_probe()
2388 dev->base_addr + EPLD_IO_CONTROL_REGISTER); in net2272_rdk1_probe()
2404 net2272_rdk2_probe(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_probe() argument
2421 dev_dbg(dev->dev, "controller already in use\n"); in net2272_rdk2_probe()
2429 dev_dbg(dev->dev, "can't map memory\n"); in net2272_rdk2_probe()
2435 dev->rdk2.fpga_base_addr = mem_mapped_addr[0]; in net2272_rdk2_probe()
2436 dev->base_addr = mem_mapped_addr[1]; in net2272_rdk2_probe()
2440 writel((1 << CHIP_RESET), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2442 writel((1 << BUS_WIDTH), dev->rdk2.fpga_base_addr + RDK2_LOCCTLRDK); in net2272_rdk2_probe()
2444 dev_info(dev->dev, "RDK2 FPGA version %08x\n", in net2272_rdk2_probe()
2445 readl(dev->rdk2.fpga_base_addr + RDK2_FPGAREV)); in net2272_rdk2_probe()
2447 writel((1 << NET2272_PCI_IRQ), dev->rdk2.fpga_base_addr + RDK2_IRQENB); in net2272_rdk2_probe()
2464 struct net2272 *dev; in net2272_pci_probe() local
2467 dev = net2272_probe_init(&pdev->dev, pdev->irq); in net2272_pci_probe()
2468 if (IS_ERR(dev)) in net2272_pci_probe()
2469 return PTR_ERR(dev); in net2272_pci_probe()
2470 dev->dev_id = pdev->device; in net2272_pci_probe()
2480 case PCI_DEVICE_ID_RDK1: ret = net2272_rdk1_probe(pdev, dev); break; in net2272_pci_probe()
2481 case PCI_DEVICE_ID_RDK2: ret = net2272_rdk2_probe(pdev, dev); break; in net2272_pci_probe()
2487 ret = net2272_probe_fin(dev, 0); in net2272_pci_probe()
2491 pci_set_drvdata(pdev, dev); in net2272_pci_probe()
2498 kfree(dev); in net2272_pci_probe()
2504 net2272_rdk1_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk1_remove() argument
2509 writel(readl(dev->rdk1.plx9054_base_addr + INTCSR) & in net2272_rdk1_remove()
2511 dev->rdk1.plx9054_base_addr + INTCSR); in net2272_rdk1_remove()
2514 iounmap(dev->rdk1.plx9054_base_addr); in net2272_rdk1_remove()
2515 iounmap(dev->rdk1.epld_base_addr); in net2272_rdk1_remove()
2526 net2272_rdk2_remove(struct pci_dev *pdev, struct net2272 *dev) in net2272_rdk2_remove() argument
2537 iounmap(dev->rdk2.fpga_base_addr); in net2272_rdk2_remove()
2547 struct net2272 *dev = pci_get_drvdata(pdev); in net2272_pci_remove() local
2549 net2272_remove(dev); in net2272_pci_remove()
2552 case PCI_DEVICE_ID_RDK1: net2272_rdk1_remove(pdev, dev); break; in net2272_pci_remove()
2553 case PCI_DEVICE_ID_RDK2: net2272_rdk2_remove(pdev, dev); break; in net2272_pci_remove()
2559 kfree(dev); in net2272_pci_remove()
2612 struct net2272 *dev; in net2272_plat_probe() local
2622 dev_err(&pdev->dev, "must provide irq/base addr"); in net2272_plat_probe()
2626 dev = net2272_probe_init(&pdev->dev, irq_res->start); in net2272_plat_probe()
2627 if (IS_ERR(dev)) in net2272_plat_probe()
2628 return PTR_ERR(dev); in net2272_plat_probe()
2643 dev->base_shift = iomem_bus->start; in net2272_plat_probe()
2646 dev_dbg(dev->dev, "get request memory region!\n"); in net2272_plat_probe()
2650 dev->base_addr = ioremap_nocache(base, len); in net2272_plat_probe()
2651 if (!dev->base_addr) { in net2272_plat_probe()
2652 dev_dbg(dev->dev, "can't map memory\n"); in net2272_plat_probe()
2657 ret = net2272_probe_fin(dev, IRQF_TRIGGER_LOW); in net2272_plat_probe()
2661 platform_set_drvdata(pdev, dev); in net2272_plat_probe()
2662 dev_info(&pdev->dev, "running in 16-bit, %sbyte swap local bus mode\n", in net2272_plat_probe()
2663 (net2272_read(dev, LOCCTL) & (1 << BYTE_SWAP)) ? "" : "no "); in net2272_plat_probe()
2668 iounmap(dev->base_addr); in net2272_plat_probe()
2678 struct net2272 *dev = platform_get_drvdata(pdev); in net2272_plat_remove() local
2680 net2272_remove(dev); in net2272_plat_remove()
2685 kfree(dev); in net2272_plat_remove()