Lines Matching defs:udc

281 	struct			usbf_udc *udc;
426 static inline u32 usbf_reg_readl(struct usbf_udc *udc, uint offset)
428 return readl(udc->regs + offset);
431 static inline void usbf_reg_writel(struct usbf_udc *udc, uint offset, u32 val)
433 writel(val, udc->regs + offset);
436 static inline void usbf_reg_bitset(struct usbf_udc *udc, uint offset, u32 set)
440 tmp = usbf_reg_readl(udc, offset);
442 usbf_reg_writel(udc, offset, tmp);
445 static inline void usbf_reg_bitclr(struct usbf_udc *udc, uint offset, u32 clr)
449 tmp = usbf_reg_readl(udc, offset);
451 usbf_reg_writel(udc, offset, tmp);
454 static inline void usbf_reg_clrset(struct usbf_udc *udc, uint offset,
459 tmp = usbf_reg_readl(udc, offset);
462 usbf_reg_writel(udc, offset, tmp);
571 dev_dbg(ep0->udc->dev, "ep0 send null\n");
578 dev_dbg(ep0->udc->dev, "ep0 send null\n");
611 dev_dbg(ep0->udc->dev, "ep0 send %u/%u\n",
636 dev_dbg(ep0->udc->dev, "ep0 recv %u, left %u\n", count, left);
661 dev_dbg(ep0->udc->dev, "ep0 recv %u/%u\n",
665 dev_dbg(ep0->udc->dev, "ep0 req.status=%d\n", req_status);
671 dev_dbg(ep0->udc->dev, "ep0 short packet\n");
691 dev_dbg(ep0->udc->dev, "ep0 null packet\n");
715 dev_err(ep0->udc->dev, "ep0 flush fifo timed out\n");
748 dev_dbg(epn->udc->dev, "ep%u send_null\n", epn->id);
755 dev_dbg(epn->udc->dev, "ep%u send_null\n",
789 dev_dbg(epn->udc->dev, "ep%u send %u/%u\n", epn->id, req->req.actual,
808 dev_dbg(epn->udc->dev, "ep%u buf unaligned -> fallback pio\n",
819 dev_dbg(epn->udc->dev, "ep%u send null\n", epn->id);
825 dev_dbg(epn->udc->dev, "ep%u send residue %u\n", epn->id,
834 ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 1);
836 dev_err(epn->udc->dev, "usb_gadget_map_request failed (%d)\n",
882 dev_dbg(epn->udc->dev, "ep%u dma xfer %zu\n", epn->id,
890 dev_dbg(epn->udc->dev, "ep%u dma not done\n", epn->id);
893 dev_dbg(epn->udc->dev, "ep%u dma done\n", epn->id);
895 usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 1);
910 dev_dbg(epn->udc->dev, "ep%u send residue %u\n", epn->id,
923 dev_dbg(epn->udc->dev, "ep%u send short\n", epn->id);
946 dev_dbg(epn->udc->dev, "ep%u send null\n", epn->id);
953 dev_dbg(epn->udc->dev, "ep%u end not done\n", epn->id);
956 dev_dbg(epn->udc->dev, "ep%u send done %u/%u\n", epn->id,
993 dev_dbg(epn->udc->dev, "ep%u recv %u, left %u, mpkt %u\n", epn->id,
1018 dev_dbg(epn->udc->dev, "ep%u recv %u/%u\n", epn->id,
1022 dev_dbg(epn->udc->dev, "ep%u req.status=%d\n", epn->id,
1029 dev_dbg(epn->udc->dev, "ep%u short packet\n", epn->id);
1044 dev_dbg(epn->udc->dev, "ep%u null packet\n", epn->id);
1118 usbf_reg_bitclr(epn->udc, USBF_REG_AHBBINTEN,
1122 usbf_reg_writel(epn->udc, USBF_REG_AHBBINT,
1152 usbf_reg_bitset(epn->udc, USBF_REG_AHBBINTEN,
1169 dev_err(epn->udc->dev, "ep%u wait bridge timed out\n",
1196 dev_dbg(epn->udc->dev, "ep%u buf unaligned -> fallback pio\n",
1205 dev_dbg(epn->udc->dev, "ep%u null packet\n", epn->id);
1216 dev_dbg(epn->udc->dev, "ep%u OUT_INT not set -> spurious\n",
1224 dev_dbg(epn->udc->dev, "ep%u recv = 0 -> spurious\n",
1231 dev_dbg(epn->udc->dev, "ep%u recv %u, left %u, mpkt %u\n", epn->id,
1235 dev_err(epn->udc->dev, "ep%u overflow (%u/%u)\n",
1243 dev_dbg(epn->udc->dev, "ep%u short packet\n", epn->id);
1249 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n",
1256 ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 0);
1258 dev_err(epn->udc->dev, "map request failed (%d)\n",
1269 dev_dbg(epn->udc->dev, "ep%u dma short xfer %zu\n", epn->id,
1276 ret = usb_gadget_map_request(&epn->udc->gadget, &req->req, 0);
1278 dev_err(epn->udc->dev, "map request failed (%d)\n",
1295 dev_dbg(epn->udc->dev, "ep%u dma xfer %zu (%u)\n", epn->id,
1303 dev_dbg(epn->udc->dev, "ep%u dma short not done\n", epn->id);
1306 dev_dbg(epn->udc->dev, "ep%u dma short done\n", epn->id);
1310 usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
1320 dev_dbg(epn->udc->dev, "ep%u recv residue %u\n", epn->id,
1327 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
1335 dev_dbg(epn->udc->dev, "ep%u dma not done\n", epn->id);
1338 dev_dbg(epn->udc->dev, "ep%u dma done\n", epn->id);
1345 dev_dbg(epn->udc->dev, "ep%u dma xfer done %u\n", epn->id,
1352 dev_dbg(epn->udc->dev, "ep%u dma stopped by null pckt\n",
1354 usb_gadget_unmap_request(&epn->udc->gadget,
1367 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n",
1377 dev_err(epn->udc->dev,
1381 usb_gadget_unmap_request(&epn->udc->gadget,
1395 dev_dbg(epn->udc->dev, "ep%u dma short xfer %zu\n",
1402 usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
1407 dev_dbg(epn->udc->dev, "ep%u recv residue %u\n",
1414 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
1431 dev_dbg(epn->udc->dev, "ep%u bridge transfers done\n", epn->id);
1438 usb_gadget_unmap_request(&epn->udc->gadget, &req->req, 0);
1447 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u\n", epn->id,
1451 dev_dbg(epn->udc->dev, "ep%u recv done %u/%u, wait more data\n",
1478 dev_dbg(epn->udc->dev, "ep%u %s dma abort\n", epn->id,
1485 usb_gadget_unmap_request(&epn->udc->gadget, &req->req,
1505 usbf_reg_writel(epn->udc, USBF_REG_AHBBINT, USBF_SYS_DMA_ENDINT_EPN(epn->id));
1508 usbf_reg_bitset(epn->udc, USBF_REG_AHBBINTEN,
1521 dev_dbg(epn->udc->dev, "ep%u %s fifo flush\n", epn->id,
1534 dev_err(epn->udc->dev, "ep%u flush fifo timed out\n", epn->id);
1549 dev_dbg(ep->udc->dev, "ep%u %s req done length %u/%u, status=%d\n", ep->id,
1556 spin_unlock(&ep->udc->lock);
1558 spin_lock(&ep->udc->lock);
1565 dev_dbg(ep->udc->dev, "ep%u %s nuke status %d\n", ep->id,
1612 dev_err(epn->udc->dev,
1666 dev_err(ep->udc->dev,
1744 dev_dbg(ep->udc->dev, "ep%u %s %s\n", ep->id,
1793 ep0->udc->ep0state = EP0_IDLE;
1797 usbf_reg_bitset(ep0->udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(0));
1832 struct usbf_udc *udc = ep->udc;
1842 dev_dbg(ep->udc->dev, "ep%u %s mpkts %d\n", ep->id,
1846 spin_lock_irqsave(&ep->udc->lock, flags);
1857 usbf_reg_bitset(udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(ep->id));
1862 usbf_reg_bitset(udc, USBF_REG_AHBBINTEN,
1868 spin_unlock_irqrestore(&ep->udc->lock, flags);
1889 struct usbf_udc *udc = ep->udc;
1896 dev_dbg(ep->udc->dev, "ep%u %s mpkts %d\n", ep->id,
1899 spin_lock_irqsave(&ep->udc->lock, flags);
1903 usbf_reg_bitclr(udc, USBF_REG_AHBBINTEN,
1908 usbf_reg_bitclr(udc, USBF_REG_USB_INT_ENA, USBF_USB_EPN_EN(ep->id));
1911 spin_unlock_irqrestore(&ep->udc->lock, flags);
1927 if (ep0->udc->ep0state == EP0_IN_STATUS_START_PHASE)
1933 if (ep0->udc->ep0state == EP0_IN_STATUS_PHASE) {
1935 dev_err(ep0->udc->dev,
1945 dev_err(ep0->udc->dev,
1964 dev_err(ep->udc->dev, "ep%u request queue while disable\n",
1989 struct usbf_udc *udc = ep->udc;
1996 if (!udc || !udc->driver)
1999 dev_dbg(ep->udc->dev, "ep%u %s req queue length %u, zero %u, short_not_ok %u\n",
2003 spin_lock_irqsave(&ep->udc->lock, flags);
2008 spin_unlock_irqrestore(&ep->udc->lock, flags);
2021 spin_lock_irqsave(&ep->udc->lock, flags);
2023 dev_dbg(ep->udc->dev, "ep%u %s req dequeue length %u/%u\n",
2059 ep->udc->ep0state = EP0_IDLE;
2072 spin_unlock_irqrestore(&ep->udc->lock, flags);
2105 spin_lock_irqsave(&ep->udc->lock, flags);
2107 spin_unlock_irqrestore(&ep->udc->lock, flags);
2120 spin_lock_irqsave(&ep->udc->lock, flags);
2133 spin_unlock_irqrestore(&ep->udc->lock, flags);
2147 spin_lock_irqsave(&ep->udc->lock, flags);
2157 spin_unlock_irqrestore(&ep->udc->lock, flags);
2182 memcpy(ep0->udc->ep0_buf, buf, length);
2184 req->req.buf = ep0->udc->ep0_buf;
2194 static struct usbf_ep *usbf_get_ep_by_addr(struct usbf_udc *udc, u8 address)
2200 return &udc->ep[0];
2202 for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
2203 ep = &udc->ep[i];
2215 static int usbf_req_delegate(struct usbf_udc *udc,
2220 spin_unlock(&udc->lock);
2221 ret = udc->driver->setup(&udc->gadget, ctrlrequest);
2222 spin_lock(&udc->lock);
2224 dev_dbg(udc->dev, "udc driver setup failed %d\n", ret);
2228 dev_dbg(udc->dev, "delayed status set\n");
2229 udc->ep[0].delayed_status = 1;
2235 static int usbf_req_get_status(struct usbf_udc *udc,
2254 if (udc->gadget.is_selfpowered)
2257 if (udc->is_remote_wakeup)
2266 ep = usbf_get_ep_by_addr(udc, wIndex);
2285 usbf_ep0_fill_req(&udc->ep[0], &udc->setup_reply, &status_data,
2287 usbf_ep0_queue(&udc->ep[0], &udc->setup_reply, GFP_ATOMIC);
2292 return usbf_req_delegate(udc, ctrlrequest);
2295 static int usbf_req_clear_set_feature(struct usbf_udc *udc,
2316 udc->is_remote_wakeup = is_set;
2323 ep = usbf_get_ep_by_addr(udc, wIndex);
2350 return usbf_req_delegate(udc, ctrlrequest);
2361 usb_gadget_set_state(&ep->udc->gadget, USB_STATE_ADDRESS);
2370 static int usbf_req_set_address(struct usbf_udc *udc,
2393 usbf_reg_writel(udc, USBF_REG_USB_ADDRESS, USBF_USB_SET_USB_ADDR(addr));
2396 usbf_ep0_fill_req(&udc->ep[0], &udc->setup_reply, NULL, 0,
2398 usbf_ep0_queue(&udc->ep[0], &udc->setup_reply, GFP_ATOMIC);
2403 return usbf_req_delegate(udc, ctrlrequest);
2406 static int usbf_req_set_configuration(struct usbf_udc *udc,
2414 ret = usbf_req_delegate(udc, ctrlrequest);
2432 usbf_reg_bitset(udc, USBF_REG_USB_CONTROL, USBF_USB_CONF);
2434 usbf_reg_bitclr(udc, USBF_REG_USB_CONTROL, USBF_USB_CONF);
2436 spin_unlock(&udc->lock);
2437 usb_gadget_set_state(&udc->gadget, USB_STATE_ADDRESS);
2438 spin_lock(&udc->lock);
2450 struct usbf_udc *udc = ep0->udc;
2454 crq.raw[0] = usbf_reg_readl(udc, USBF_REG_SETUP_DATA0);
2455 crq.raw[1] = usbf_reg_readl(udc, USBF_REG_SETUP_DATA1);
2457 dev_dbg(ep0->udc->dev,
2465 udc->ep0state = EP0_IN_DATA_PHASE;
2471 udc->ep0state = EP0_OUT_DATA_PHASE;
2477 udc->ep0state = EP0_IN_STATUS_START_PHASE;
2491 ret = usbf_req_get_status(udc, &crq.ctrlreq);
2495 ret = usbf_req_clear_set_feature(udc, &crq.ctrlreq, false);
2499 ret = usbf_req_clear_set_feature(udc, &crq.ctrlreq, true);
2503 ret = usbf_req_set_address(udc, &crq.ctrlreq);
2507 ret = usbf_req_set_configuration(udc, &crq.ctrlreq);
2517 return usbf_req_delegate(udc, &crq.ctrlreq);
2524 struct usbf_udc *udc = ep0->udc;
2530 dev_err(udc->dev,
2540 udc->ep0state = next_ep0state;
2543 dev_err(udc->dev,
2553 struct usbf_udc *udc = ep0->udc;
2563 usbf_ep0_fill_req(ep0, &udc->setup_reply, NULL, 0, NULL);
2564 usbf_ep0_queue(ep0, &udc->setup_reply, GFP_ATOMIC);
2567 dev_err(udc->dev,
2572 udc->ep0state = EP0_OUT_STATUS_PHASE;
2578 struct usbf_udc *udc = ep0->udc;
2591 dev_dbg(ep0->udc->dev,
2593 udc->ep0state = EP0_IN_STATUS_PHASE;
2597 usbf_ep0_fill_req(ep0, &udc->setup_reply, NULL,
2599 usbf_ep0_queue(ep0, &udc->setup_reply,
2605 dev_err(udc->dev,
2614 udc->ep0state = EP0_IN_STATUS_END_PHASE;
2618 udc->ep0state = EP0_IN_STATUS_PHASE;
2624 struct usbf_udc *udc = ep0->udc;
2632 dev_dbg(ep0->udc->dev, "ep0 status=0x%08x, enable=%08x\n, ctrl=0x%08x\n",
2643 dev_dbg(ep0->udc->dev, "udc->ep0state=%d\n", udc->ep0state);
2646 prev_ep0state = udc->ep0state;
2647 switch (udc->ep0state) {
2653 dev_dbg(ep0->udc->dev, "ep0 handle setup\n");
2662 dev_dbg(ep0->udc->dev, "ep0 handle in data phase\n");
2672 dev_dbg(ep0->udc->dev, "ep0 handle out status start phase\n");
2681 dev_dbg(ep0->udc->dev, "ep0 handle out status phase\n");
2692 dev_dbg(ep0->udc->dev, "ep0 handle out status end phase\n");
2693 udc->ep0state = EP0_IDLE;
2701 dev_dbg(ep0->udc->dev, "ep0 handle out data phase\n");
2711 dev_dbg(ep0->udc->dev, "ep0 handle in status start phase\n");
2720 dev_dbg(ep0->udc->dev, "ep0 handle in status phase\n");
2730 dev_dbg(ep0->udc->dev, "ep0 handle in status end\n");
2731 udc->ep0state = EP0_IDLE;
2735 udc->ep0state = EP0_IDLE;
2740 dev_dbg(ep0->udc->dev, "ep0 failed (%d)\n", ret);
2750 udc->ep0state = EP0_IDLE;
2754 } while ((prev_ep0state != udc->ep0state) || (prev_sts != sts));
2756 dev_dbg(ep0->udc->dev, "ep0 done udc->ep0state=%d, status=0x%08x. next=0x%08x\n",
2757 udc->ep0state, sts,
2768 dev_warn(epn->udc->dev, "ep%u %s, no request available\n",
2779 dev_err(epn->udc->dev, "ep%u %s, process queue failed (%d)\n",
2785 dev_dbg(epn->udc->dev, "ep%u %s failed (%d)\n", epn->id,
2801 dev_dbg(epn->udc->dev, "ep%u %s status=0x%08x, enable=%08x\n, ctrl=0x%08x\n",
2806 dev_warn(epn->udc->dev, "ep%u %s, interrupt while disabled\n",
2815 dev_dbg(epn->udc->dev, "ep%u %s process queue (in interrupts)\n",
2822 dev_dbg(epn->udc->dev, "ep%u %s process queue (out interrupts)\n",
2827 dev_dbg(epn->udc->dev, "ep%u %s done status=0x%08x. next=0x%08x\n",
2839 static void usbf_reset(struct usbf_udc *udc)
2843 for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
2844 if (udc->ep[i].disabled)
2847 usbf_ep_reset(&udc->ep[i]);
2850 if (usbf_reg_readl(udc, USBF_REG_USB_STATUS) & USBF_USB_SPEED_MODE)
2851 udc->gadget.speed = USB_SPEED_HIGH;
2853 udc->gadget.speed = USB_SPEED_FULL;
2856 udc->is_remote_wakeup = false;
2859 usbf_ep0_enable(&udc->ep[0]);
2861 if (udc->driver) {
2863 spin_unlock(&udc->lock);
2864 usb_gadget_udc_reset(&udc->gadget, udc->driver);
2865 spin_lock(&udc->lock);
2869 static void usbf_driver_suspend(struct usbf_udc *udc)
2871 if (udc->is_usb_suspended) {
2872 dev_dbg(udc->dev, "already suspended\n");
2876 dev_dbg(udc->dev, "do usb suspend\n");
2877 udc->is_usb_suspended = true;
2879 if (udc->driver && udc->driver->suspend) {
2880 spin_unlock(&udc->lock);
2881 udc->driver->suspend(&udc->gadget);
2882 spin_lock(&udc->lock);
2894 static void usbf_driver_resume(struct usbf_udc *udc)
2896 if (!udc->is_usb_suspended)
2899 dev_dbg(udc->dev, "do usb resume\n");
2900 udc->is_usb_suspended = false;
2902 if (udc->driver && udc->driver->resume) {
2903 spin_unlock(&udc->lock);
2904 udc->driver->resume(&udc->gadget);
2905 spin_lock(&udc->lock);
2911 struct usbf_udc *udc = (struct usbf_udc *)_udc;
2918 spin_lock_irqsave(&udc->lock, flags);
2920 int_en = usbf_reg_readl(udc, USBF_REG_USB_INT_ENA);
2921 int_sts = usbf_reg_readl(udc, USBF_REG_USB_INT_STA) & int_en;
2922 usbf_reg_writel(udc, USBF_REG_USB_INT_STA, ~int_sts);
2924 dev_dbg(udc->dev, "int_sts=0x%08x\n", int_sts);
2927 dev_dbg(udc->dev, "handle resume\n");
2928 usbf_driver_resume(udc);
2932 dev_dbg(udc->dev, "handle bus reset\n");
2933 usbf_driver_resume(udc);
2934 usbf_reset(udc);
2938 if (usbf_reg_readl(udc, USBF_REG_USB_STATUS) & USBF_USB_SPEED_MODE)
2939 udc->gadget.speed = USB_SPEED_HIGH;
2941 udc->gadget.speed = USB_SPEED_FULL;
2942 dev_dbg(udc->dev, "handle speed change (%s)\n",
2943 udc->gadget.speed == USB_SPEED_HIGH ? "High" : "Full");
2947 usbf_driver_resume(udc);
2948 usbf_ep0_interrupt(&udc->ep[0]);
2951 for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
2952 ep = &udc->ep[i];
2955 usbf_driver_resume(udc);
2961 dev_dbg(udc->dev, "handle suspend\n");
2962 usbf_driver_suspend(udc);
2965 spin_unlock_irqrestore(&udc->lock, flags);
2972 struct usbf_udc *udc = (struct usbf_udc *)_udc;
2979 spin_lock_irqsave(&udc->lock, flags);
2982 sysbint = usbf_reg_readl(udc, USBF_REG_AHBBINT);
2983 usbf_reg_writel(udc, USBF_REG_AHBBINT, sysbint);
2986 if (usbf_reg_readl(udc, USBF_REG_EPCTR) & USBF_SYS_VBUS_LEVEL) {
2987 dev_dbg(udc->dev, "handle vbus (1)\n");
2988 spin_unlock(&udc->lock);
2989 usb_udc_vbus_handler(&udc->gadget, true);
2990 usb_gadget_set_state(&udc->gadget, USB_STATE_POWERED);
2991 spin_lock(&udc->lock);
2993 dev_dbg(udc->dev, "handle vbus (0)\n");
2994 udc->is_usb_suspended = false;
2995 spin_unlock(&udc->lock);
2996 usb_udc_vbus_handler(&udc->gadget, false);
2997 usb_gadget_set_state(&udc->gadget,
2999 spin_lock(&udc->lock);
3003 for (i = 1; i < ARRAY_SIZE(udc->ep); i++) {
3005 epn = &udc->ep[i];
3006 dev_dbg(epn->udc->dev,
3017 spin_unlock_irqrestore(&udc->lock, flags);
3025 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3028 dev_info(udc->dev, "start (driver '%s')\n", driver->driver.name);
3030 spin_lock_irqsave(&udc->lock, flags);
3033 udc->driver = driver;
3036 usbf_reg_writel(udc, USBF_REG_AHBBINTEN, USBF_SYS_VBUS_INTEN);
3038 spin_unlock_irqrestore(&udc->lock, flags);
3045 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3048 spin_lock_irqsave(&udc->lock, flags);
3051 usbf_reg_writel(udc, USBF_REG_AHBBINTEN, 0);
3053 udc->driver = NULL;
3055 spin_unlock_irqrestore(&udc->lock, flags);
3057 dev_info(udc->dev, "stopped\n");
3064 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3066 return USBF_USB_GET_FRAME(usbf_reg_readl(udc, USBF_REG_USB_ADDRESS));
3069 static void usbf_attach(struct usbf_udc *udc)
3077 usbf_reg_clrset(udc, USBF_REG_USB_CONTROL,
3082 usbf_reg_bitset(udc, USBF_REG_USB_INT_ENA,
3086 static void usbf_detach(struct usbf_udc *udc)
3091 usbf_reg_writel(udc, USBF_REG_USB_INT_ENA, 0);
3093 for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
3094 if (udc->ep[i].disabled)
3097 usbf_ep_reset(&udc->ep[i]);
3105 usbf_reg_clrset(udc, USBF_REG_USB_CONTROL,
3112 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3115 dev_dbg(udc->dev, "pullup %d\n", is_on);
3117 spin_lock_irqsave(&udc->lock, flags);
3119 usbf_attach(udc);
3121 usbf_detach(udc);
3122 spin_unlock_irqrestore(&udc->lock, flags);
3130 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3133 spin_lock_irqsave(&udc->lock, flags);
3135 spin_unlock_irqrestore(&udc->lock, flags);
3142 struct usbf_udc *udc = container_of(gadget, struct usbf_udc, gadget);
3146 spin_lock_irqsave(&udc->lock, flags);
3148 if (!udc->is_remote_wakeup) {
3149 dev_dbg(udc->dev, "remote wakeup not allowed\n");
3154 dev_dbg(udc->dev, "do wakeup\n");
3157 usbf_reg_bitset(udc, USBF_REG_USB_CONTROL, USBF_USB_RSUM_IN);
3158 usbf_reg_bitclr(udc, USBF_REG_USB_CONTROL, USBF_USB_RSUM_IN);
3162 spin_unlock_irqrestore(&udc->lock, flags);
3189 dev_err(epn->udc->dev,
3198 dev_err(epn->udc->dev,
3207 dev_err(epn->udc->dev,
3214 dev_err(epn->udc->dev, "ep%u unknown type\n", epn->id);
3222 dev_err(epn->udc->dev,
3230 dev_err(epn->udc->dev,
3237 dev_dbg(epn->udc->dev, "ep%u (%s) %s, %s buffer %u, checked %s\n",
3247 struct usbf_udc *udc;
3253 udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL);
3254 if (!udc)
3256 platform_set_drvdata(pdev, udc);
3258 udc->dev = dev;
3259 spin_lock_init(&udc->lock);
3261 udc->regs = devm_platform_ioremap_resource(pdev, 0);
3262 if (IS_ERR(udc->regs))
3263 return PTR_ERR(udc->regs);
3271 usbf_reg_readl(udc, USBF_REG_USBSSVER));
3276 usbf_reg_bitclr(udc, USBF_REG_EPCTR, USBF_SYS_EPC_RST);
3279 udc->gadget.speed = USB_SPEED_FULL;
3280 udc->gadget.max_speed = USB_SPEED_HIGH;
3281 udc->gadget.ops = &usbf_gadget_ops;
3283 udc->gadget.name = dev->driver->name;
3284 udc->gadget.dev.parent = dev;
3285 udc->gadget.ep0 = &udc->ep[0].ep;
3290 udc->gadget.quirk_avoids_skb_reserve = 1;
3292 INIT_LIST_HEAD(&udc->gadget.ep_list);
3296 INIT_LIST_HEAD(&udc->setup_reply.queue);
3298 for (i = 0; i < ARRAY_SIZE(udc->ep); i++) {
3299 ep = &udc->ep[i];
3301 if (!(usbf_reg_readl(udc, USBF_REG_USBSSCONF) &
3310 ep->udc = udc;
3318 ep->regs = ep->udc->regs + USBF_BASE_EP0;
3320 ep->regs = ep->udc->regs + USBF_BASE_EPN(ep->id - 1);
3324 if (usbf_reg_readl(udc, USBF_REG_USBSSCONF) &
3326 ep->dma_regs = ep->udc->regs +
3329 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
3336 ret = devm_request_irq(dev, irq, usbf_epc_irq, 0, "usbf-epc", udc);
3345 ret = devm_request_irq(dev, irq, usbf_ahb_epc_irq, 0, "usbf-ahb-epc", udc);
3351 usbf_reg_bitset(udc, USBF_REG_AHBMCTR, USBF_SYS_WBURST_TYPE);
3353 usbf_reg_bitset(udc, USBF_REG_USB_CONTROL,
3356 ret = usb_add_gadget_udc(dev, &udc->gadget);
3365 struct usbf_udc *udc = platform_get_drvdata(pdev);
3367 usb_del_gadget_udc(&udc->gadget);