Lines Matching refs:udc

47 	spin_lock_irq(&ep->udc->lock);  in queue_dbg_open()
54 spin_unlock_irq(&ep->udc->lock); in queue_dbg_open()
60 spin_unlock_irq(&ep->udc->lock); in queue_dbg_open()
141 struct usba_udc *udc; in regs_dbg_open() local
147 udc = inode->i_private; in regs_dbg_open()
152 spin_lock_irq(&udc->lock); in regs_dbg_open()
154 data[i] = readl_relaxed(udc->regs + i * 4); in regs_dbg_open()
155 spin_unlock_irq(&udc->lock); in regs_dbg_open()
203 static void usba_ep_init_debugfs(struct usba_udc *udc, in usba_ep_init_debugfs() argument
208 ep_root = debugfs_create_dir(ep->ep.name, udc->debugfs_root); in usba_ep_init_debugfs()
224 static void usba_init_debugfs(struct usba_udc *udc) in usba_init_debugfs() argument
229 root = debugfs_create_dir(udc->gadget.name, NULL); in usba_init_debugfs()
230 udc->debugfs_root = root; in usba_init_debugfs()
232 regs_resource = platform_get_resource(udc->pdev, IORESOURCE_MEM, in usba_init_debugfs()
236 debugfs_create_file_size("regs", 0400, root, udc, in usba_init_debugfs()
241 usba_ep_init_debugfs(udc, to_usba_ep(udc->gadget.ep0)); in usba_init_debugfs()
244 static void usba_cleanup_debugfs(struct usba_udc *udc) in usba_cleanup_debugfs() argument
246 usba_ep_cleanup_debugfs(to_usba_ep(udc->gadget.ep0)); in usba_cleanup_debugfs()
247 debugfs_remove_recursive(udc->debugfs_root); in usba_cleanup_debugfs()
250 static inline void usba_ep_init_debugfs(struct usba_udc *udc, in usba_ep_init_debugfs() argument
261 static inline void usba_init_debugfs(struct usba_udc *udc) in usba_init_debugfs() argument
266 static inline void usba_cleanup_debugfs(struct usba_udc *udc) in usba_cleanup_debugfs() argument
323 static int usba_config_fifo_table(struct usba_udc *udc) in usba_config_fifo_table() argument
331 udc->fifo_cfg = NULL; in usba_config_fifo_table()
335 udc->fifo_cfg = mode_1_cfg; in usba_config_fifo_table()
339 udc->fifo_cfg = mode_2_cfg; in usba_config_fifo_table()
343 udc->fifo_cfg = mode_3_cfg; in usba_config_fifo_table()
347 udc->fifo_cfg = mode_4_cfg; in usba_config_fifo_table()
356 static inline u32 usba_int_enb_get(struct usba_udc *udc) in usba_int_enb_get() argument
358 return udc->int_enb_cache; in usba_int_enb_get()
361 static inline void usba_int_enb_set(struct usba_udc *udc, u32 val) in usba_int_enb_set() argument
363 usba_writel(udc, INT_ENB, val); in usba_int_enb_set()
364 udc->int_enb_cache = val; in usba_int_enb_set()
367 static int vbus_is_present(struct usba_udc *udc) in vbus_is_present() argument
369 if (udc->vbus_pin) in vbus_is_present()
370 return gpiod_get_value(udc->vbus_pin); in vbus_is_present()
376 static void toggle_bias(struct usba_udc *udc, int is_on) in toggle_bias() argument
378 if (udc->errata && udc->errata->toggle_bias) in toggle_bias()
379 udc->errata->toggle_bias(udc, is_on); in toggle_bias()
382 static void generate_bias_pulse(struct usba_udc *udc) in generate_bias_pulse() argument
384 if (!udc->bias_pulse_needed) in generate_bias_pulse()
387 if (udc->errata && udc->errata->pulse_bias) in generate_bias_pulse()
388 udc->errata->pulse_bias(udc); in generate_bias_pulse()
390 udc->bias_pulse_needed = false; in generate_bias_pulse()
461 static void send_status(struct usba_udc *udc, struct usba_ep *ep) in send_status() argument
470 struct usba_udc *udc = ep->udc; in receive_data() local
509 spin_unlock(&udc->lock); in receive_data()
511 spin_lock(&udc->lock); in receive_data()
518 send_status(udc, ep); in receive_data()
527 struct usba_udc *udc = ep->udc; in request_complete() local
535 usb_gadget_unmap_request(&udc->gadget, &req->req, ep->is_in); in request_complete()
541 spin_unlock(&udc->lock); in request_complete()
543 spin_lock(&udc->lock); in request_complete()
561 struct usba_udc *udc = ep->udc; in usba_ep_enable() local
621 spin_lock_irqsave(&ep->udc->lock, flags); in usba_ep_enable()
632 usba_int_enb_set(udc, usba_int_enb_get(udc) | in usba_ep_enable()
638 usba_int_enb_set(udc, usba_int_enb_get(udc) | in usba_ep_enable()
642 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_enable()
647 (unsigned long)usba_int_enb_get(udc)); in usba_ep_enable()
655 struct usba_udc *udc = ep->udc; in usba_ep_disable() local
661 spin_lock_irqsave(&udc->lock, flags); in usba_ep_disable()
664 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_disable()
669 if (udc->gadget.speed != USB_SPEED_UNKNOWN) in usba_ep_disable()
683 usba_int_enb_set(udc, usba_int_enb_get(udc) & in usba_ep_disable()
688 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_disable()
719 static int queue_dma(struct usba_udc *udc, struct usba_ep *ep, in queue_dma() argument
737 ret = usb_gadget_map_request(&udc->gadget, &req->req, ep->is_in); in queue_dma()
755 spin_lock_irqsave(&udc->lock, flags); in queue_dma()
763 spin_unlock_irqrestore(&udc->lock, flags); in queue_dma()
773 struct usba_udc *udc = ep->udc; in usba_ep_queue() local
780 if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN || in usba_ep_queue()
792 return queue_dma(udc, ep, req, gfp_flags); in usba_ep_queue()
796 spin_lock_irqsave(&udc->lock, flags); in usba_ep_queue()
809 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_queue()
843 dev_err(&ep->udc->pdev->dev, in stop_dma()
855 struct usba_udc *udc = ep->udc; in usba_ep_dequeue() local
863 spin_lock_irqsave(&udc->lock, flags); in usba_ep_dequeue()
871 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_dequeue()
889 usba_writel(udc, EPT_RST, 1 << ep->index); in usba_ep_dequeue()
905 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_dequeue()
913 struct usba_udc *udc = ep->udc; in usba_ep_set_halt() local
931 spin_lock_irqsave(&udc->lock, flags); in usba_ep_set_halt()
950 spin_unlock_irqrestore(&udc->lock, flags); in usba_ep_set_halt()
965 struct usba_udc *udc = ep->udc; in usba_ep_fifo_flush() local
967 usba_writel(udc, EPT_RST, 1 << ep->index); in usba_ep_fifo_flush()
984 struct usba_udc *udc = to_usba_udc(gadget); in usba_udc_get_frame() local
986 return USBA_BFEXT(FRAME_NUMBER, usba_readl(udc, FNUM)); in usba_udc_get_frame()
991 struct usba_udc *udc = to_usba_udc(gadget); in usba_udc_wakeup() local
996 spin_lock_irqsave(&udc->lock, flags); in usba_udc_wakeup()
997 if (udc->devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { in usba_udc_wakeup()
998 ctrl = usba_readl(udc, CTRL); in usba_udc_wakeup()
999 usba_writel(udc, CTRL, ctrl | USBA_REMOTE_WAKE_UP); in usba_udc_wakeup()
1002 spin_unlock_irqrestore(&udc->lock, flags); in usba_udc_wakeup()
1010 struct usba_udc *udc = to_usba_udc(gadget); in usba_udc_set_selfpowered() local
1014 spin_lock_irqsave(&udc->lock, flags); in usba_udc_set_selfpowered()
1016 udc->devstatus |= 1 << USB_DEVICE_SELF_POWERED; in usba_udc_set_selfpowered()
1018 udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED); in usba_udc_set_selfpowered()
1019 spin_unlock_irqrestore(&udc->lock, flags); in usba_udc_set_selfpowered()
1087 ep->udc->configured_ep++; in atmel_usba_match_ep()
1121 static void reset_all_endpoints(struct usba_udc *udc) in reset_all_endpoints() argument
1126 usba_writel(udc, EPT_RST, ~0UL); in reset_all_endpoints()
1128 ep = to_usba_ep(udc->gadget.ep0); in reset_all_endpoints()
1135 static struct usba_ep *get_ep_by_addr(struct usba_udc *udc, u16 wIndex) in get_ep_by_addr() argument
1140 return to_usba_ep(udc->gadget.ep0); in get_ep_by_addr()
1142 list_for_each_entry (ep, &udc->gadget.ep_list, ep.ep_list) { in get_ep_by_addr()
1159 static inline void set_protocol_stall(struct usba_udc *udc, struct usba_ep *ep) in set_protocol_stall() argument
1165 static inline int is_stalled(struct usba_udc *udc, struct usba_ep *ep) in is_stalled() argument
1172 static inline void set_address(struct usba_udc *udc, unsigned int addr) in set_address() argument
1177 regval = usba_readl(udc, CTRL); in set_address()
1179 usba_writel(udc, CTRL, regval); in set_address()
1182 static int do_test_mode(struct usba_udc *udc) in do_test_mode() argument
1200 struct device *dev = &udc->pdev->dev; in do_test_mode()
1203 test_mode = udc->test_mode; in do_test_mode()
1206 reset_all_endpoints(udc); in do_test_mode()
1211 usba_writel(udc, TST, USBA_TST_J_MODE); in do_test_mode()
1216 usba_writel(udc, TST, USBA_TST_K_MODE); in do_test_mode()
1224 ep = &udc->usba_ep[0]; in do_test_mode()
1225 usba_writel(udc, TST, in do_test_mode()
1233 set_protocol_stall(udc, ep); in do_test_mode()
1242 ep = &udc->usba_ep[0]; in do_test_mode()
1249 set_protocol_stall(udc, ep); in do_test_mode()
1253 usba_writel(udc, TST, USBA_TST_PKT_MODE); in do_test_mode()
1290 static int handle_ep0_setup(struct usba_udc *udc, struct usba_ep *ep, in handle_ep0_setup() argument
1300 status = cpu_to_le16(udc->devstatus); in handle_ep0_setup()
1308 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex)); in handle_ep0_setup()
1313 if (is_stalled(udc, target)) in handle_ep0_setup()
1330 udc->devstatus in handle_ep0_setup()
1341 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex)); in handle_ep0_setup()
1353 send_status(udc, ep); in handle_ep0_setup()
1360 send_status(udc, ep); in handle_ep0_setup()
1362 udc->test_mode = le16_to_cpu(crq->wIndex); in handle_ep0_setup()
1365 udc->devstatus |= 1 << USB_DEVICE_REMOTE_WAKEUP; in handle_ep0_setup()
1376 target = get_ep_by_addr(udc, le16_to_cpu(crq->wIndex)); in handle_ep0_setup()
1384 send_status(udc, ep); in handle_ep0_setup()
1392 set_address(udc, le16_to_cpu(crq->wValue)); in handle_ep0_setup()
1393 send_status(udc, ep); in handle_ep0_setup()
1399 spin_unlock(&udc->lock); in handle_ep0_setup()
1400 retval = udc->driver->setup(&udc->gadget, crq); in handle_ep0_setup()
1401 spin_lock(&udc->lock); in handle_ep0_setup()
1412 set_protocol_stall(udc, ep); in handle_ep0_setup()
1416 static void usba_control_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_control_irq() argument
1457 usba_writel(udc, CTRL, (usba_readl(udc, CTRL) in usba_control_irq()
1474 if (do_test_mode(udc)) in usba_control_irq()
1475 set_protocol_stall(udc, ep); in usba_control_irq()
1481 set_protocol_stall(udc, ep); in usba_control_irq()
1510 set_protocol_stall(udc, ep); in usba_control_irq()
1554 set_protocol_stall(udc, ep); in usba_control_irq()
1586 ret = handle_ep0_setup(udc, ep, &crq.crq); in usba_control_irq()
1588 spin_unlock(&udc->lock); in usba_control_irq()
1589 ret = udc->driver->setup(&udc->gadget, &crq.crq); in usba_control_irq()
1590 spin_lock(&udc->lock); in usba_control_irq()
1599 set_protocol_stall(udc, ep); in usba_control_irq()
1604 static void usba_ep_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_ep_irq() argument
1619 dev_warn(&udc->pdev->dev, "ep_irq: queue empty\n"); in usba_ep_irq()
1657 static void usba_dma_irq(struct usba_udc *udc, struct usba_ep *ep) in usba_dma_irq() argument
1671 dev_err(&udc->pdev->dev, in usba_dma_irq()
1673 dev_err(&udc->pdev->dev, in usba_dma_irq()
1699 struct usba_udc *udc = devid; in usba_udc_irq() local
1704 spin_lock(&udc->lock); in usba_udc_irq()
1706 int_enb = usba_int_enb_get(udc); in usba_udc_irq()
1707 status = usba_readl(udc, INT_STA) & (int_enb | USBA_HIGH_SPEED); in usba_udc_irq()
1711 toggle_bias(udc, 0); in usba_udc_irq()
1712 usba_writel(udc, INT_CLR, USBA_DET_SUSPEND); in usba_udc_irq()
1713 usba_int_enb_set(udc, int_enb | USBA_WAKE_UP); in usba_udc_irq()
1714 udc->bias_pulse_needed = true; in usba_udc_irq()
1716 if (udc->gadget.speed != USB_SPEED_UNKNOWN in usba_udc_irq()
1717 && udc->driver && udc->driver->suspend) { in usba_udc_irq()
1718 spin_unlock(&udc->lock); in usba_udc_irq()
1719 udc->driver->suspend(&udc->gadget); in usba_udc_irq()
1720 spin_lock(&udc->lock); in usba_udc_irq()
1725 toggle_bias(udc, 1); in usba_udc_irq()
1726 usba_writel(udc, INT_CLR, USBA_WAKE_UP); in usba_udc_irq()
1727 usba_int_enb_set(udc, int_enb & ~USBA_WAKE_UP); in usba_udc_irq()
1732 usba_writel(udc, INT_CLR, USBA_END_OF_RESUME); in usba_udc_irq()
1733 generate_bias_pulse(udc); in usba_udc_irq()
1735 if (udc->gadget.speed != USB_SPEED_UNKNOWN in usba_udc_irq()
1736 && udc->driver && udc->driver->resume) { in usba_udc_irq()
1737 spin_unlock(&udc->lock); in usba_udc_irq()
1738 udc->driver->resume(&udc->gadget); in usba_udc_irq()
1739 spin_lock(&udc->lock); in usba_udc_irq()
1749 usba_dma_irq(udc, &udc->usba_ep[i]); in usba_udc_irq()
1756 for (i = 0; i < udc->num_ep; i++) in usba_udc_irq()
1758 if (ep_is_control(&udc->usba_ep[i])) in usba_udc_irq()
1759 usba_control_irq(udc, &udc->usba_ep[i]); in usba_udc_irq()
1761 usba_ep_irq(udc, &udc->usba_ep[i]); in usba_udc_irq()
1769 usba_writel(udc, INT_CLR, USBA_END_OF_RESET); in usba_udc_irq()
1770 generate_bias_pulse(udc); in usba_udc_irq()
1771 reset_all_endpoints(udc); in usba_udc_irq()
1773 if (udc->gadget.speed != USB_SPEED_UNKNOWN && udc->driver) { in usba_udc_irq()
1774 udc->gadget.speed = USB_SPEED_UNKNOWN; in usba_udc_irq()
1775 spin_unlock(&udc->lock); in usba_udc_irq()
1776 usb_gadget_udc_reset(&udc->gadget, udc->driver); in usba_udc_irq()
1777 spin_lock(&udc->lock); in usba_udc_irq()
1781 udc->gadget.speed = USB_SPEED_HIGH; in usba_udc_irq()
1783 udc->gadget.speed = USB_SPEED_FULL; in usba_udc_irq()
1785 usb_speed_string(udc->gadget.speed)); in usba_udc_irq()
1787 ep0 = &udc->usba_ep[0]; in usba_udc_irq()
1796 usba_int_enb_set(udc, int_enb | USBA_BF(EPT_INT, 1) | in usba_udc_irq()
1804 dev_err(&udc->pdev->dev, in usba_udc_irq()
1808 n = fifo_mode ? udc->num_ep : udc->configured_ep; in usba_udc_irq()
1810 ep = &udc->usba_ep[i]; in usba_udc_irq()
1813 dev_err(&udc->pdev->dev, in usba_udc_irq()
1818 spin_unlock(&udc->lock); in usba_udc_irq()
1823 static int start_clock(struct usba_udc *udc) in start_clock() argument
1827 if (udc->clocked) in start_clock()
1830 ret = clk_prepare_enable(udc->pclk); in start_clock()
1833 ret = clk_prepare_enable(udc->hclk); in start_clock()
1835 clk_disable_unprepare(udc->pclk); in start_clock()
1839 udc->clocked = true; in start_clock()
1843 static void stop_clock(struct usba_udc *udc) in stop_clock() argument
1845 if (!udc->clocked) in stop_clock()
1848 clk_disable_unprepare(udc->hclk); in stop_clock()
1849 clk_disable_unprepare(udc->pclk); in stop_clock()
1851 udc->clocked = false; in stop_clock()
1854 static int usba_start(struct usba_udc *udc) in usba_start() argument
1859 ret = start_clock(udc); in usba_start()
1863 spin_lock_irqsave(&udc->lock, flags); in usba_start()
1864 toggle_bias(udc, 1); in usba_start()
1865 usba_writel(udc, CTRL, USBA_ENABLE_MASK); in usba_start()
1866 usba_int_enb_set(udc, USBA_END_OF_RESET); in usba_start()
1867 spin_unlock_irqrestore(&udc->lock, flags); in usba_start()
1872 static void usba_stop(struct usba_udc *udc) in usba_stop() argument
1876 spin_lock_irqsave(&udc->lock, flags); in usba_stop()
1877 udc->gadget.speed = USB_SPEED_UNKNOWN; in usba_stop()
1878 reset_all_endpoints(udc); in usba_stop()
1881 toggle_bias(udc, 0); in usba_stop()
1882 usba_writel(udc, CTRL, USBA_DISABLE_MASK); in usba_stop()
1883 spin_unlock_irqrestore(&udc->lock, flags); in usba_stop()
1885 stop_clock(udc); in usba_stop()
1890 struct usba_udc *udc = devid; in usba_vbus_irq_thread() local
1896 mutex_lock(&udc->vbus_mutex); in usba_vbus_irq_thread()
1898 vbus = vbus_is_present(udc); in usba_vbus_irq_thread()
1899 if (vbus != udc->vbus_prev) { in usba_vbus_irq_thread()
1901 usba_start(udc); in usba_vbus_irq_thread()
1903 usba_stop(udc); in usba_vbus_irq_thread()
1905 if (udc->driver->disconnect) in usba_vbus_irq_thread()
1906 udc->driver->disconnect(&udc->gadget); in usba_vbus_irq_thread()
1908 udc->vbus_prev = vbus; in usba_vbus_irq_thread()
1911 mutex_unlock(&udc->vbus_mutex); in usba_vbus_irq_thread()
1919 struct usba_udc *udc = container_of(gadget, struct usba_udc, gadget); in atmel_usba_start() local
1922 spin_lock_irqsave(&udc->lock, flags); in atmel_usba_start()
1923 udc->devstatus = 1 << USB_DEVICE_SELF_POWERED; in atmel_usba_start()
1924 udc->driver = driver; in atmel_usba_start()
1925 spin_unlock_irqrestore(&udc->lock, flags); in atmel_usba_start()
1927 mutex_lock(&udc->vbus_mutex); in atmel_usba_start()
1929 if (udc->vbus_pin) in atmel_usba_start()
1930 enable_irq(gpiod_to_irq(udc->vbus_pin)); in atmel_usba_start()
1933 udc->vbus_prev = vbus_is_present(udc); in atmel_usba_start()
1934 if (udc->vbus_prev) { in atmel_usba_start()
1935 ret = usba_start(udc); in atmel_usba_start()
1940 mutex_unlock(&udc->vbus_mutex); in atmel_usba_start()
1944 if (udc->vbus_pin) in atmel_usba_start()
1945 disable_irq(gpiod_to_irq(udc->vbus_pin)); in atmel_usba_start()
1947 mutex_unlock(&udc->vbus_mutex); in atmel_usba_start()
1949 spin_lock_irqsave(&udc->lock, flags); in atmel_usba_start()
1950 udc->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED); in atmel_usba_start()
1951 udc->driver = NULL; in atmel_usba_start()
1952 spin_unlock_irqrestore(&udc->lock, flags); in atmel_usba_start()
1958 struct usba_udc *udc = container_of(gadget, struct usba_udc, gadget); in atmel_usba_stop() local
1960 if (udc->vbus_pin) in atmel_usba_stop()
1961 disable_irq(gpiod_to_irq(udc->vbus_pin)); in atmel_usba_stop()
1964 udc->configured_ep = 1; in atmel_usba_stop()
1966 usba_stop(udc); in atmel_usba_stop()
1968 udc->driver = NULL; in atmel_usba_stop()
1973 static void at91sam9rl_toggle_bias(struct usba_udc *udc, int is_on) in at91sam9rl_toggle_bias() argument
1975 regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN, in at91sam9rl_toggle_bias()
1979 static void at91sam9g45_pulse_bias(struct usba_udc *udc) in at91sam9g45_pulse_bias() argument
1981 regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN, 0); in at91sam9g45_pulse_bias()
1982 regmap_update_bits(udc->pmc, AT91_CKGR_UCKR, AT91_PMC_BIASEN, in at91sam9g45_pulse_bias()
2004 struct usba_udc *udc) in atmel_udc_of_init() argument
2018 udc->errata = match->data; in atmel_udc_of_init()
2019 udc->pmc = syscon_regmap_lookup_by_compatible("atmel,at91sam9g45-pmc"); in atmel_udc_of_init()
2020 if (IS_ERR(udc->pmc)) in atmel_udc_of_init()
2021 udc->pmc = syscon_regmap_lookup_by_compatible("atmel,at91sam9x5-pmc"); in atmel_udc_of_init()
2022 if (udc->errata && IS_ERR(udc->pmc)) in atmel_udc_of_init()
2023 return ERR_CAST(udc->pmc); in atmel_udc_of_init()
2025 udc->num_ep = 0; in atmel_udc_of_init()
2027 udc->vbus_pin = devm_gpiod_get_optional(&pdev->dev, "atmel,vbus", in atmel_udc_of_init()
2033 udc->num_ep++; in atmel_udc_of_init()
2034 udc->configured_ep = 1; in atmel_udc_of_init()
2036 udc->num_ep = usba_config_fifo_table(udc); in atmel_udc_of_init()
2039 eps = devm_kcalloc(&pdev->dev, udc->num_ep, sizeof(struct usba_ep), in atmel_udc_of_init()
2044 udc->gadget.ep0 = &eps[0].ep; in atmel_udc_of_init()
2050 while ((pp = of_get_next_child(np, pp)) && i < udc->num_ep) { in atmel_udc_of_init()
2058 ep->index = fifo_mode ? udc->fifo_cfg[i].hw_ep_num : val; in atmel_udc_of_init()
2066 if (val < udc->fifo_cfg[i].fifo_size) { in atmel_udc_of_init()
2071 ep->fifo_size = udc->fifo_cfg[i].fifo_size; in atmel_udc_of_init()
2083 if (val < udc->fifo_cfg[i].nr_banks) { in atmel_udc_of_init()
2088 ep->nr_banks = udc->fifo_cfg[i].nr_banks; in atmel_udc_of_init()
2105 ep->ep_regs = udc->regs + USBA_EPT_BASE(i); in atmel_udc_of_init()
2106 ep->dma_regs = udc->regs + USBA_DMA_BASE(i); in atmel_udc_of_init()
2107 ep->fifo = udc->fifo + USBA_FIFO_BASE(i); in atmel_udc_of_init()
2110 ep->udc = udc; in atmel_udc_of_init()
2140 list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list); in atmel_udc_of_init()
2160 struct usba_udc *udc; in usba_udc_probe() local
2163 udc = devm_kzalloc(&pdev->dev, sizeof(*udc), GFP_KERNEL); in usba_udc_probe()
2164 if (!udc) in usba_udc_probe()
2167 udc->gadget = usba_gadget_template; in usba_udc_probe()
2168 INIT_LIST_HEAD(&udc->gadget.ep_list); in usba_udc_probe()
2171 udc->regs = devm_ioremap_resource(&pdev->dev, res); in usba_udc_probe()
2172 if (IS_ERR(udc->regs)) in usba_udc_probe()
2173 return PTR_ERR(udc->regs); in usba_udc_probe()
2175 res, udc->regs); in usba_udc_probe()
2178 udc->fifo = devm_ioremap_resource(&pdev->dev, res); in usba_udc_probe()
2179 if (IS_ERR(udc->fifo)) in usba_udc_probe()
2180 return PTR_ERR(udc->fifo); in usba_udc_probe()
2181 dev_info(&pdev->dev, "FIFO at %pR mapped at %p\n", res, udc->fifo); in usba_udc_probe()
2194 spin_lock_init(&udc->lock); in usba_udc_probe()
2195 mutex_init(&udc->vbus_mutex); in usba_udc_probe()
2196 udc->pdev = pdev; in usba_udc_probe()
2197 udc->pclk = pclk; in usba_udc_probe()
2198 udc->hclk = hclk; in usba_udc_probe()
2200 platform_set_drvdata(pdev, udc); in usba_udc_probe()
2209 usba_writel(udc, CTRL, USBA_DISABLE_MASK); in usba_udc_probe()
2212 udc->usba_ep = atmel_udc_of_init(pdev, udc); in usba_udc_probe()
2214 toggle_bias(udc, 0); in usba_udc_probe()
2216 if (IS_ERR(udc->usba_ep)) in usba_udc_probe()
2217 return PTR_ERR(udc->usba_ep); in usba_udc_probe()
2220 "atmel_usba_udc", udc); in usba_udc_probe()
2226 udc->irq = irq; in usba_udc_probe()
2228 if (udc->vbus_pin) { in usba_udc_probe()
2229 irq_set_status_flags(gpiod_to_irq(udc->vbus_pin), IRQ_NOAUTOEN); in usba_udc_probe()
2231 gpiod_to_irq(udc->vbus_pin), NULL, in usba_udc_probe()
2233 "atmel_usba_udc", udc); in usba_udc_probe()
2235 udc->vbus_pin = NULL; in usba_udc_probe()
2236 dev_warn(&udc->pdev->dev, in usba_udc_probe()
2242 ret = usb_add_gadget_udc(&pdev->dev, &udc->gadget); in usba_udc_probe()
2247 usba_init_debugfs(udc); in usba_udc_probe()
2248 for (i = 1; i < udc->num_ep; i++) in usba_udc_probe()
2249 usba_ep_init_debugfs(udc, &udc->usba_ep[i]); in usba_udc_probe()
2256 struct usba_udc *udc; in usba_udc_remove() local
2259 udc = platform_get_drvdata(pdev); in usba_udc_remove()
2262 usb_del_gadget_udc(&udc->gadget); in usba_udc_remove()
2264 for (i = 1; i < udc->num_ep; i++) in usba_udc_remove()
2265 usba_ep_cleanup_debugfs(&udc->usba_ep[i]); in usba_udc_remove()
2266 usba_cleanup_debugfs(udc); in usba_udc_remove()
2274 struct usba_udc *udc = dev_get_drvdata(dev); in usba_udc_suspend() local
2277 if (!udc->driver) in usba_udc_suspend()
2280 mutex_lock(&udc->vbus_mutex); in usba_udc_suspend()
2283 usba_stop(udc); in usba_udc_suspend()
2291 if (udc->vbus_pin) { in usba_udc_suspend()
2292 usba_stop(udc); in usba_udc_suspend()
2293 enable_irq_wake(gpiod_to_irq(udc->vbus_pin)); in usba_udc_suspend()
2297 mutex_unlock(&udc->vbus_mutex); in usba_udc_suspend()
2303 struct usba_udc *udc = dev_get_drvdata(dev); in usba_udc_resume() local
2306 if (!udc->driver) in usba_udc_resume()
2309 if (device_may_wakeup(dev) && udc->vbus_pin) in usba_udc_resume()
2310 disable_irq_wake(gpiod_to_irq(udc->vbus_pin)); in usba_udc_resume()
2313 mutex_lock(&udc->vbus_mutex); in usba_udc_resume()
2314 udc->vbus_prev = vbus_is_present(udc); in usba_udc_resume()
2315 if (udc->vbus_prev) in usba_udc_resume()
2316 usba_start(udc); in usba_udc_resume()
2317 mutex_unlock(&udc->vbus_mutex); in usba_udc_resume()