• 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:udc

49 	spin_lock_irq(&ep->udc->lock);
56 spin_unlock_irq(&ep->udc->lock);
62 spin_unlock_irq(&ep->udc->lock);
143 struct usba_udc *udc;
149 udc = inode->i_private;
154 spin_lock_irq(&udc->lock);
156 data[i] = __raw_readl(udc->regs + i * 4);
157 spin_unlock_irq(&udc->lock);
205 static void usba_ep_init_debugfs(struct usba_udc *udc,
210 ep_root = debugfs_create_dir(ep->ep.name, udc->debugfs_root);
245 dev_err(&ep->udc->pdev->dev,
259 static void usba_init_debugfs(struct usba_udc *udc)
264 root = debugfs_create_dir(udc->gadget.name, NULL);
267 udc->debugfs_root = root;
269 regs = debugfs_create_file("regs", 0400, root, udc, &regs_dbg_fops);
273 regs_resource = platform_get_resource(udc->pdev, IORESOURCE_MEM,
276 udc->debugfs_regs = regs;
278 usba_ep_init_debugfs(udc, to_usba_ep(udc->gadget.ep0));
285 udc->debugfs_root = NULL;
286 dev_err(&udc->pdev->dev, "debugfs is not available\n");
289 static void usba_cleanup_debugfs(struct usba_udc *udc)
291 usba_ep_cleanup_debugfs(to_usba_ep(udc->gadget.ep0));
292 debugfs_remove(udc->debugfs_regs);
293 debugfs_remove(udc->debugfs_root);
294 udc->debugfs_regs = NULL;
295 udc->debugfs_root = NULL;
298 static inline void usba_ep_init_debugfs(struct usba_udc *udc,
309 static inline void usba_init_debugfs(struct usba_udc *udc)
314 static inline void usba_cleanup_debugfs(struct usba_udc *udc)
320 static int vbus_is_present(struct usba_udc *udc)
322 if (gpio_is_valid(udc->vbus_pin))
323 return gpio_get_value(udc->vbus_pin) ^ udc->vbus_pin_inverted;
419 static void send_status(struct usba_udc *udc, struct usba_ep *ep)
428 struct usba_udc *udc = ep->udc;
467 spin_unlock(&udc->lock);
469 spin_lock(&udc->lock);
476 send_status(udc, ep);
485 struct usba_udc *udc = ep->udc;
494 &udc->pdev->dev, req->req.dma, req->req.length,
504 spin_unlock(&udc->lock);
506 spin_lock(&udc->lock);
524 struct usba_udc *udc = ep->udc;
600 spin_lock_irqsave(&ep->udc->lock, flags);
603 spin_unlock_irqrestore(&ep->udc->lock, flags);
617 usba_writel(udc, INT_ENB,
618 (usba_readl(udc, INT_ENB)
624 usba_writel(udc, INT_ENB,
625 (usba_readl(udc, INT_ENB)
629 spin_unlock_irqrestore(&udc->lock, flags);
634 (unsigned long)usba_readl(udc, INT_ENB));
642 struct usba_udc *udc = ep->udc;
648 spin_lock_irqsave(&udc->lock, flags);
651 spin_unlock_irqrestore(&udc->lock, flags);
656 if (udc->gadget.speed != USB_SPEED_UNKNOWN)
670 usba_writel(udc, INT_ENB,
671 usba_readl(udc, INT_ENB)
676 spin_unlock_irqrestore(&udc->lock, flags);
708 static int queue_dma(struct usba_udc *udc, struct usba_ep *ep,
730 &udc->pdev->dev, req->req.buf, req->req.length,
735 &udc->pdev->dev, req->req.dma, req->req.length,
753 spin_lock_irqsave(&udc->lock, flags);
761 spin_unlock_irqrestore(&udc->lock, flags);
771 struct usba_udc *udc = ep->udc;
778 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN || !ep->desc)
789 return queue_dma(udc, ep, req, gfp_flags);
793 spin_lock_irqsave(&udc->lock, flags);
806 spin_unlock_irqrestore(&udc->lock, flags);
840 dev_err(&ep->udc->pdev->dev,
852 struct usba_udc *udc = ep->udc;
860 spin_lock_irqsave(&udc->lock, flags);
876 usba_writel(udc, EPT_RST, 1 << ep->index);
892 spin_unlock_irqrestore(&udc->lock, flags);
900 struct usba_udc *udc = ep->udc;
918 spin_lock_irqsave(&udc->lock, flags);
937 spin_unlock_irqrestore(&udc->lock, flags);
952 struct usba_udc *udc = ep->udc;
954 usba_writel(udc, EPT_RST, 1 << ep->index);
971 struct usba_udc *udc = to_usba_udc(gadget);
973 return USBA_BFEXT(FRAME_NUMBER, usba_readl(udc, FNUM));
978 struct usba_udc *udc = to_usba_udc(gadget);
983 spin_lock_irqsave(&udc->lock, flags);
984 if (udc->devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) {
985 ctrl = usba_readl(udc, CTRL);
986 usba_writel(udc, CTRL, ctrl | USBA_REMOTE_WAKE_UP);
989 spin_unlock_irqrestore(&udc->lock, flags);
997 struct usba_udc *udc = to_usba_udc(gadget);
1000 spin_lock_irqsave(&udc->lock, flags);
1002 udc->devstatus |= 1 << USB_DEVICE_SELF_POWERED;
1004 udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED);
1005 spin_unlock_irqrestore(&udc->lock, flags);
1044 * Called with interrupts disabled and udc->lock held.
1046 static void reset_all_endpoints(struct usba_udc *udc)
1051 usba_writel(udc, EPT_RST, ~0UL);
1053 ep = to_usba_ep(udc->gadget.ep0);
1059 list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
1061 spin_unlock(&udc->lock);
1063 spin_lock(&udc->lock);
1068 static struct usba_ep *get_ep_by_addr(struct usba_udc *udc, u16 wIndex)
1073 return to_usba_ep(udc->gadget.ep0);
1075 list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) {
1091 /* Called with interrupts disabled and udc->lock held */
1092 static inline void set_protocol_stall(struct usba_udc *udc, struct usba_ep *ep)
1098 static inline int is_stalled(struct usba_udc *udc, struct usba_ep *ep)
1105 static inline void set_address(struct usba_udc *udc, unsigned int addr)
1110 regval = usba_readl(udc, CTRL);
1112 usba_writel(udc, CTRL, regval);
1115 static int do_test_mode(struct usba_udc *udc)
1133 struct device *dev = &udc->pdev->dev;
1136 test_mode = udc->test_mode;
1139 reset_all_endpoints(udc);
1144 usba_writel(udc, TST, USBA_TST_J_MODE);
1149 usba_writel(udc, TST, USBA_TST_K_MODE);
1158 usba_writel(udc, TST,
1166 set_protocol_stall(udc, ep);
1182 set_protocol_stall(udc, ep);
1186 usba_writel(udc, TST, USBA_TST_PKT_MODE);
1223 static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep,
1233 status = cpu_to_le16(udc->devstatus);
1241 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
1246 if (is_stalled(udc, target))
1263 udc->devstatus
1274 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
1286 send_status(udc, ep);
1293 send_status(udc, ep);
1295 udc->test_mode = le16_to_cpu(crq->wIndex);
1298 udc->devstatus |= 1 << USB_DEVICE_REMOTE_WAKEUP;
1309 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex));
1317 send_status(udc, ep);
1325 set_address(udc, le16_to_cpu(crq->wValue));
1326 send_status(udc, ep);
1332 spin_unlock(&udc->lock);
1333 retval = udc->driver->setup(&udc->gadget, crq);
1334 spin_lock(&udc->lock);
1340 pr_err("udc: %s: Invalid setup request: %02x.%02x v%04x i%04x l%d, "
1345 set_protocol_stall(udc, ep);
1349 static void usba_control_irq(struct usba_udc *udc, struct usba_ep *ep)
1390 usba_writel(udc, CTRL, (usba_readl(udc, CTRL)
1407 if (do_test_mode(udc))
1408 set_protocol_stall(udc, ep);
1411 pr_err("udc: %s: TXCOMP: Invalid endpoint state %d, "
1414 set_protocol_stall(udc, ep);
1440 pr_err("udc: %s: RXRDY: Invalid endpoint state %d, "
1443 set_protocol_stall(udc, ep);
1485 pr_warning("udc: Invalid packet length %u "
1487 set_protocol_stall(udc, ep);
1519 ret = handle_ep0_setup(udc, ep, &crq.crq);
1521 spin_unlock(&udc->lock);
1522 ret = udc->driver->setup(&udc->gadget, &crq.crq);
1523 spin_lock(&udc->lock);
1532 set_protocol_stall(udc, ep);
1537 static void usba_ep_irq(struct usba_udc *udc, struct usba_ep *ep)
1552 dev_warn(&udc->pdev->dev, "ep_irq: queue empty\n");
1591 static void usba_dma_irq(struct usba_udc *udc, struct usba_ep *ep)
1605 dev_err(&udc->pdev->dev,
1607 dev_err(&udc->pdev->dev,
1633 struct usba_udc *udc = devid;
1638 spin_lock(&udc->lock);
1640 status = usba_readl(udc, INT_STA);
1645 usba_writel(udc, INT_CLR, USBA_DET_SUSPEND);
1647 if (udc->gadget.speed != USB_SPEED_UNKNOWN
1648 && udc->driver && udc->driver->suspend) {
1649 spin_unlock(&udc->lock);
1650 udc->driver->suspend(&udc->gadget);
1651 spin_lock(&udc->lock);
1657 usba_writel(udc, INT_CLR, USBA_WAKE_UP);
1662 usba_writel(udc, INT_CLR, USBA_END_OF_RESUME);
1664 if (udc->gadget.speed != USB_SPEED_UNKNOWN
1665 && udc->driver && udc->driver->resume) {
1666 spin_unlock(&udc->lock);
1667 udc->driver->resume(&udc->gadget);
1668 spin_lock(&udc->lock);
1678 usba_dma_irq(udc, &usba_ep[i]);
1688 usba_control_irq(udc, &usba_ep[i]);
1690 usba_ep_irq(udc, &usba_ep[i]);
1697 usba_writel(udc, INT_CLR, USBA_END_OF_RESET);
1698 reset_all_endpoints(udc);
1700 if (udc->gadget.speed != USB_SPEED_UNKNOWN
1701 && udc->driver->disconnect) {
1702 udc->gadget.speed = USB_SPEED_UNKNOWN;
1703 spin_unlock(&udc->lock);
1704 udc->driver->disconnect(&udc->gadget);
1705 spin_lock(&udc->lock);
1710 udc->gadget.speed = USB_SPEED_HIGH;
1713 udc->gadget.speed = USB_SPEED_FULL;
1725 usba_writel(udc, INT_ENB,
1726 (usba_readl(udc, INT_ENB)
1736 dev_dbg(&udc->pdev->dev,
1740 spin_unlock(&udc->lock);
1747 struct usba_udc *udc = devid;
1753 spin_lock(&udc->lock);
1756 if (!udc->driver)
1759 vbus = vbus_is_present(udc);
1760 if (vbus != udc->vbus_prev) {
1763 usba_writel(udc, CTRL, USBA_ENABLE_MASK);
1764 usba_writel(udc, INT_ENB, USBA_END_OF_RESET);
1766 udc->gadget.speed = USB_SPEED_UNKNOWN;
1767 reset_all_endpoints(udc);
1769 usba_writel(udc, CTRL, USBA_DISABLE_MASK);
1770 if (udc->driver->disconnect) {
1771 spin_unlock(&udc->lock);
1772 udc->driver->disconnect(&udc->gadget);
1773 spin_lock(&udc->lock);
1776 udc->vbus_prev = vbus;
1780 spin_unlock(&udc->lock);
1787 struct usba_udc *udc = &the_udc;
1791 if (!udc->pdev)
1794 spin_lock_irqsave(&udc->lock, flags);
1795 if (udc->driver) {
1796 spin_unlock_irqrestore(&udc->lock, flags);
1800 udc->devstatus = 1 << USB_DEVICE_SELF_POWERED;
1801 udc->driver = driver;
1802 udc->gadget.dev.driver = &driver->driver;
1803 spin_unlock_irqrestore(&udc->lock, flags);
1805 clk_enable(udc->pclk);
1806 clk_enable(udc->hclk);
1808 ret = driver->bind(&udc->gadget);
1817 udc->vbus_prev = 0;
1818 if (gpio_is_valid(udc->vbus_pin))
1819 enable_irq(gpio_to_irq(udc->vbus_pin));
1822 spin_lock_irqsave(&udc->lock, flags);
1823 if (vbus_is_present(udc) && udc->vbus_prev == 0) {
1825 usba_writel(udc, CTRL, USBA_ENABLE_MASK);
1826 usba_writel(udc, INT_ENB, USBA_END_OF_RESET);
1828 spin_unlock_irqrestore(&udc->lock, flags);
1833 udc->driver = NULL;
1834 udc->gadget.dev.driver = NULL;
1841 struct usba_udc *udc = &the_udc;
1844 if (!udc->pdev)
1846 if (driver != udc->driver || !driver->unbind)
1849 if (gpio_is_valid(udc->vbus_pin))
1850 disable_irq(gpio_to_irq(udc->vbus_pin));
1852 spin_lock_irqsave(&udc->lock, flags);
1853 udc->gadget.speed = USB_SPEED_UNKNOWN;
1854 reset_all_endpoints(udc);
1855 spin_unlock_irqrestore(&udc->lock, flags);
1859 usba_writel(udc, CTRL, USBA_DISABLE_MASK);
1861 if (udc->driver->disconnect)
1862 udc->driver->disconnect(&udc->gadget);
1864 driver->unbind(&udc->gadget);
1865 udc->gadget.dev.driver = NULL;
1866 udc->driver = NULL;
1868 clk_disable(udc->hclk);
1869 clk_disable(udc->pclk);
1882 struct usba_udc *udc = &the_udc;
1903 spin_lock_init(&udc->lock);
1904 udc->pdev = pdev;
1905 udc->pclk = pclk;
1906 udc->hclk = hclk;
1907 udc->vbus_pin = -ENODEV;
1910 udc->regs = ioremap(regs->start, resource_size(regs));
1911 if (!udc->regs) {
1916 (unsigned long)regs->start, udc->regs);
1917 udc->fifo = ioremap(fifo->start, resource_size(fifo));
1918 if (!udc->fifo) {
1923 (unsigned long)fifo->start, udc->fifo);
1925 device_initialize(&udc->gadget.dev);
1926 udc->gadget.dev.parent = &pdev->dev;
1927 udc->gadget.dev.dma_mask = pdev->dev.dma_mask;
1929 platform_set_drvdata(pdev, udc);
1934 usba_writel(udc, CTRL, USBA_DISABLE_MASK);
1945 usba_ep[0].ep_regs = udc->regs + USBA_EPT_BASE(0);
1946 usba_ep[0].dma_regs = udc->regs + USBA_DMA_BASE(0);
1947 usba_ep[0].fifo = udc->fifo + USBA_FIFO_BASE(0);
1951 usba_ep[0].udc = &the_udc;
1962 ep->ep_regs = udc->regs + USBA_EPT_BASE(i);
1963 ep->dma_regs = udc->regs + USBA_DMA_BASE(i);
1964 ep->fifo = udc->fifo + USBA_FIFO_BASE(i);
1968 ep->udc = &the_udc;
1976 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
1979 ret = request_irq(irq, usba_udc_irq, 0, "atmel_usba_udc", udc);
1985 udc->irq = irq;
1987 ret = device_add(&udc->gadget.dev);
1995 udc->vbus_pin = pdata->vbus_pin;
1996 udc->vbus_pin_inverted = pdata->vbus_pin_inverted;
1998 ret = request_irq(gpio_to_irq(udc->vbus_pin),
2000 "atmel_usba_udc", udc);
2002 gpio_free(udc->vbus_pin);
2003 udc->vbus_pin = -ENODEV;
2004 dev_warn(&udc->pdev->dev,
2008 disable_irq(gpio_to_irq(udc->vbus_pin));
2012 udc->vbus_pin = -EINVAL;
2016 usba_init_debugfs(udc);
2018 usba_ep_init_debugfs(udc, &usba_ep[i]);
2023 free_irq(irq, udc);
2027 iounmap(udc->fifo);
2029 iounmap(udc->regs);
2042 struct usba_udc *udc;
2046 udc = platform_get_drvdata(pdev);
2050 usba_cleanup_debugfs(udc);
2052 if (gpio_is_valid(udc->vbus_pin))
2053 gpio_free(udc->vbus_pin);
2055 free_irq(udc->irq, udc);
2057 iounmap(udc->fifo);
2058 iounmap(udc->regs);
2059 clk_put(udc->hclk);
2060 clk_put(udc->pclk);
2062 device_unregister(&udc->gadget.dev);