Lines Matching defs:udc

124  * @udc: xilinx usb peripheral driver instance pointer
142 struct xusb_udc *udc;
201 static const char driver_name[] = "xilinx-udc";
257 * @udc: pointer to the usb device controller structure.
259 static void xudc_wrstatus(struct xusb_udc *udc)
261 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
264 epcfgreg = udc->read_fn(udc->addr + ep0->offset)|
266 udc->write_fn(udc->addr, ep0->offset, epcfgreg);
267 udc->write_fn(udc->addr, ep0->offset + XUSB_EP_BUF0COUNT_OFFSET, 0);
268 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
274 * @udc: pointer to the usb peripheral controller structure.
279 static void xudc_epconfig(struct xusb_ep *ep, struct xusb_udc *udc)
289 udc->write_fn(udc->addr, ep->offset, epcfgreg);
292 udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF0COUNT_OFFSET,
294 udc->write_fn(udc->addr, ep->offset + XUSB_EP_BUF1COUNT_OFFSET,
297 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
300 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
319 struct xusb_udc *udc = ep->udc;
329 udc->write_fn(udc->addr, XUSB_DMA_DSAR_ADDR_OFFSET, src);
330 udc->write_fn(udc->addr, XUSB_DMA_DDAR_ADDR_OFFSET, dst);
331 udc->write_fn(udc->addr, XUSB_DMA_LENGTH_OFFSET, length);
339 reg = udc->read_fn(udc->addr + XUSB_DMA_STATUS_OFFSET);
349 dev_err(udc->dev, "DMA timeout\n");
355 if ((udc->read_fn(udc->addr + XUSB_DMA_STATUS_OFFSET) &
357 dev_err(udc->dev, "DMA Error\n");
382 struct xusb_udc *udc = ep->udc;
386 dma_sync_single_for_device(udc->dev, src,
390 eprambase = (u32 __force *)(udc->addr + ep->rambase);
392 udc->write_fn(udc->addr, ep->offset +
394 udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
400 eprambase = (u32 __force *)(udc->addr + ep->rambase +
403 udc->write_fn(udc->addr, ep->offset +
405 udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
436 struct xusb_udc *udc = ep->udc;
441 eprambase = (u32 __force *)(udc->addr + ep->rambase);
443 udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
450 eprambase = (u32 __force *)(udc->addr +
453 udc->write_fn(udc->addr, XUSB_DMA_CONTROL_OFFSET,
485 struct xusb_udc *udc = ep->udc;
488 if (udc->dma_enabled) {
498 eprambase = (u32 __force *)(udc->addr + ep->rambase);
502 udc->write_fn(udc->addr, ep->offset +
511 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
517 eprambase = (u32 __force *)(udc->addr + ep->rambase +
522 udc->write_fn(udc->addr, ep->offset +
531 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
553 struct xusb_udc *udc = ep->udc;
563 dev_dbg(udc->dev, "%s done %p, status %d\n",
566 if (udc->dma_enabled && ep->epnumber && req->usb_req.length)
567 usb_gadget_unmap_request(&udc->gadget, &req->usb_req,
571 spin_unlock(&udc->lock);
573 spin_lock(&udc->lock);
594 struct xusb_udc *udc = ep->udc;
597 dev_dbg(udc->dev, "Packet NOT ready!\n");
606 count = udc->read_fn(udc->addr + ep->offset + bufoffset);
623 dev_dbg(udc->dev, "%s overflow %d\n",
634 dev_dbg(udc->dev, "read %s, %d bytes%s req %p %d/%d\n",
640 if (udc->dma_enabled && req->usb_req.length)
641 dma_sync_single_for_cpu(udc->dev,
654 dev_dbg(udc->dev, "receive busy\n");
682 struct xusb_udc *udc = ep->udc;
705 dev_dbg(udc->dev, "%s: wrote %s %d bytes%s%s %d left %p\n",
716 dev_dbg(udc->dev, "Send busy\n");
754 struct xusb_udc *udc;
762 udc = ep->udc;
765 dev_dbg(udc->dev, "requests pending can't halt\n");
770 dev_dbg(udc->dev, "HW buffers busy can't halt\n");
774 spin_lock_irqsave(&udc->lock, flags);
778 epcfgreg = udc->read_fn(udc->addr + ep->offset);
780 udc->write_fn(udc->addr, ep->offset, epcfgreg);
783 epcfgreg = udc->read_fn(udc->addr + ep->offset);
785 udc->write_fn(udc->addr, ep->offset, epcfgreg);
788 epcfgreg = udc->read_fn(ep->udc->addr + ep->offset);
790 udc->write_fn(udc->addr, ep->offset, epcfgreg);
794 spin_unlock_irqrestore(&udc->lock, flags);
808 struct xusb_udc *udc = ep->udc;
824 dev_dbg(udc->dev, "only one control endpoint\n");
832 dev_dbg(udc->dev, "bogus maxpacket %d\n", maxpacket);
841 dev_dbg(udc->dev, "bogus maxpacket %d\n", maxpacket);
855 xudc_epconfig(ep, udc);
857 dev_dbg(udc->dev, "Enable Endpoint %d max pkt is %d\n",
861 epcfg = udc->read_fn(udc->addr + ep->offset);
863 udc->write_fn(udc->addr, ep->offset, epcfg);
868 ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
870 udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
874 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
877 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET,
897 struct xusb_udc *udc;
907 udc = ep->udc;
909 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
910 dev_dbg(udc->dev, "bogus device state\n");
914 spin_lock_irqsave(&udc->lock, flags);
916 spin_unlock_irqrestore(&udc->lock, flags);
932 struct xusb_udc *udc;
940 udc = ep->udc;
942 spin_lock_irqsave(&udc->lock, flags);
950 dev_dbg(udc->dev, "USB Ep %d disable\n ", ep->epnumber);
952 epcfg = udc->read_fn(udc->addr + ep->offset);
954 udc->write_fn(udc->addr, ep->offset, epcfg);
956 spin_unlock_irqrestore(&udc->lock, flags);
1003 struct xusb_udc *udc = ep0->udc;
1007 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
1008 dev_dbg(udc->dev, "%s, bogus device state\n", __func__);
1012 dev_dbg(udc->dev, "%s:ep0 busy\n", __func__);
1021 if (udc->setup.bRequestType & USB_DIR_IN) {
1025 udc->addr);
1029 udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, length);
1030 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
1032 if (udc->setup.wLength) {
1034 udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, 0);
1035 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
1037 xudc_wrstatus(udc);
1057 struct xusb_udc *udc = ep0->udc;
1061 spin_lock_irqsave(&udc->lock, flags);
1063 spin_unlock_irqrestore(&udc->lock, flags);
1081 struct xusb_udc *udc = ep->udc;
1086 dev_dbg(udc->dev, "%s: queuing request to disabled %s\n",
1091 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
1092 dev_dbg(udc->dev, "%s, bogus device state\n", __func__);
1096 spin_lock_irqsave(&udc->lock, flags);
1101 if (udc->dma_enabled) {
1102 ret = usb_gadget_map_request(&udc->gadget, &req->usb_req,
1105 dev_dbg(udc->dev, "gadget_map failed ep%d\n",
1107 spin_unlock_irqrestore(&udc->lock, flags);
1114 dev_dbg(udc->dev, "xudc_write_fifo from ep_queue\n");
1118 dev_dbg(udc->dev, "xudc_read_fifo from ep_queue\n");
1127 spin_unlock_irqrestore(&udc->lock, flags);
1143 struct xusb_udc *udc = ep->udc;
1146 spin_lock_irqsave(&udc->lock, flags);
1155 spin_unlock_irqrestore(&udc->lock, flags);
1159 spin_unlock_irqrestore(&udc->lock, flags);
1220 struct xusb_udc *udc;
1226 udc = to_udc(gadget);
1227 frame = udc->read_fn(udc->addr + XUSB_FRAMENUM_OFFSET);
1239 struct xusb_udc *udc = to_udc(gadget);
1244 spin_lock_irqsave(&udc->lock, flags);
1247 if (!udc->remote_wkp)
1250 crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
1253 udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
1261 udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
1264 spin_unlock_irqrestore(&udc->lock, flags);
1279 struct xusb_udc *udc = to_udc(gadget);
1283 spin_lock_irqsave(&udc->lock, flags);
1285 crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
1291 udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
1293 spin_unlock_irqrestore(&udc->lock, flags);
1300 * @udc: pointer to the usb device controller structure.
1302 static void xudc_eps_init(struct xusb_udc *udc)
1306 INIT_LIST_HEAD(&udc->gadget.ep_list);
1309 struct xusb_ep *ep = &udc->ep[ep_number];
1313 &udc->gadget.ep_list);
1334 ep->udc = udc;
1345 xudc_epconfig(ep, udc);
1354 * @udc: pointer to the usb device controller structure.
1356 static void xudc_stop_activity(struct xusb_udc *udc)
1362 ep = &udc->ep[i];
1377 struct xusb_udc *udc = to_udc(gadget);
1378 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
1383 spin_lock_irqsave(&udc->lock, flags);
1385 if (udc->driver) {
1386 dev_err(udc->dev, "%s is already bound to %s\n",
1387 udc->gadget.name, udc->driver->driver.name);
1393 udc->driver = driver;
1394 udc->gadget.speed = driver->max_speed;
1400 udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
1401 udc->remote_wkp = 0;
1403 spin_unlock_irqrestore(&udc->lock, flags);
1415 struct xusb_udc *udc = to_udc(gadget);
1418 spin_lock_irqsave(&udc->lock, flags);
1420 udc->gadget.speed = USB_SPEED_UNKNOWN;
1421 udc->driver = NULL;
1424 udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
1425 udc->remote_wkp = 0;
1427 xudc_stop_activity(udc);
1429 spin_unlock_irqrestore(&udc->lock, flags);
1444 * @udc: pointer to the udc structure.
1446 static void xudc_clear_stall_all_ep(struct xusb_udc *udc)
1453 ep = &udc->ep[i];
1454 epcfgreg = udc->read_fn(udc->addr + ep->offset);
1456 udc->write_fn(udc->addr, ep->offset, epcfgreg);
1459 epcfgreg = udc->read_fn(udc->addr + ep->offset);
1461 udc->write_fn(udc->addr, ep->offset, epcfgreg);
1468 * @udc: pointer to the udc structure.
1473 static void xudc_startup_handler(struct xusb_udc *udc, u32 intrstatus)
1479 dev_dbg(udc->dev, "Reset\n");
1482 udc->gadget.speed = USB_SPEED_HIGH;
1484 udc->gadget.speed = USB_SPEED_FULL;
1486 xudc_stop_activity(udc);
1487 xudc_clear_stall_all_ep(udc);
1488 udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, 0);
1491 udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
1492 udc->remote_wkp = 0;
1495 intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
1498 udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
1502 dev_dbg(udc->dev, "Suspend\n");
1505 intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
1508 udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
1510 udc->usb_state = USB_STATE_SUSPENDED;
1512 if (udc->driver->suspend) {
1513 spin_unlock(&udc->lock);
1514 udc->driver->suspend(&udc->gadget);
1515 spin_lock(&udc->lock);
1519 bool condition = (udc->usb_state != USB_STATE_SUSPENDED);
1521 dev_WARN_ONCE(udc->dev, condition,
1524 dev_dbg(udc->dev, "Resume\n");
1527 intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
1530 udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
1532 udc->usb_state = 0;
1534 if (udc->driver->resume) {
1535 spin_unlock(&udc->lock);
1536 udc->driver->resume(&udc->gadget);
1537 spin_lock(&udc->lock);
1542 dev_dbg(udc->dev, "Disconnect\n");
1545 intrreg = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
1548 udc->write_fn(udc->addr, XUSB_IER_OFFSET, intrreg);
1550 if (udc->driver && udc->driver->disconnect) {
1551 spin_unlock(&udc->lock);
1552 udc->driver->disconnect(&udc->gadget);
1553 spin_lock(&udc->lock);
1560 * @udc: pointer to the udc structure.
1564 static void xudc_ep0_stall(struct xusb_udc *udc)
1567 struct xusb_ep *ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO];
1569 epcfgreg = udc->read_fn(udc->addr + ep0->offset);
1571 udc->write_fn(udc->addr, ep0->offset, epcfgreg);
1576 * @udc: pointer to the udc structure.
1580 static void xudc_setaddress(struct xusb_udc *udc)
1582 struct xusb_ep *ep0 = &udc->ep[0];
1583 struct xusb_req *req = udc->req;
1591 dev_err(udc->dev, "Can't respond to SET ADDRESS request\n");
1592 xudc_ep0_stall(udc);
1597 * @udc: pointer to the udc structure.
1601 static void xudc_getstatus(struct xusb_udc *udc)
1603 struct xusb_ep *ep0 = &udc->ep[0];
1604 struct xusb_req *req = udc->req;
1612 switch (udc->setup.bRequestType & USB_RECIP_MASK) {
1616 if (udc->remote_wkp)
1622 epnum = le16_to_cpu(udc->setup.wIndex) & USB_ENDPOINT_NUMBER_MASK;
1625 target_ep = &udc->ep[epnum];
1626 epcfgreg = udc->read_fn(udc->addr + target_ep->offset);
1628 if (le16_to_cpu(udc->setup.wIndex) & USB_DIR_IN) {
1648 dev_err(udc->dev, "Can't respond to getstatus request\n");
1649 xudc_ep0_stall(udc);
1654 * @udc: pointer to the usb device controller structure.
1658 static void xudc_set_clear_feature(struct xusb_udc *udc)
1660 struct xusb_ep *ep0 = &udc->ep[0];
1661 struct xusb_req *req = udc->req;
1666 int flag = (udc->setup.bRequest == USB_REQ_SET_FEATURE ? 1 : 0);
1669 switch (udc->setup.bRequestType) {
1671 switch (le16_to_cpu(udc->setup.wValue)) {
1680 udc->remote_wkp = 1;
1682 udc->remote_wkp = 0;
1685 xudc_ep0_stall(udc);
1690 if (!udc->setup.wValue) {
1691 endpoint = le16_to_cpu(udc->setup.wIndex) &
1694 xudc_ep0_stall(udc);
1697 target_ep = &udc->ep[endpoint];
1698 outinbit = le16_to_cpu(udc->setup.wIndex) &
1704 xudc_ep0_stall(udc);
1707 epcfgreg = udc->read_fn(udc->addr + target_ep->offset);
1711 udc->write_fn(udc->addr,
1716 udc->write_fn(udc->addr,
1723 udc->write_fn(udc->addr,
1731 xudc_ep0_stall(udc);
1740 dev_err(udc->dev, "Can't respond to SET/CLEAR FEATURE\n");
1741 xudc_ep0_stall(udc);
1746 * @udc: pointer to the usb device controller structure.
1750 static void xudc_handle_setup(struct xusb_udc *udc)
1751 __must_hold(&udc->lock)
1753 struct xusb_ep *ep0 = &udc->ep[0];
1758 ep0rambase = (u32 __force *) (udc->addr + XUSB_SETUP_PKT_ADDR_OFFSET);
1761 udc->setup = setup;
1762 udc->setup.wValue = cpu_to_le16((u16 __force)setup.wValue);
1763 udc->setup.wIndex = cpu_to_le16((u16 __force)setup.wIndex);
1764 udc->setup.wLength = cpu_to_le16((u16 __force)setup.wLength);
1769 if (udc->setup.bRequestType & USB_DIR_IN) {
1771 udc->setupseqrx = STATUS_PHASE;
1772 udc->setupseqtx = DATA_PHASE;
1775 udc->setupseqrx = DATA_PHASE;
1776 udc->setupseqtx = STATUS_PHASE;
1779 switch (udc->setup.bRequest) {
1781 /* Data+Status phase form udc */
1782 if ((udc->setup.bRequestType &
1786 xudc_getstatus(udc);
1789 /* Status phase from udc */
1790 if (udc->setup.bRequestType != (USB_DIR_OUT |
1793 xudc_setaddress(udc);
1797 /* Requests with no data phase, status phase from udc */
1798 if ((udc->setup.bRequestType & USB_TYPE_MASK)
1801 xudc_set_clear_feature(udc);
1807 spin_unlock(&udc->lock);
1808 if (udc->driver->setup(&udc->gadget, &setup) < 0)
1809 xudc_ep0_stall(udc);
1810 spin_lock(&udc->lock);
1815 * @udc: pointer to the usb device controller structure.
1817 static void xudc_ep0_out(struct xusb_udc *udc)
1819 struct xusb_ep *ep0 = &udc->ep[0];
1827 switch (udc->setupseqrx) {
1833 udc->setupseqrx = SETUP_PHASE;
1834 udc->setupseqtx = SETUP_PHASE;
1839 bytes_to_rx = udc->read_fn(udc->addr +
1842 ep0rambase = (u8 __force *) (udc->addr +
1850 xudc_wrstatus(udc);
1853 udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, 0);
1854 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
1864 * @udc: pointer to the usb device controller structure.
1866 static void xudc_ep0_in(struct xusb_udc *udc)
1868 struct xusb_ep *ep0 = &udc->ep[0];
1876 u8 test_mode = le16_to_cpu(udc->setup.wIndex) >> 8;
1881 switch (udc->setupseqtx) {
1883 switch (udc->setup.bRequest) {
1886 udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET,
1887 le16_to_cpu(udc->setup.wValue));
1890 if (udc->setup.bRequestType ==
1892 if (le16_to_cpu(udc->setup.wValue) ==
1894 udc->write_fn(udc->addr,
1910 epcfgreg = udc->read_fn(udc->addr + ep0->offset);
1912 udc->write_fn(udc->addr, ep0->offset, epcfgreg);
1913 udc->setupseqtx = STATUS_PHASE;
1918 ep0rambase = (u8 __force *) (udc->addr +
1924 udc->write_fn(udc->addr, XUSB_EP_BUF0COUNT_OFFSET, count);
1925 udc->write_fn(udc->addr, XUSB_BUFFREADY_OFFSET, 1);
1934 * @udc: pointer to the udc structure.
1939 static void xudc_ctrl_ep_handler(struct xusb_udc *udc, u32 intrstatus)
1943 xudc_handle_setup(udc);
1946 xudc_ep0_out(udc);
1948 xudc_ep0_in(udc);
1954 * @udc: pointer to the udc structure.
1961 static void xudc_nonctrl_ep_handler(struct xusb_udc *udc, u8 epnum,
1968 ep = &udc->ep[epnum];
1995 struct xusb_udc *udc = _udc;
2002 spin_lock_irqsave(&udc->lock, flags);
2008 ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
2010 udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
2013 intrstatus = udc->read_fn(udc->addr + XUSB_STATUS_OFFSET);
2024 xudc_startup_handler(udc, intrstatus);
2030 ier = udc->read_fn(udc->addr + XUSB_IER_OFFSET);
2032 udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
2035 xudc_ctrl_ep_handler(udc, intrstatus);
2044 xudc_nonctrl_ep_handler(udc, index,
2050 spin_unlock_irqrestore(&udc->lock, flags);
2064 struct xusb_udc *udc;
2070 udc = devm_kzalloc(&pdev->dev, sizeof(*udc), GFP_KERNEL);
2071 if (!udc)
2075 udc->req = devm_kzalloc(&pdev->dev, sizeof(struct xusb_req),
2077 if (!udc->req)
2084 udc->req->usb_req.buf = buff;
2087 udc->addr = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
2088 if (IS_ERR(udc->addr))
2089 return PTR_ERR(udc->addr);
2095 dev_name(&pdev->dev), udc);
2101 udc->dma_enabled = of_property_read_bool(np, "xlnx,has-builtin-dma");
2104 udc->gadget.ops = &xusb_udc_ops;
2105 udc->gadget.max_speed = USB_SPEED_HIGH;
2106 udc->gadget.speed = USB_SPEED_UNKNOWN;
2107 udc->gadget.ep0 = &udc->ep[XUSB_EP_NUMBER_ZERO].ep_usb;
2108 udc->gadget.name = driver_name;
2110 udc->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
2111 if (IS_ERR(udc->clk)) {
2112 if (PTR_ERR(udc->clk) != -ENOENT) {
2113 ret = PTR_ERR(udc->clk);
2122 udc->clk = NULL;
2125 ret = clk_prepare_enable(udc->clk);
2131 spin_lock_init(&udc->lock);
2134 udc->write_fn = xudc_write32_be;
2135 udc->read_fn = xudc_read32_be;
2136 udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, USB_TEST_J);
2137 if ((udc->read_fn(udc->addr + XUSB_TESTMODE_OFFSET))
2139 udc->write_fn = xudc_write32;
2140 udc->read_fn = xudc_read32;
2142 udc->write_fn(udc->addr, XUSB_TESTMODE_OFFSET, 0);
2144 xudc_eps_init(udc);
2147 udc->write_fn(udc->addr, XUSB_ADDRESS_OFFSET, 0);
2149 ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget);
2153 udc->dev = &udc->gadget.dev;
2161 udc->write_fn(udc->addr, XUSB_IER_OFFSET, ier);
2163 platform_set_drvdata(pdev, udc);
2166 driver_name, (u32)res->start, udc->addr,
2167 udc->dma_enabled ? "with DMA" : "without DMA");
2172 clk_disable_unprepare(udc->clk);
2186 struct xusb_udc *udc = platform_get_drvdata(pdev);
2188 usb_del_gadget_udc(&udc->gadget);
2189 clk_disable_unprepare(udc->clk);
2195 struct xusb_udc *udc;
2199 udc = dev_get_drvdata(dev);
2201 spin_lock_irqsave(&udc->lock, flags);
2203 crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
2206 udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
2208 spin_unlock_irqrestore(&udc->lock, flags);
2209 if (udc->driver && udc->driver->suspend)
2210 udc->driver->suspend(&udc->gadget);
2212 clk_disable(udc->clk);
2219 struct xusb_udc *udc;
2224 udc = dev_get_drvdata(dev);
2226 ret = clk_enable(udc->clk);
2230 spin_lock_irqsave(&udc->lock, flags);
2232 crtlreg = udc->read_fn(udc->addr + XUSB_CONTROL_OFFSET);
2235 udc->write_fn(udc->addr, XUSB_CONTROL_OFFSET, crtlreg);
2237 spin_unlock_irqrestore(&udc->lock, flags);
2266 MODULE_DESCRIPTION("Xilinx udc driver");