Lines Matching refs:udc

93 #define at91_udp_read(udc, reg) \  argument
94 __raw_readl((udc)->udp_baseaddr + (reg))
95 #define at91_udp_write(udc, reg, val) \ argument
96 __raw_writel((val), (udc)->udp_baseaddr + (reg))
118 struct at91_udc *udc = ep->udc; in proc_ep_show() local
120 spin_lock_irqsave(&udc->lock, flags); in proc_ep_show()
164 spin_unlock_irqrestore(&udc->lock, flags); in proc_ep_show()
188 struct at91_udc *udc = s->private; in proc_udc_show() local
195 udc->vbus ? "present" : "off", in proc_udc_show()
196 udc->enabled in proc_udc_show()
197 ? (udc->vbus ? "active" : "enabled") in proc_udc_show()
199 udc->gadget.is_selfpowered ? "self" : "VBUS", in proc_udc_show()
200 udc->suspended ? ", suspended" : "", in proc_udc_show()
201 udc->driver ? udc->driver->driver.name : "(none)"); in proc_udc_show()
204 if (!udc->clocked) { in proc_udc_show()
209 tmp = at91_udp_read(udc, AT91_UDP_FRM_NUM); in proc_udc_show()
215 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); in proc_udc_show()
223 tmp = at91_udp_read(udc, AT91_UDP_FADDR); in proc_udc_show()
228 proc_irq_show(s, "imr ", at91_udp_read(udc, AT91_UDP_IMR)); in proc_udc_show()
229 proc_irq_show(s, "isr ", at91_udp_read(udc, AT91_UDP_ISR)); in proc_udc_show()
231 if (udc->enabled && udc->vbus) { in proc_udc_show()
232 proc_ep_show(s, &udc->ep[0]); in proc_udc_show()
233 list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) { in proc_udc_show()
254 static void create_debug_file(struct at91_udc *udc) in create_debug_file() argument
256 udc->pde = proc_create_data(debug_filename, 0, NULL, &proc_ops, udc); in create_debug_file()
259 static void remove_debug_file(struct at91_udc *udc) in remove_debug_file() argument
261 if (udc->pde) in remove_debug_file()
267 static inline void create_debug_file(struct at91_udc *udc) {} in create_debug_file() argument
268 static inline void remove_debug_file(struct at91_udc *udc) {} in remove_debug_file() argument
278 struct at91_udc *udc = ep->udc; in done() local
289 spin_unlock(&udc->lock); in done()
291 spin_lock(&udc->lock); in done()
296 at91_udp_write(udc, AT91_UDP_IDR, ep->int_mask); in done()
491 struct at91_udc *udc; in at91_ep_enable() local
505 udc = ep->udc; in at91_ep_enable()
506 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) { in at91_ep_enable()
540 spin_lock_irqsave(&udc->lock, flags); in at91_ep_enable()
558 at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); in at91_ep_enable()
559 at91_udp_write(udc, AT91_UDP_RST_EP, 0); in at91_ep_enable()
561 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_enable()
568 struct at91_udc *udc = ep->udc; in at91_ep_disable() local
571 if (ep == &ep->udc->ep[0]) in at91_ep_disable()
574 spin_lock_irqsave(&udc->lock, flags); in at91_ep_disable()
583 if (ep->udc->clocked) { in at91_ep_disable()
584 at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); in at91_ep_disable()
585 at91_udp_write(udc, AT91_UDP_RST_EP, 0); in at91_ep_disable()
589 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_disable()
625 struct at91_udc *udc; in at91_ep_queue() local
643 udc = ep->udc; in at91_ep_queue()
645 if (!udc || !udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) { in at91_ep_queue()
653 spin_lock_irqsave(&udc->lock, flags); in at91_ep_queue()
671 if (!udc->req_pending) { in at91_ep_queue()
680 if (udc->wait_for_config_ack) { in at91_ep_queue()
681 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); in at91_ep_queue()
684 at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); in at91_ep_queue()
694 udc->req_pending = 0; in at91_ep_queue()
713 at91_udp_write(udc, AT91_UDP_IER, ep->int_mask); in at91_ep_queue()
716 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_queue()
725 struct at91_udc *udc; in at91_ep_dequeue() local
731 udc = ep->udc; in at91_ep_dequeue()
733 spin_lock_irqsave(&udc->lock, flags); in at91_ep_dequeue()
741 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_dequeue()
746 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_dequeue()
753 struct at91_udc *udc = ep->udc; in at91_ep_set_halt() local
759 if (!_ep || ep->is_iso || !ep->udc->clocked) in at91_ep_set_halt()
763 spin_lock_irqsave(&udc->lock, flags); in at91_ep_set_halt()
781 at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); in at91_ep_set_halt()
782 at91_udp_write(udc, AT91_UDP_RST_EP, 0); in at91_ep_set_halt()
788 spin_unlock_irqrestore(&udc->lock, flags); in at91_ep_set_halt()
807 struct at91_udc *udc = to_udc(gadget); in at91_get_frame() local
811 return at91_udp_read(udc, AT91_UDP_FRM_NUM) & AT91_UDP_NUM; in at91_get_frame()
816 struct at91_udc *udc = to_udc(gadget); in at91_wakeup() local
822 spin_lock_irqsave(&udc->lock, flags); in at91_wakeup()
824 if (!udc->clocked || !udc->suspended) in at91_wakeup()
829 glbstate = at91_udp_read(udc, AT91_UDP_GLB_STAT); in at91_wakeup()
833 at91_udp_write(udc, AT91_UDP_GLB_STAT, glbstate); in at91_wakeup()
836 spin_unlock_irqrestore(&udc->lock, flags); in at91_wakeup()
841 static void udc_reinit(struct at91_udc *udc) in udc_reinit() argument
845 INIT_LIST_HEAD(&udc->gadget.ep_list); in udc_reinit()
846 INIT_LIST_HEAD(&udc->gadget.ep0->ep_list); in udc_reinit()
847 udc->gadget.quirk_stall_not_supp = 1; in udc_reinit()
850 struct at91_ep *ep = &udc->ep[i]; in udc_reinit()
853 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list); in udc_reinit()
858 ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i); in udc_reinit()
864 static void reset_gadget(struct at91_udc *udc) in reset_gadget() argument
866 struct usb_gadget_driver *driver = udc->driver; in reset_gadget()
869 if (udc->gadget.speed == USB_SPEED_UNKNOWN) in reset_gadget()
871 udc->gadget.speed = USB_SPEED_UNKNOWN; in reset_gadget()
872 udc->suspended = 0; in reset_gadget()
875 struct at91_ep *ep = &udc->ep[i]; in reset_gadget()
881 spin_unlock(&udc->lock); in reset_gadget()
882 usb_gadget_udc_reset(&udc->gadget, driver); in reset_gadget()
883 spin_lock(&udc->lock); in reset_gadget()
886 udc_reinit(udc); in reset_gadget()
889 static void stop_activity(struct at91_udc *udc) in stop_activity() argument
891 struct usb_gadget_driver *driver = udc->driver; in stop_activity()
894 if (udc->gadget.speed == USB_SPEED_UNKNOWN) in stop_activity()
896 udc->gadget.speed = USB_SPEED_UNKNOWN; in stop_activity()
897 udc->suspended = 0; in stop_activity()
900 struct at91_ep *ep = &udc->ep[i]; in stop_activity()
905 spin_unlock(&udc->lock); in stop_activity()
906 driver->disconnect(&udc->gadget); in stop_activity()
907 spin_lock(&udc->lock); in stop_activity()
910 udc_reinit(udc); in stop_activity()
913 static void clk_on(struct at91_udc *udc) in clk_on() argument
915 if (udc->clocked) in clk_on()
917 udc->clocked = 1; in clk_on()
919 clk_enable(udc->iclk); in clk_on()
920 clk_enable(udc->fclk); in clk_on()
923 static void clk_off(struct at91_udc *udc) in clk_off() argument
925 if (!udc->clocked) in clk_off()
927 udc->clocked = 0; in clk_off()
928 udc->gadget.speed = USB_SPEED_UNKNOWN; in clk_off()
929 clk_disable(udc->fclk); in clk_off()
930 clk_disable(udc->iclk); in clk_off()
937 static void pullup(struct at91_udc *udc, int is_on) in pullup() argument
939 if (!udc->enabled || !udc->vbus) in pullup()
944 clk_on(udc); in pullup()
945 at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM); in pullup()
946 at91_udp_write(udc, AT91_UDP_TXVC, 0); in pullup()
948 stop_activity(udc); in pullup()
949 at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM); in pullup()
950 at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); in pullup()
951 clk_off(udc); in pullup()
954 if (udc->caps && udc->caps->pullup) in pullup()
955 udc->caps->pullup(udc, is_on); in pullup()
961 struct at91_udc *udc = to_udc(gadget); in at91_vbus_session() local
965 spin_lock_irqsave(&udc->lock, flags); in at91_vbus_session()
966 udc->vbus = (is_active != 0); in at91_vbus_session()
967 if (udc->driver) in at91_vbus_session()
968 pullup(udc, is_active); in at91_vbus_session()
970 pullup(udc, 0); in at91_vbus_session()
971 spin_unlock_irqrestore(&udc->lock, flags); in at91_vbus_session()
977 struct at91_udc *udc = to_udc(gadget); in at91_pullup() local
980 spin_lock_irqsave(&udc->lock, flags); in at91_pullup()
981 udc->enabled = is_on = !!is_on; in at91_pullup()
982 pullup(udc, is_on); in at91_pullup()
983 spin_unlock_irqrestore(&udc->lock, flags); in at91_pullup()
989 struct at91_udc *udc = to_udc(gadget); in at91_set_selfpowered() local
992 spin_lock_irqsave(&udc->lock, flags); in at91_set_selfpowered()
994 spin_unlock_irqrestore(&udc->lock, flags); in at91_set_selfpowered()
1062 static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) in handle_setup() argument
1091 udc->wait_for_addr_ack = 0; in handle_setup()
1092 udc->wait_for_config_ack = 0; in handle_setup()
1109 udc->req_pending = 1; in handle_setup()
1118 udc->addr = w_value; in handle_setup()
1119 udc->wait_for_addr_ack = 1; in handle_setup()
1120 udc->req_pending = 0; in handle_setup()
1126 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_CONFG; in handle_setup()
1128 udc->wait_for_config_ack = (tmp == 0); in handle_setup()
1130 udc->wait_for_config_ack = (tmp != 0); in handle_setup()
1131 if (udc->wait_for_config_ack) in handle_setup()
1142 tmp = (udc->gadget.is_selfpowered << USB_DEVICE_SELF_POWERED); in handle_setup()
1143 if (at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_ESR) in handle_setup()
1154 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); in handle_setup()
1156 at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); in handle_setup()
1162 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); in handle_setup()
1164 at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); in handle_setup()
1191 ep = &udc->ep[tmp]; in handle_setup()
1214 ep = &udc->ep[tmp]; in handle_setup()
1233 ep = &udc->ep[tmp]; in handle_setup()
1246 at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); in handle_setup()
1247 at91_udp_write(udc, AT91_UDP_RST_EP, 0); in handle_setup()
1262 if (udc->driver) { in handle_setup()
1263 spin_unlock(&udc->lock); in handle_setup()
1264 status = udc->driver->setup(&udc->gadget, &pkt.r); in handle_setup()
1265 spin_lock(&udc->lock); in handle_setup()
1275 udc->req_pending = 0; in handle_setup()
1285 udc->req_pending = 0; in handle_setup()
1288 static void handle_ep0(struct at91_udc *udc) in handle_ep0() argument
1290 struct at91_ep *ep0 = &udc->ep[0]; in handle_ep0()
1297 udc->req_pending = 0; in handle_ep0()
1306 udc->req_pending = 0; in handle_ep0()
1307 handle_setup(udc, ep0, csr); in handle_ep0()
1324 udc->req_pending = 0; in handle_ep0()
1335 udc->req_pending = 0; in handle_ep0()
1342 if (udc->wait_for_addr_ack) { in handle_ep0()
1345 at91_udp_write(udc, AT91_UDP_FADDR, in handle_ep0()
1346 AT91_UDP_FEN | udc->addr); in handle_ep0()
1347 tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); in handle_ep0()
1349 if (udc->addr) in handle_ep0()
1351 at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); in handle_ep0()
1353 udc->wait_for_addr_ack = 0; in handle_ep0()
1354 VDBG("address %d\n", udc->addr); in handle_ep0()
1374 udc->req_pending = 0; in handle_ep0()
1376 } else if (udc->req_pending) { in handle_ep0()
1396 udc->req_pending = 0; in handle_ep0()
1413 struct at91_udc *udc = _udc; in at91_udc_irq() local
1418 spin_lock_irqsave(&udc->lock, flags); in at91_udc_irq()
1420 if (!udc->clocked) { in at91_udc_irq()
1421 clk_on(udc); in at91_udc_irq()
1428 status = at91_udp_read(udc, AT91_UDP_ISR) in at91_udc_irq()
1429 & at91_udp_read(udc, AT91_UDP_IMR); in at91_udc_irq()
1435 at91_udp_write(udc, AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS); in at91_udc_irq()
1436 at91_udp_write(udc, AT91_UDP_IER, MINIMUS_INTERRUPTUS); in at91_udc_irq()
1438 at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES); in at91_udc_irq()
1439 at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES); in at91_udc_irq()
1441 udc->addr = 0; in at91_udc_irq()
1442 reset_gadget(udc); in at91_udc_irq()
1445 at91_udp_write(udc, AT91_UDP_CSR(0), in at91_udc_irq()
1447 udc->gadget.speed = USB_SPEED_FULL; in at91_udc_irq()
1448 udc->suspended = 0; in at91_udc_irq()
1449 at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_EP(0)); in at91_udc_irq()
1460 at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXSUSP); in at91_udc_irq()
1461 at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXRSM); in at91_udc_irq()
1462 at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXSUSP); in at91_udc_irq()
1464 if (udc->suspended) in at91_udc_irq()
1466 udc->suspended = 1; in at91_udc_irq()
1474 if (udc->driver && udc->driver->suspend) { in at91_udc_irq()
1475 spin_unlock(&udc->lock); in at91_udc_irq()
1476 udc->driver->suspend(&udc->gadget); in at91_udc_irq()
1477 spin_lock(&udc->lock); in at91_udc_irq()
1482 at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM); in at91_udc_irq()
1483 at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXSUSP); in at91_udc_irq()
1484 at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM); in at91_udc_irq()
1486 if (!udc->suspended) in at91_udc_irq()
1488 udc->suspended = 0; in at91_udc_irq()
1495 if (udc->driver && udc->driver->resume) { in at91_udc_irq()
1496 spin_unlock(&udc->lock); in at91_udc_irq()
1497 udc->driver->resume(&udc->gadget); in at91_udc_irq()
1498 spin_lock(&udc->lock); in at91_udc_irq()
1505 struct at91_ep *ep = &udc->ep[1]; in at91_udc_irq()
1508 handle_ep0(udc); in at91_udc_irq()
1519 clk_off(udc); in at91_udc_irq()
1521 spin_unlock_irqrestore(&udc->lock, flags); in at91_udc_irq()
1528 static void at91_vbus_update(struct at91_udc *udc, unsigned value) in at91_vbus_update() argument
1530 value ^= udc->board.vbus_active_low; in at91_vbus_update()
1531 if (value != udc->vbus) in at91_vbus_update()
1532 at91_vbus_session(&udc->gadget, value); in at91_vbus_update()
1537 struct at91_udc *udc = _udc; in at91_vbus_irq() local
1541 at91_vbus_update(udc, gpio_get_value(udc->board.vbus_pin)); in at91_vbus_irq()
1548 struct at91_udc *udc = container_of(work, struct at91_udc, in at91_vbus_timer_work() local
1551 at91_vbus_update(udc, gpio_get_value_cansleep(udc->board.vbus_pin)); in at91_vbus_timer_work()
1553 if (!timer_pending(&udc->vbus_timer)) in at91_vbus_timer_work()
1554 mod_timer(&udc->vbus_timer, jiffies + VBUS_POLL_TIMEOUT); in at91_vbus_timer_work()
1559 struct at91_udc *udc = (struct at91_udc *)data; in at91_vbus_timer() local
1566 schedule_work(&udc->vbus_timer_work); in at91_vbus_timer()
1572 struct at91_udc *udc; in at91_start() local
1574 udc = container_of(gadget, struct at91_udc, gadget); in at91_start()
1575 udc->driver = driver; in at91_start()
1576 udc->gadget.dev.of_node = udc->pdev->dev.of_node; in at91_start()
1577 udc->enabled = 1; in at91_start()
1578 udc->gadget.is_selfpowered = 1; in at91_start()
1585 struct at91_udc *udc; in at91_stop() local
1588 udc = container_of(gadget, struct at91_udc, gadget); in at91_stop()
1589 spin_lock_irqsave(&udc->lock, flags); in at91_stop()
1590 udc->enabled = 0; in at91_stop()
1591 at91_udp_write(udc, AT91_UDP_IDR, ~0); in at91_stop()
1592 spin_unlock_irqrestore(&udc->lock, flags); in at91_stop()
1594 udc->driver = NULL; in at91_stop()
1603 struct at91_udc *udc = platform_get_drvdata(dev); in at91udc_shutdown() local
1607 spin_lock_irqsave(&udc->lock, flags); in at91udc_shutdown()
1609 spin_unlock_irqrestore(&udc->lock, flags); in at91udc_shutdown()
1612 static int at91rm9200_udc_init(struct at91_udc *udc) in at91rm9200_udc_init() argument
1619 ep = &udc->ep[i]; in at91rm9200_udc_init()
1635 if (!gpio_is_valid(udc->board.pullup_pin)) { in at91rm9200_udc_init()
1640 ret = devm_gpio_request(&udc->pdev->dev, udc->board.pullup_pin, in at91rm9200_udc_init()
1647 gpio_direction_output(udc->board.pullup_pin, in at91rm9200_udc_init()
1648 udc->board.pullup_active_low); in at91rm9200_udc_init()
1653 static void at91rm9200_udc_pullup(struct at91_udc *udc, int is_on) in at91rm9200_udc_pullup() argument
1655 int active = !udc->board.pullup_active_low; in at91rm9200_udc_pullup()
1658 gpio_set_value(udc->board.pullup_pin, active); in at91rm9200_udc_pullup()
1660 gpio_set_value(udc->board.pullup_pin, !active); in at91rm9200_udc_pullup()
1668 static int at91sam9260_udc_init(struct at91_udc *udc) in at91sam9260_udc_init() argument
1674 ep = &udc->ep[i]; in at91sam9260_udc_init()
1689 static void at91sam9260_udc_pullup(struct at91_udc *udc, int is_on) in at91sam9260_udc_pullup() argument
1691 u32 txvc = at91_udp_read(udc, AT91_UDP_TXVC); in at91sam9260_udc_pullup()
1698 at91_udp_write(udc, AT91_UDP_TXVC, txvc); in at91sam9260_udc_pullup()
1706 static int at91sam9261_udc_init(struct at91_udc *udc) in at91sam9261_udc_init() argument
1712 ep = &udc->ep[i]; in at91sam9261_udc_init()
1727 udc->matrix = syscon_regmap_lookup_by_phandle(udc->pdev->dev.of_node, in at91sam9261_udc_init()
1729 if (IS_ERR(udc->matrix)) in at91sam9261_udc_init()
1730 return PTR_ERR(udc->matrix); in at91sam9261_udc_init()
1735 static void at91sam9261_udc_pullup(struct at91_udc *udc, int is_on) in at91sam9261_udc_pullup() argument
1742 regmap_update_bits(udc->matrix, AT91SAM9261_MATRIX_USBPUCR, in at91sam9261_udc_pullup()
1751 static int at91sam9263_udc_init(struct at91_udc *udc) in at91sam9263_udc_init() argument
1757 ep = &udc->ep[i]; in at91sam9263_udc_init()
1802 static void at91udc_of_init(struct at91_udc *udc, struct device_node *np) in at91udc_of_init() argument
1804 struct at91_udc_data *board = &udc->board; in at91udc_of_init()
1823 udc->caps = match->data; in at91udc_of_init()
1829 struct at91_udc *udc; in at91udc_probe() local
1835 udc = devm_kzalloc(dev, sizeof(*udc), GFP_KERNEL); in at91udc_probe()
1836 if (!udc) in at91udc_probe()
1840 udc->gadget.dev.parent = dev; in at91udc_probe()
1841 at91udc_of_init(udc, pdev->dev.of_node); in at91udc_probe()
1842 udc->pdev = pdev; in at91udc_probe()
1843 udc->enabled = 0; in at91udc_probe()
1844 spin_lock_init(&udc->lock); in at91udc_probe()
1846 udc->gadget.ops = &at91_udc_ops; in at91udc_probe()
1847 udc->gadget.ep0 = &udc->ep[0].ep; in at91udc_probe()
1848 udc->gadget.name = driver_name; in at91udc_probe()
1849 udc->gadget.dev.init_name = "gadget"; in at91udc_probe()
1852 ep = &udc->ep[i]; in at91udc_probe()
1856 ep->udc = udc; in at91udc_probe()
1863 udc->udp_baseaddr = devm_ioremap_resource(dev, res); in at91udc_probe()
1864 if (IS_ERR(udc->udp_baseaddr)) in at91udc_probe()
1865 return PTR_ERR(udc->udp_baseaddr); in at91udc_probe()
1867 if (udc->caps && udc->caps->init) { in at91udc_probe()
1868 retval = udc->caps->init(udc); in at91udc_probe()
1873 udc_reinit(udc); in at91udc_probe()
1876 udc->iclk = devm_clk_get(dev, "pclk"); in at91udc_probe()
1877 if (IS_ERR(udc->iclk)) in at91udc_probe()
1878 return PTR_ERR(udc->iclk); in at91udc_probe()
1880 udc->fclk = devm_clk_get(dev, "hclk"); in at91udc_probe()
1881 if (IS_ERR(udc->fclk)) in at91udc_probe()
1882 return PTR_ERR(udc->fclk); in at91udc_probe()
1885 clk_set_rate(udc->fclk, 48000000); in at91udc_probe()
1886 retval = clk_prepare(udc->fclk); in at91udc_probe()
1890 retval = clk_prepare_enable(udc->iclk); in at91udc_probe()
1894 at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); in at91udc_probe()
1895 at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff); in at91udc_probe()
1897 at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff); in at91udc_probe()
1898 clk_disable(udc->iclk); in at91udc_probe()
1901 udc->udp_irq = platform_get_irq(pdev, 0); in at91udc_probe()
1902 retval = devm_request_irq(dev, udc->udp_irq, at91_udc_irq, 0, in at91udc_probe()
1903 driver_name, udc); in at91udc_probe()
1905 DBG("request irq %d failed\n", udc->udp_irq); in at91udc_probe()
1909 if (gpio_is_valid(udc->board.vbus_pin)) { in at91udc_probe()
1910 retval = devm_gpio_request(dev, udc->board.vbus_pin, in at91udc_probe()
1917 gpio_direction_input(udc->board.vbus_pin); in at91udc_probe()
1923 udc->vbus = gpio_get_value_cansleep(udc->board.vbus_pin) ^ in at91udc_probe()
1924 udc->board.vbus_active_low; in at91udc_probe()
1926 if (udc->board.vbus_polled) { in at91udc_probe()
1927 INIT_WORK(&udc->vbus_timer_work, at91_vbus_timer_work); in at91udc_probe()
1928 setup_timer(&udc->vbus_timer, at91_vbus_timer, in at91udc_probe()
1929 (unsigned long)udc); in at91udc_probe()
1930 mod_timer(&udc->vbus_timer, in at91udc_probe()
1934 gpio_to_irq(udc->board.vbus_pin), in at91udc_probe()
1935 at91_vbus_irq, 0, driver_name, udc); in at91udc_probe()
1938 udc->board.vbus_pin); in at91udc_probe()
1944 udc->vbus = 1; in at91udc_probe()
1946 retval = usb_add_gadget_udc(dev, &udc->gadget); in at91udc_probe()
1949 dev_set_drvdata(dev, udc); in at91udc_probe()
1951 create_debug_file(udc); in at91udc_probe()
1957 clk_unprepare(udc->iclk); in at91udc_probe()
1959 clk_unprepare(udc->fclk); in at91udc_probe()
1968 struct at91_udc *udc = platform_get_drvdata(pdev); in at91udc_remove() local
1973 usb_del_gadget_udc(&udc->gadget); in at91udc_remove()
1974 if (udc->driver) in at91udc_remove()
1977 spin_lock_irqsave(&udc->lock, flags); in at91udc_remove()
1978 pullup(udc, 0); in at91udc_remove()
1979 spin_unlock_irqrestore(&udc->lock, flags); in at91udc_remove()
1982 remove_debug_file(udc); in at91udc_remove()
1983 clk_unprepare(udc->fclk); in at91udc_remove()
1984 clk_unprepare(udc->iclk); in at91udc_remove()
1992 struct at91_udc *udc = platform_get_drvdata(pdev); in at91udc_suspend() local
1993 int wake = udc->driver && device_may_wakeup(&pdev->dev); in at91udc_suspend()
2001 if ((!udc->suspended && udc->addr) in at91udc_suspend()
2004 spin_lock_irqsave(&udc->lock, flags); in at91udc_suspend()
2005 pullup(udc, 0); in at91udc_suspend()
2007 spin_unlock_irqrestore(&udc->lock, flags); in at91udc_suspend()
2009 enable_irq_wake(udc->udp_irq); in at91udc_suspend()
2011 udc->active_suspend = wake; in at91udc_suspend()
2012 if (gpio_is_valid(udc->board.vbus_pin) && !udc->board.vbus_polled && wake) in at91udc_suspend()
2013 enable_irq_wake(udc->board.vbus_pin); in at91udc_suspend()
2019 struct at91_udc *udc = platform_get_drvdata(pdev); in at91udc_resume() local
2022 if (gpio_is_valid(udc->board.vbus_pin) && !udc->board.vbus_polled && in at91udc_resume()
2023 udc->active_suspend) in at91udc_resume()
2024 disable_irq_wake(udc->board.vbus_pin); in at91udc_resume()
2027 if (udc->active_suspend) in at91udc_resume()
2028 disable_irq_wake(udc->udp_irq); in at91udc_resume()
2030 spin_lock_irqsave(&udc->lock, flags); in at91udc_resume()
2031 pullup(udc, 1); in at91udc_resume()
2032 spin_unlock_irqrestore(&udc->lock, flags); in at91udc_resume()