Lines Matching refs:dev
102 dev_dbg(ep->dev->dev, "%s: 0x%p, %d bytes data%s:\n", str, req, buflen, in gr_dbgprint_request()
108 static void gr_dbgprint_devreq(struct gr_udc *dev, u8 type, u8 request, in gr_dbgprint_devreq() argument
111 dev_vdbg(dev->dev, "REQ: %02x.%02x v%04x i%04x l%04x\n", in gr_dbgprint_devreq()
119 static void gr_dbgprint_devreq(struct gr_udc *dev, u8 type, u8 request, in gr_dbgprint_devreq() argument
189 struct gr_udc *dev = seq->private; in gr_seq_show() local
190 u32 control = gr_read32(&dev->regs->control); in gr_seq_show()
191 u32 status = gr_read32(&dev->regs->status); in gr_seq_show()
195 usb_state_string(dev->gadget.state)); in gr_seq_show()
199 seq_printf(seq, "ep0state = %s\n", gr_ep0state_string(dev->ep0state)); in gr_seq_show()
200 seq_printf(seq, "irq_enabled = %d\n", dev->irq_enabled); in gr_seq_show()
201 seq_printf(seq, "remote_wakeup = %d\n", dev->remote_wakeup); in gr_seq_show()
202 seq_printf(seq, "test_mode = %d\n", dev->test_mode); in gr_seq_show()
205 list_for_each_entry(ep, &dev->ep_list, ep_list) in gr_seq_show()
224 static void gr_dfs_create(struct gr_udc *dev) in gr_dfs_create() argument
228 dev->dfs_root = debugfs_create_dir(dev_name(dev->dev), NULL); in gr_dfs_create()
229 dev->dfs_state = debugfs_create_file(name, 0444, dev->dfs_root, dev, in gr_dfs_create()
233 static void gr_dfs_delete(struct gr_udc *dev) in gr_dfs_delete() argument
236 debugfs_remove(dev->dfs_state); in gr_dfs_delete()
237 debugfs_remove(dev->dfs_root); in gr_dfs_delete()
242 static void gr_dfs_create(struct gr_udc *dev) {} in gr_dfs_create() argument
243 static void gr_dfs_delete(struct gr_udc *dev) {} in gr_dfs_delete() argument
256 dma_desc = dma_pool_alloc(ep->dev->desc_pool, gfp_flags, &paddr); in gr_alloc_dma_desc()
258 dev_err(ep->dev->dev, "Could not allocate from DMA pool\n"); in gr_alloc_dma_desc()
268 static inline void gr_free_dma_desc(struct gr_udc *dev, in gr_free_dma_desc() argument
271 dma_pool_free(dev->desc_pool, desc, (dma_addr_t)desc->paddr); in gr_free_dma_desc()
275 static void gr_free_dma_desc_chain(struct gr_udc *dev, struct gr_request *req) in gr_free_dma_desc_chain() argument
287 gr_free_dma_desc(dev, desc); in gr_free_dma_desc_chain()
295 static void gr_ep0_setup(struct gr_udc *dev, struct gr_request *req);
305 __releases(&dev->lock) in gr_finish_request()
306 __acquires(&dev->lock) in gr_finish_request()
308 struct gr_udc *dev; in gr_finish_request() local
317 dev = ep->dev; in gr_finish_request()
318 usb_gadget_unmap_request(&dev->gadget, &req->req, ep->is_in); in gr_finish_request()
319 gr_free_dma_desc_chain(dev, req); in gr_finish_request()
335 dev_dbg(ep->dev->dev, "Overflow for ep %s\n", in gr_finish_request()
351 if (req == dev->ep0reqo && !status) { in gr_finish_request()
353 gr_ep0_setup(dev, req); in gr_finish_request()
355 dev_err(dev->dev, in gr_finish_request()
358 spin_unlock(&dev->lock); in gr_finish_request()
362 spin_lock(&dev->lock); in gr_finish_request()
529 gr_free_dma_desc_chain(ep->dev, req); in gr_setup_out_desc_list()
591 gr_free_dma_desc_chain(ep->dev, req); in gr_setup_in_desc_list()
599 struct gr_udc *dev = ep->dev; in gr_queue() local
603 dev_err(dev->dev, "No ep descriptor for %s\n", ep->ep.name); in gr_queue()
608 dev_err(dev->dev, in gr_queue()
614 if (unlikely(!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN)) { in gr_queue()
615 dev_err(dev->dev, "-ESHUTDOWN"); in gr_queue()
620 if (dev->ep0state == GR_EP0_SUSPEND) { in gr_queue()
621 dev_err(dev->dev, "-EBUSY"); in gr_queue()
626 ret = usb_gadget_map_request(&dev->gadget, &req->req, ep->is_in); in gr_queue()
628 dev_err(dev->dev, "usb_gadget_map_request"); in gr_queue()
707 static void gr_control_stall(struct gr_udc *dev) in gr_control_stall() argument
711 epctrl = gr_read32(&dev->epo[0].regs->epctrl); in gr_control_stall()
712 gr_write32(&dev->epo[0].regs->epctrl, epctrl | GR_EPCTRL_CS); in gr_control_stall()
713 epctrl = gr_read32(&dev->epi[0].regs->epctrl); in gr_control_stall()
714 gr_write32(&dev->epi[0].regs->epctrl, epctrl | GR_EPCTRL_CS); in gr_control_stall()
716 dev->ep0state = GR_EP0_STALL; in gr_control_stall()
739 gr_control_stall(ep->dev); in gr_ep_halt_wedge()
740 dev_dbg(ep->dev->dev, "EP: stall ep0\n"); in gr_ep_halt_wedge()
746 dev_dbg(ep->dev->dev, "EP: %s halt %s\n", in gr_ep_halt_wedge()
770 static inline void gr_set_ep0state(struct gr_udc *dev, enum gr_ep0state value) in gr_set_ep0state() argument
772 if (dev->ep0state != value) in gr_set_ep0state()
773 dev_vdbg(dev->dev, "STATE: ep0state=%s\n", in gr_set_ep0state()
775 dev->ep0state = value; in gr_set_ep0state()
783 static void gr_disable_interrupts_and_pullup(struct gr_udc *dev) in gr_disable_interrupts_and_pullup() argument
785 gr_write32(&dev->regs->control, 0); in gr_disable_interrupts_and_pullup()
787 dev->irq_enabled = 0; in gr_disable_interrupts_and_pullup()
795 static void gr_stop_activity(struct gr_udc *dev) in gr_stop_activity() argument
799 list_for_each_entry(ep, &dev->ep_list, ep_list) in gr_stop_activity()
802 gr_disable_interrupts_and_pullup(dev); in gr_stop_activity()
804 gr_set_ep0state(dev, GR_EP0_DISCONNECT); in gr_stop_activity()
805 usb_gadget_set_state(&dev->gadget, USB_STATE_NOTATTACHED); in gr_stop_activity()
815 struct gr_udc *dev; in gr_ep0_testmode_complete() local
819 dev = ep->dev; in gr_ep0_testmode_complete()
821 spin_lock(&dev->lock); in gr_ep0_testmode_complete()
823 control = gr_read32(&dev->regs->control); in gr_ep0_testmode_complete()
824 control |= GR_CONTROL_TM | (dev->test_mode << GR_CONTROL_TS_POS); in gr_ep0_testmode_complete()
825 gr_write32(&dev->regs->control, control); in gr_ep0_testmode_complete()
827 spin_unlock(&dev->lock); in gr_ep0_testmode_complete()
840 static int gr_ep0_respond(struct gr_udc *dev, u8 *buf, int length, in gr_ep0_respond() argument
844 u8 *reqbuf = dev->ep0reqi->req.buf; in gr_ep0_respond()
850 dev->ep0reqi->req.length = length; in gr_ep0_respond()
851 dev->ep0reqi->req.complete = complete; in gr_ep0_respond()
853 status = gr_queue_int(&dev->epi[0], dev->ep0reqi, GFP_ATOMIC); in gr_ep0_respond()
855 dev_err(dev->dev, in gr_ep0_respond()
866 static inline int gr_ep0_respond_u16(struct gr_udc *dev, u16 response) in gr_ep0_respond_u16() argument
870 return gr_ep0_respond(dev, (u8 *)&le_response, 2, in gr_ep0_respond_u16()
879 static inline int gr_ep0_respond_empty(struct gr_udc *dev) in gr_ep0_respond_empty() argument
881 return gr_ep0_respond(dev, NULL, 0, gr_ep0_dummy_complete); in gr_ep0_respond_empty()
891 static void gr_set_address(struct gr_udc *dev, u8 address) in gr_set_address() argument
895 control = gr_read32(&dev->regs->control) & ~GR_CONTROL_UA_MASK; in gr_set_address()
898 gr_write32(&dev->regs->control, control); in gr_set_address()
907 static int gr_device_request(struct gr_udc *dev, u8 type, u8 request, in gr_device_request() argument
915 dev_dbg(dev->dev, "STATUS: address %d\n", value & 0xff); in gr_device_request()
916 gr_set_address(dev, value & 0xff); in gr_device_request()
918 usb_gadget_set_state(&dev->gadget, USB_STATE_ADDRESS); in gr_device_request()
920 usb_gadget_set_state(&dev->gadget, USB_STATE_DEFAULT); in gr_device_request()
921 return gr_ep0_respond_empty(dev); in gr_device_request()
925 response = 0x0001 | (dev->remote_wakeup ? 0x0002 : 0); in gr_device_request()
926 return gr_ep0_respond_u16(dev, response); in gr_device_request()
932 dev->remote_wakeup = 1; in gr_device_request()
933 return gr_ep0_respond_empty(dev); in gr_device_request()
939 dev->test_mode = test; in gr_device_request()
940 return gr_ep0_respond(dev, NULL, 0, in gr_device_request()
950 dev->remote_wakeup = 0; in gr_device_request()
951 return gr_ep0_respond_empty(dev); in gr_device_request()
965 static int gr_interface_request(struct gr_udc *dev, u8 type, u8 request, in gr_interface_request() argument
968 if (dev->gadget.state != USB_STATE_CONFIGURED) in gr_interface_request()
979 return gr_ep0_respond_u16(dev, 0x0000); in gr_interface_request()
999 static int gr_endpoint_request(struct gr_udc *dev, u8 type, u8 request, in gr_endpoint_request() argument
1008 if ((is_in && epnum >= dev->nepi) || (!is_in && epnum >= dev->nepo)) in gr_endpoint_request()
1011 if (dev->gadget.state != USB_STATE_CONFIGURED && epnum != 0) in gr_endpoint_request()
1014 ep = (is_in ? &dev->epi[epnum] : &dev->epo[epnum]); in gr_endpoint_request()
1019 return gr_ep0_respond_u16(dev, halted ? 0x0001 : 0); in gr_endpoint_request()
1026 status = gr_ep0_respond_empty(dev); in gr_endpoint_request()
1038 status = gr_ep0_respond_empty(dev); in gr_endpoint_request()
1048 static void gr_ep0out_requeue(struct gr_udc *dev) in gr_ep0out_requeue() argument
1050 int ret = gr_queue_int(&dev->epo[0], dev->ep0reqo, GFP_ATOMIC); in gr_ep0out_requeue()
1053 dev_err(dev->dev, "Could not queue ep0out setup request: %d\n", in gr_ep0out_requeue()
1062 static void gr_ep0_setup(struct gr_udc *dev, struct gr_request *req) in gr_ep0_setup() argument
1063 __releases(&dev->lock) in gr_ep0_setup()
1064 __acquires(&dev->lock) in gr_ep0_setup()
1080 if (dev->ep0state == GR_EP0_STALL) { in gr_ep0_setup()
1081 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_ep0_setup()
1086 if (dev->ep0state == GR_EP0_ISTATUS) { in gr_ep0_setup()
1087 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_ep0_setup()
1089 dev_dbg(dev->dev, in gr_ep0_setup()
1094 } else if (dev->ep0state != GR_EP0_SETUP) { in gr_ep0_setup()
1095 dev_info(dev->dev, in gr_ep0_setup()
1097 gr_ep0state_string(dev->ep0state)); in gr_ep0_setup()
1098 gr_control_stall(dev); in gr_ep0_setup()
1099 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_ep0_setup()
1102 dev_dbg(dev->dev, "Unexpected ZLP at state %s\n", in gr_ep0_setup()
1103 gr_ep0state_string(dev->ep0state)); in gr_ep0_setup()
1117 gr_dbgprint_devreq(dev, type, request, value, index, length); in gr_ep0_setup()
1122 gr_set_ep0state(dev, GR_EP0_IDATA); in gr_ep0_setup()
1124 gr_set_ep0state(dev, GR_EP0_ODATA); in gr_ep0_setup()
1131 status = gr_device_request(dev, type, request, in gr_ep0_setup()
1135 status = gr_endpoint_request(dev, type, request, in gr_ep0_setup()
1139 status = gr_interface_request(dev, type, request, in gr_ep0_setup()
1146 spin_unlock(&dev->lock); in gr_ep0_setup()
1148 dev_vdbg(dev->dev, "DELEGATE\n"); in gr_ep0_setup()
1149 status = dev->driver->setup(&dev->gadget, &u.ctrl); in gr_ep0_setup()
1151 spin_lock(&dev->lock); in gr_ep0_setup()
1156 dev_vdbg(dev->dev, "STALL\n"); in gr_ep0_setup()
1157 gr_control_stall(dev); in gr_ep0_setup()
1163 dev_dbg(dev->dev, "STATUS: deconfigured\n"); in gr_ep0_setup()
1164 usb_gadget_set_state(&dev->gadget, USB_STATE_ADDRESS); in gr_ep0_setup()
1167 dev_dbg(dev->dev, "STATUS: configured: %d\n", value); in gr_ep0_setup()
1168 usb_gadget_set_state(&dev->gadget, in gr_ep0_setup()
1174 if (dev->ep0state == GR_EP0_ODATA) in gr_ep0_setup()
1175 gr_set_ep0state(dev, GR_EP0_OSTATUS); in gr_ep0_setup()
1176 else if (dev->ep0state == GR_EP0_IDATA) in gr_ep0_setup()
1177 gr_set_ep0state(dev, GR_EP0_ISTATUS); in gr_ep0_setup()
1179 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_ep0_setup()
1182 gr_ep0out_requeue(dev); in gr_ep0_setup()
1189 static void gr_vbus_connected(struct gr_udc *dev, u32 status) in gr_vbus_connected() argument
1193 dev->gadget.speed = GR_SPEED(status); in gr_vbus_connected()
1194 usb_gadget_set_state(&dev->gadget, USB_STATE_POWERED); in gr_vbus_connected()
1199 gr_write32(&dev->regs->control, control); in gr_vbus_connected()
1203 static void gr_enable_vbus_detect(struct gr_udc *dev) in gr_enable_vbus_detect() argument
1207 dev->irq_enabled = 1; in gr_enable_vbus_detect()
1209 gr_write32(&dev->regs->control, GR_CONTROL_VI); in gr_enable_vbus_detect()
1212 status = gr_read32(&dev->regs->status); in gr_enable_vbus_detect()
1214 gr_vbus_connected(dev, status); in gr_enable_vbus_detect()
1218 static void gr_vbus_disconnected(struct gr_udc *dev) in gr_vbus_disconnected() argument
1220 gr_stop_activity(dev); in gr_vbus_disconnected()
1223 if (dev->driver && dev->driver->disconnect) { in gr_vbus_disconnected()
1224 spin_unlock(&dev->lock); in gr_vbus_disconnected()
1226 dev->driver->disconnect(&dev->gadget); in gr_vbus_disconnected()
1228 spin_lock(&dev->lock); in gr_vbus_disconnected()
1231 gr_enable_vbus_detect(dev); in gr_vbus_disconnected()
1235 static void gr_udc_usbreset(struct gr_udc *dev, u32 status) in gr_udc_usbreset() argument
1237 gr_set_address(dev, 0); in gr_udc_usbreset()
1238 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_udc_usbreset()
1239 usb_gadget_set_state(&dev->gadget, USB_STATE_DEFAULT); in gr_udc_usbreset()
1240 dev->gadget.speed = GR_SPEED(status); in gr_udc_usbreset()
1242 gr_ep_nuke(&dev->epo[0]); in gr_udc_usbreset()
1243 gr_ep_nuke(&dev->epi[0]); in gr_udc_usbreset()
1244 dev->epo[0].stopped = 0; in gr_udc_usbreset()
1245 dev->epi[0].stopped = 0; in gr_udc_usbreset()
1246 gr_ep0out_requeue(dev); in gr_udc_usbreset()
1288 struct gr_udc *dev = ep->dev; in gr_handle_out_ep() local
1307 if ((ep == &dev->epo[0]) && (dev->ep0state == GR_EP0_OSTATUS)) { in gr_handle_out_ep()
1314 gr_ep0_respond_empty(dev); in gr_handle_out_ep()
1315 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_handle_out_ep()
1336 static int gr_handle_state_changes(struct gr_udc *dev) in gr_handle_state_changes() argument
1338 u32 status = gr_read32(&dev->regs->status); in gr_handle_state_changes()
1340 int powstate = !(dev->gadget.state == USB_STATE_NOTATTACHED || in gr_handle_state_changes()
1341 dev->gadget.state == USB_STATE_ATTACHED); in gr_handle_state_changes()
1345 dev_dbg(dev->dev, "STATUS: vbus valid detected\n"); in gr_handle_state_changes()
1346 gr_vbus_connected(dev, status); in gr_handle_state_changes()
1352 dev_dbg(dev->dev, "STATUS: vbus invalid detected\n"); in gr_handle_state_changes()
1353 gr_vbus_disconnected(dev); in gr_handle_state_changes()
1359 dev_dbg(dev->dev, "STATUS: USB reset - speed is %s\n", in gr_handle_state_changes()
1361 gr_write32(&dev->regs->status, GR_STATUS_UR); in gr_handle_state_changes()
1362 gr_udc_usbreset(dev, status); in gr_handle_state_changes()
1367 if (dev->gadget.speed != GR_SPEED(status)) { in gr_handle_state_changes()
1368 dev_dbg(dev->dev, "STATUS: USB Speed change to %s\n", in gr_handle_state_changes()
1370 dev->gadget.speed = GR_SPEED(status); in gr_handle_state_changes()
1375 if ((dev->ep0state != GR_EP0_SUSPEND) && !(status & GR_STATUS_SU)) { in gr_handle_state_changes()
1376 dev_dbg(dev->dev, "STATUS: USB suspend\n"); in gr_handle_state_changes()
1377 gr_set_ep0state(dev, GR_EP0_SUSPEND); in gr_handle_state_changes()
1378 dev->suspended_from = dev->gadget.state; in gr_handle_state_changes()
1379 usb_gadget_set_state(&dev->gadget, USB_STATE_SUSPENDED); in gr_handle_state_changes()
1381 if ((dev->gadget.speed != USB_SPEED_UNKNOWN) && in gr_handle_state_changes()
1382 dev->driver && dev->driver->suspend) { in gr_handle_state_changes()
1383 spin_unlock(&dev->lock); in gr_handle_state_changes()
1385 dev->driver->suspend(&dev->gadget); in gr_handle_state_changes()
1387 spin_lock(&dev->lock); in gr_handle_state_changes()
1393 if ((dev->ep0state == GR_EP0_SUSPEND) && (status & GR_STATUS_SU)) { in gr_handle_state_changes()
1394 dev_dbg(dev->dev, "STATUS: USB resume\n"); in gr_handle_state_changes()
1395 if (dev->suspended_from == USB_STATE_POWERED) in gr_handle_state_changes()
1396 gr_set_ep0state(dev, GR_EP0_DISCONNECT); in gr_handle_state_changes()
1398 gr_set_ep0state(dev, GR_EP0_SETUP); in gr_handle_state_changes()
1399 usb_gadget_set_state(&dev->gadget, dev->suspended_from); in gr_handle_state_changes()
1401 if ((dev->gadget.speed != USB_SPEED_UNKNOWN) && in gr_handle_state_changes()
1402 dev->driver && dev->driver->resume) { in gr_handle_state_changes()
1403 spin_unlock(&dev->lock); in gr_handle_state_changes()
1405 dev->driver->resume(&dev->gadget); in gr_handle_state_changes()
1407 spin_lock(&dev->lock); in gr_handle_state_changes()
1418 struct gr_udc *dev = _dev; in gr_irq_handler() local
1424 spin_lock_irqsave(&dev->lock, flags); in gr_irq_handler()
1426 if (!dev->irq_enabled) in gr_irq_handler()
1434 for (i = 0; i < dev->nepi; i++) { in gr_irq_handler()
1435 ep = &dev->epi[i]; in gr_irq_handler()
1441 for (i = 0; i < dev->nepo; i++) { in gr_irq_handler()
1442 ep = &dev->epo[i]; in gr_irq_handler()
1448 handled = gr_handle_state_changes(dev) || handled; in gr_irq_handler()
1455 list_for_each_entry(ep, &dev->ep_list, ep_list) { in gr_irq_handler()
1457 dev_err(dev->dev, in gr_irq_handler()
1466 spin_unlock_irqrestore(&dev->lock, flags); in gr_irq_handler()
1474 struct gr_udc *dev = _dev; in gr_irq() local
1476 if (!dev->irq_enabled) in gr_irq()
1489 struct gr_udc *dev; in gr_ep_enable() local
1501 dev = ep->dev; in gr_ep_enable()
1504 if (ep == &dev->epo[0] || ep == &dev->epi[0]) in gr_ep_enable()
1507 if (!dev->driver || dev->gadget.speed == USB_SPEED_UNKNOWN) in gr_ep_enable()
1520 if ((!ep->is_in && ep->num >= dev->nepo) || in gr_ep_enable()
1521 (ep->is_in && ep->num >= dev->nepi)) in gr_ep_enable()
1533 dev_err(dev->dev, "Unknown transfer type for %s\n", in gr_ep_enable()
1546 dev_err(dev->dev, in gr_ep_enable()
1551 dev_err(dev->dev, in gr_ep_enable()
1555 dev_err(dev->dev, "Hw buffer size %d < max payload %d * %d\n", in gr_ep_enable()
1559 dev_err(dev->dev, "Max payload cannot be set to 0\n"); in gr_ep_enable()
1562 dev_err(dev->dev, "Requested max payload %d > limit %d\n", in gr_ep_enable()
1567 spin_lock(&ep->dev->lock); in gr_ep_enable()
1570 spin_unlock(&ep->dev->lock); in gr_ep_enable()
1612 spin_unlock(&ep->dev->lock); in gr_ep_enable()
1614 dev_dbg(ep->dev->dev, "EP: %s enabled - %s with %d bytes/buffer\n", in gr_ep_enable()
1623 struct gr_udc *dev; in gr_ep_disable() local
1630 dev = ep->dev; in gr_ep_disable()
1633 if (ep == &dev->epo[0] || ep == &dev->epi[0]) in gr_ep_disable()
1636 if (dev->ep0state == GR_EP0_SUSPEND) in gr_ep_disable()
1639 dev_dbg(ep->dev->dev, "EP: disable %s\n", ep->ep.name); in gr_ep_disable()
1641 spin_lock_irqsave(&dev->lock, flags); in gr_ep_disable()
1647 spin_unlock_irqrestore(&dev->lock, flags); in gr_ep_disable()
1677 struct gr_udc *dev; in gr_queue_ext() local
1685 dev = ep->dev; in gr_queue_ext()
1687 spin_lock(&ep->dev->lock); in gr_queue_ext()
1695 if ((ep == &dev->epi[0]) && (dev->ep0state == GR_EP0_ODATA)) { in gr_queue_ext()
1696 ep = &dev->epo[0]; in gr_queue_ext()
1697 ep->ep.driver_data = dev->epi[0].ep.driver_data; in gr_queue_ext()
1705 spin_unlock(&ep->dev->lock); in gr_queue_ext()
1715 struct gr_udc *dev; in gr_dequeue() local
1722 dev = ep->dev; in gr_dequeue()
1723 if (!dev->driver) in gr_dequeue()
1727 if (dev->ep0state == GR_EP0_SUSPEND) in gr_dequeue()
1730 spin_lock_irqsave(&dev->lock, flags); in gr_dequeue()
1757 spin_unlock_irqrestore(&dev->lock, flags); in gr_dequeue()
1772 spin_lock(&ep->dev->lock); in gr_set_halt_wedge()
1783 spin_unlock(&ep->dev->lock); in gr_set_halt_wedge()
1834 dev_vdbg(ep->dev->dev, "EP: flush fifo %s\n", ep->ep.name); in gr_fifo_flush()
1836 spin_lock(&ep->dev->lock); in gr_fifo_flush()
1842 spin_unlock(&ep->dev->lock); in gr_fifo_flush()
1866 struct gr_udc *dev; in gr_get_frame() local
1870 dev = container_of(_gadget, struct gr_udc, gadget); in gr_get_frame()
1871 return gr_read32(&dev->regs->status) & GR_STATUS_FN_MASK; in gr_get_frame()
1876 struct gr_udc *dev; in gr_wakeup() local
1880 dev = container_of(_gadget, struct gr_udc, gadget); in gr_wakeup()
1883 if (!dev->remote_wakeup) in gr_wakeup()
1886 spin_lock(&dev->lock); in gr_wakeup()
1888 gr_write32(&dev->regs->control, in gr_wakeup()
1889 gr_read32(&dev->regs->control) | GR_CONTROL_RW); in gr_wakeup()
1891 spin_unlock(&dev->lock); in gr_wakeup()
1898 struct gr_udc *dev; in gr_pullup() local
1903 dev = container_of(_gadget, struct gr_udc, gadget); in gr_pullup()
1905 spin_lock(&dev->lock); in gr_pullup()
1907 control = gr_read32(&dev->regs->control); in gr_pullup()
1912 gr_write32(&dev->regs->control, control); in gr_pullup()
1914 spin_unlock(&dev->lock); in gr_pullup()
1922 struct gr_udc *dev = to_gr_udc(gadget); in gr_udc_start() local
1924 spin_lock(&dev->lock); in gr_udc_start()
1928 dev->driver = driver; in gr_udc_start()
1931 gr_enable_vbus_detect(dev); in gr_udc_start()
1933 spin_unlock(&dev->lock); in gr_udc_start()
1940 struct gr_udc *dev = to_gr_udc(gadget); in gr_udc_stop() local
1943 spin_lock_irqsave(&dev->lock, flags); in gr_udc_stop()
1945 dev->driver = NULL; in gr_udc_stop()
1946 gr_stop_activity(dev); in gr_udc_stop()
1948 spin_unlock_irqrestore(&dev->lock, flags); in gr_udc_stop()
1978 static int gr_ep_init(struct gr_udc *dev, int num, int is_in, u32 maxplimit) in gr_ep_init() argument
1986 ep = &dev->epi[num]; in gr_ep_init()
1988 ep->regs = &dev->regs->epi[num]; in gr_ep_init()
1990 ep = &dev->epo[num]; in gr_ep_init()
1992 ep->regs = &dev->regs->epo[num]; in gr_ep_init()
1998 ep->dev = dev; in gr_ep_init()
2004 buf = devm_kzalloc(dev->dev, PAGE_SIZE, GFP_DMA | GFP_ATOMIC); in gr_ep_init()
2015 dev->ep0reqi = req; /* Complete gets set as used */ in gr_ep_init()
2017 dev->ep0reqo = req; /* Completion treated separately */ in gr_ep_init()
2025 list_add_tail(&ep->ep.ep_list, &dev->gadget.ep_list); in gr_ep_init()
2031 list_add_tail(&ep->ep_list, &dev->ep_list); in gr_ep_init()
2038 ep->tailbuf = dma_alloc_coherent(dev->dev, ep->ep.maxpacket_limit, in gr_ep_init()
2047 static int gr_udc_init(struct gr_udc *dev) in gr_udc_init() argument
2049 struct device_node *np = dev->dev->of_node; in gr_udc_init()
2056 gr_set_address(dev, 0); in gr_udc_init()
2058 INIT_LIST_HEAD(&dev->gadget.ep_list); in gr_udc_init()
2059 dev->gadget.speed = USB_SPEED_UNKNOWN; in gr_udc_init()
2060 dev->gadget.ep0 = &dev->epi[0].ep; in gr_udc_init()
2062 INIT_LIST_HEAD(&dev->ep_list); in gr_udc_init()
2063 gr_set_ep0state(dev, GR_EP0_DISCONNECT); in gr_udc_init()
2065 for (i = 0; i < dev->nepo; i++) { in gr_udc_init()
2068 ret = gr_ep_init(dev, i, 0, bufsize); in gr_udc_init()
2073 for (i = 0; i < dev->nepi; i++) { in gr_udc_init()
2076 ret = gr_ep_init(dev, i, 1, bufsize); in gr_udc_init()
2082 dev->remote_wakeup = 0; in gr_udc_init()
2087 gr_write32(&dev->epo[0].regs->epctrl, epctrl_val); in gr_udc_init()
2088 gr_write32(&dev->epi[0].regs->epctrl, epctrl_val | GR_EPCTRL_PI); in gr_udc_init()
2089 gr_write32(&dev->epo[0].regs->dmactrl, dmactrl_val); in gr_udc_init()
2090 gr_write32(&dev->epi[0].regs->dmactrl, dmactrl_val); in gr_udc_init()
2095 static void gr_ep_remove(struct gr_udc *dev, int num, int is_in) in gr_ep_remove() argument
2100 ep = &dev->epi[num]; in gr_ep_remove()
2102 ep = &dev->epo[num]; in gr_ep_remove()
2105 dma_free_coherent(dev->dev, ep->ep.maxpacket_limit, in gr_ep_remove()
2111 struct gr_udc *dev = platform_get_drvdata(pdev); in gr_remove() local
2114 if (dev->added) in gr_remove()
2115 usb_del_gadget_udc(&dev->gadget); /* Shuts everything down */ in gr_remove()
2116 if (dev->driver) in gr_remove()
2119 gr_dfs_delete(dev); in gr_remove()
2120 dma_pool_destroy(dev->desc_pool); in gr_remove()
2123 gr_free_request(&dev->epi[0].ep, &dev->ep0reqi->req); in gr_remove()
2124 gr_free_request(&dev->epo[0].ep, &dev->ep0reqo->req); in gr_remove()
2126 for (i = 0; i < dev->nepo; i++) in gr_remove()
2127 gr_ep_remove(dev, i, 0); in gr_remove()
2128 for (i = 0; i < dev->nepi; i++) in gr_remove()
2129 gr_ep_remove(dev, i, 1); in gr_remove()
2133 static int gr_request_irq(struct gr_udc *dev, int irq) in gr_request_irq() argument
2135 return devm_request_threaded_irq(dev->dev, irq, gr_irq, gr_irq_handler, in gr_request_irq()
2136 IRQF_SHARED, driver_name, dev); in gr_request_irq()
2141 struct gr_udc *dev; in gr_probe() local
2147 dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); in gr_probe()
2148 if (!dev) in gr_probe()
2150 dev->dev = &pdev->dev; in gr_probe()
2153 regs = devm_ioremap_resource(dev->dev, res); in gr_probe()
2157 dev->irq = platform_get_irq(pdev, 0); in gr_probe()
2158 if (dev->irq <= 0) { in gr_probe()
2159 dev_err(dev->dev, "No irq found\n"); in gr_probe()
2164 dev->irqi = platform_get_irq(pdev, 1); in gr_probe()
2165 if (dev->irqi > 0) { in gr_probe()
2166 dev->irqo = platform_get_irq(pdev, 2); in gr_probe()
2167 if (dev->irqo <= 0) { in gr_probe()
2168 dev_err(dev->dev, "Found irqi but not irqo\n"); in gr_probe()
2172 dev->irqi = 0; in gr_probe()
2175 dev->gadget.name = driver_name; in gr_probe()
2176 dev->gadget.max_speed = USB_SPEED_HIGH; in gr_probe()
2177 dev->gadget.ops = &gr_ops; in gr_probe()
2179 spin_lock_init(&dev->lock); in gr_probe()
2180 dev->regs = regs; in gr_probe()
2182 platform_set_drvdata(pdev, dev); in gr_probe()
2185 status = gr_read32(&dev->regs->status); in gr_probe()
2186 dev->nepi = ((status & GR_STATUS_NEPI_MASK) >> GR_STATUS_NEPI_POS) + 1; in gr_probe()
2187 dev->nepo = ((status & GR_STATUS_NEPO_MASK) >> GR_STATUS_NEPO_POS) + 1; in gr_probe()
2190 dev_err(dev->dev, "Slave mode cores are not supported\n"); in gr_probe()
2197 dev->desc_pool = dma_pool_create("desc_pool", dev->dev, in gr_probe()
2199 if (!dev->desc_pool) { in gr_probe()
2200 dev_err(dev->dev, "Could not allocate DMA pool"); in gr_probe()
2204 spin_lock(&dev->lock); in gr_probe()
2207 retval = usb_add_gadget_udc(dev->dev, &dev->gadget); in gr_probe()
2209 dev_err(dev->dev, "Could not add gadget udc"); in gr_probe()
2212 dev->added = 1; in gr_probe()
2214 retval = gr_udc_init(dev); in gr_probe()
2218 gr_dfs_create(dev); in gr_probe()
2221 gr_disable_interrupts_and_pullup(dev); in gr_probe()
2223 retval = gr_request_irq(dev, dev->irq); in gr_probe()
2225 dev_err(dev->dev, "Failed to request irq %d\n", dev->irq); in gr_probe()
2229 if (dev->irqi) { in gr_probe()
2230 retval = gr_request_irq(dev, dev->irqi); in gr_probe()
2232 dev_err(dev->dev, "Failed to request irqi %d\n", in gr_probe()
2233 dev->irqi); in gr_probe()
2236 retval = gr_request_irq(dev, dev->irqo); in gr_probe()
2238 dev_err(dev->dev, "Failed to request irqo %d\n", in gr_probe()
2239 dev->irqo); in gr_probe()
2244 if (dev->irqi) in gr_probe()
2245 dev_info(dev->dev, "regs: %p, irqs %d, %d, %d\n", dev->regs, in gr_probe()
2246 dev->irq, dev->irqi, dev->irqo); in gr_probe()
2248 dev_info(dev->dev, "regs: %p, irq %d\n", dev->regs, dev->irq); in gr_probe()
2251 spin_unlock(&dev->lock); in gr_probe()