Lines Matching refs:dum

240 	struct dummy			*dum;  member
289 static inline struct usb_hcd *dummy_hcd_to_hcd(struct dummy_hcd *dum) in dummy_hcd_to_hcd() argument
291 return container_of((void *) dum, struct usb_hcd, hcd_priv); in dummy_hcd_to_hcd()
294 static inline struct device *dummy_dev(struct dummy_hcd *dum) in dummy_dev() argument
296 return dummy_hcd_to_hcd(dum)->self.controller; in dummy_dev()
299 static inline struct device *udc_dev(struct dummy *dum) in udc_dev() argument
301 return dum->gadget.dev.parent; in udc_dev()
311 struct dummy *dum = container_of(gadget, struct dummy, gadget); in gadget_to_dummy_hcd() local
312 if (dum->gadget.speed == USB_SPEED_SUPER) in gadget_to_dummy_hcd()
313 return dum->ss_hcd; in gadget_to_dummy_hcd()
315 return dum->hs_hcd; in gadget_to_dummy_hcd()
328 static void nuke(struct dummy *dum, struct dummy_ep *ep) in nuke() argument
337 spin_unlock(&dum->lock); in nuke()
339 spin_lock(&dum->lock); in nuke()
344 static void stop_activity(struct dummy *dum) in stop_activity() argument
349 dum->address = 0; in stop_activity()
355 nuke(dum, &dum->ep[i]); in stop_activity()
370 struct dummy *dum = dum_hcd->dum; in set_link_state_by_speed() local
375 } else if (!dum->pullup || dum->udc_suspended) { in set_link_state_by_speed()
400 } else if (!dum->pullup || dum->udc_suspended) { in set_link_state_by_speed()
430 struct dummy *dum = dum_hcd->dum; in set_link_state() local
434 if (dum->pullup) in set_link_state()
436 dum->gadget.speed != USB_SPEED_SUPER) || in set_link_state()
438 dum->gadget.speed == USB_SPEED_SUPER)) in set_link_state()
458 if (dum->ints_enabled && (disconnect || reset)) { in set_link_state()
459 stop_activity(dum); in set_link_state()
460 ++dum->callback_usage; in set_link_state()
461 spin_unlock(&dum->lock); in set_link_state()
463 usb_gadget_udc_reset(&dum->gadget, dum->driver); in set_link_state()
465 dum->driver->disconnect(&dum->gadget); in set_link_state()
466 spin_lock(&dum->lock); in set_link_state()
467 --dum->callback_usage; in set_link_state()
470 dum->ints_enabled) { in set_link_state()
471 ++dum->callback_usage; in set_link_state()
472 spin_unlock(&dum->lock); in set_link_state()
473 if (dum_hcd->old_active && dum->driver->suspend) in set_link_state()
474 dum->driver->suspend(&dum->gadget); in set_link_state()
475 else if (!dum_hcd->old_active && dum->driver->resume) in set_link_state()
476 dum->driver->resume(&dum->gadget); in set_link_state()
477 spin_lock(&dum->lock); in set_link_state()
478 --dum->callback_usage; in set_link_state()
494 #define is_enabled(dum) \ argument
495 (dum->port_status & USB_PORT_STAT_ENABLE)
500 struct dummy *dum; in dummy_enable() local
510 dum = ep_to_dummy(ep); in dummy_enable()
511 if (!dum->driver) in dummy_enable()
514 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_enable()
540 switch (dum->gadget.speed) { in dummy_enable()
562 switch (dum->gadget.speed) { in dummy_enable()
585 switch (dum->gadget.speed) { in dummy_enable()
608 dev_err(udc_dev(dum), "Can't enable stream support on " in dummy_enable()
616 dev_dbg(udc_dev(dum), "enabled %s (ep%d%s-%s) maxpacket %d stream %s\n", in dummy_enable()
649 struct dummy *dum; in dummy_disable() local
655 dum = ep_to_dummy(ep); in dummy_disable()
657 spin_lock_irqsave(&dum->lock, flags); in dummy_disable()
660 nuke(dum, ep); in dummy_disable()
661 spin_unlock_irqrestore(&dum->lock, flags); in dummy_disable()
663 dev_dbg(udc_dev(dum), "disabled %s\n", _ep->name); in dummy_disable()
705 struct dummy *dum; in dummy_queue() local
717 dum = ep_to_dummy(ep); in dummy_queue()
718 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_queue()
719 if (!dum->driver || !is_enabled(dum_hcd)) in dummy_queue()
723 dev_dbg(udc_dev(dum), "ep %p queue req %p to %s, len %d buf %p\n", in dummy_queue()
728 spin_lock_irqsave(&dum->lock, flags); in dummy_queue()
732 list_empty(&dum->fifo_req.queue) && in dummy_queue()
735 req = &dum->fifo_req; in dummy_queue()
737 req->req.buf = dum->fifo_buf; in dummy_queue()
738 memcpy(dum->fifo_buf, _req->buf, _req->length); in dummy_queue()
739 req->req.context = dum; in dummy_queue()
743 spin_unlock(&dum->lock); in dummy_queue()
747 spin_lock(&dum->lock); in dummy_queue()
750 spin_unlock_irqrestore(&dum->lock, flags); in dummy_queue()
761 struct dummy *dum; in dummy_dequeue() local
769 dum = ep_to_dummy(ep); in dummy_dequeue()
771 if (!dum->driver) in dummy_dequeue()
775 spin_lock(&dum->lock); in dummy_dequeue()
784 spin_unlock(&dum->lock); in dummy_dequeue()
787 dev_dbg(udc_dev(dum), in dummy_dequeue()
800 struct dummy *dum; in dummy_set_halt_and_wedge() local
805 dum = ep_to_dummy(ep); in dummy_set_halt_and_wedge()
806 if (!dum->driver) in dummy_set_halt_and_wedge()
865 if (!(dum_hcd->dum->devstatus & ((1 << USB_DEVICE_B_HNP_ENABLE) in dummy_wakeup()
885 struct dummy *dum; in dummy_set_selfpowered() local
888 dum = gadget_to_dummy_hcd(_gadget)->dum; in dummy_set_selfpowered()
890 dum->devstatus |= (1 << USB_DEVICE_SELF_POWERED); in dummy_set_selfpowered()
892 dum->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED); in dummy_set_selfpowered()
896 static void dummy_udc_update_ep0(struct dummy *dum) in dummy_udc_update_ep0() argument
898 if (dum->gadget.speed == USB_SPEED_SUPER) in dummy_udc_update_ep0()
899 dum->ep[0].ep.maxpacket = 9; in dummy_udc_update_ep0()
901 dum->ep[0].ep.maxpacket = 64; in dummy_udc_update_ep0()
907 struct dummy *dum; in dummy_pullup() local
910 dum = gadget_dev_to_dummy(&_gadget->dev); in dummy_pullup()
913 spin_lock_irqsave(&dum->lock, flags); in dummy_pullup()
914 dum->pullup = (value != 0); in dummy_pullup()
916 spin_unlock_irqrestore(&dum->lock, flags); in dummy_pullup()
925 struct dummy *dum; in dummy_udc_set_speed() local
927 dum = gadget_dev_to_dummy(&_gadget->dev); in dummy_udc_set_speed()
928 dum->gadget.speed = speed; in dummy_udc_set_speed()
929 dummy_udc_update_ep0(dum); in dummy_udc_set_speed()
952 struct dummy *dum = gadget_dev_to_dummy(dev); in function_show() local
954 if (!dum->driver || !dum->driver->function) in function_show()
956 return scnprintf(buf, PAGE_SIZE, "%s\n", dum->driver->function); in function_show()
980 struct dummy *dum = dum_hcd->dum; in dummy_udc_start() local
990 spin_lock_irq(&dum->lock); in dummy_udc_start()
991 dum->devstatus = 0; in dummy_udc_start()
992 dum->driver = driver; in dummy_udc_start()
993 dum->ints_enabled = 1; in dummy_udc_start()
994 spin_unlock_irq(&dum->lock); in dummy_udc_start()
1002 struct dummy *dum = dum_hcd->dum; in dummy_udc_stop() local
1004 spin_lock_irq(&dum->lock); in dummy_udc_stop()
1005 dum->ints_enabled = 0; in dummy_udc_stop()
1006 stop_activity(dum); in dummy_udc_stop()
1009 while (dum->callback_usage > 0) { in dummy_udc_stop()
1010 spin_unlock_irq(&dum->lock); in dummy_udc_stop()
1012 spin_lock_irq(&dum->lock); in dummy_udc_stop()
1015 dum->driver = NULL; in dummy_udc_stop()
1016 spin_unlock_irq(&dum->lock); in dummy_udc_stop()
1025 static void init_dummy_udc_hw(struct dummy *dum) in init_dummy_udc_hw() argument
1029 INIT_LIST_HEAD(&dum->gadget.ep_list); in init_dummy_udc_hw()
1031 struct dummy_ep *ep = &dum->ep[i]; in init_dummy_udc_hw()
1038 list_add_tail(&ep->ep.ep_list, &dum->gadget.ep_list); in init_dummy_udc_hw()
1044 ep->gadget = &dum->gadget; in init_dummy_udc_hw()
1049 dum->gadget.ep0 = &dum->ep[0].ep; in init_dummy_udc_hw()
1050 list_del_init(&dum->ep[0].ep.ep_list); in init_dummy_udc_hw()
1051 INIT_LIST_HEAD(&dum->fifo_req.queue); in init_dummy_udc_hw()
1054 dum->gadget.is_otg = 1; in init_dummy_udc_hw()
1060 struct dummy *dum; in dummy_udc_probe() local
1063 dum = *((void **)dev_get_platdata(&pdev->dev)); in dummy_udc_probe()
1065 memzero_explicit(&dum->gadget, sizeof(struct usb_gadget)); in dummy_udc_probe()
1066 dum->gadget.name = gadget_name; in dummy_udc_probe()
1067 dum->gadget.ops = &dummy_ops; in dummy_udc_probe()
1069 dum->gadget.max_speed = USB_SPEED_SUPER; in dummy_udc_probe()
1071 dum->gadget.max_speed = USB_SPEED_HIGH; in dummy_udc_probe()
1073 dum->gadget.max_speed = USB_SPEED_FULL; in dummy_udc_probe()
1075 dum->gadget.dev.parent = &pdev->dev; in dummy_udc_probe()
1076 init_dummy_udc_hw(dum); in dummy_udc_probe()
1078 rc = usb_add_gadget_udc(&pdev->dev, &dum->gadget); in dummy_udc_probe()
1082 rc = device_create_file(&dum->gadget.dev, &dev_attr_function); in dummy_udc_probe()
1085 platform_set_drvdata(pdev, dum); in dummy_udc_probe()
1089 usb_del_gadget_udc(&dum->gadget); in dummy_udc_probe()
1096 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_remove() local
1098 device_remove_file(&dum->gadget.dev, &dev_attr_function); in dummy_udc_remove()
1099 usb_del_gadget_udc(&dum->gadget); in dummy_udc_remove()
1103 static void dummy_udc_pm(struct dummy *dum, struct dummy_hcd *dum_hcd, in dummy_udc_pm() argument
1106 spin_lock_irq(&dum->lock); in dummy_udc_pm()
1107 dum->udc_suspended = suspend; in dummy_udc_pm()
1109 spin_unlock_irq(&dum->lock); in dummy_udc_pm()
1114 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_suspend() local
1115 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_suspend()
1118 dummy_udc_pm(dum, dum_hcd, 1); in dummy_udc_suspend()
1125 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_resume() local
1126 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_resume()
1129 dummy_udc_pm(dum, dum_hcd, 0); in dummy_udc_resume()
1260 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1292 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1305 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1312 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1386 struct dummy *dum = dum_hcd->dum; in transfer() local
1498 spin_unlock(&dum->lock); in transfer()
1500 spin_lock(&dum->lock); in transfer()
1517 static int periodic_bytes(struct dummy *dum, struct dummy_ep *ep) in periodic_bytes() argument
1521 if (dum->gadget.speed == USB_SPEED_HIGH) { in periodic_bytes()
1529 if (dum->gadget.speed == USB_SPEED_SUPER) { in periodic_bytes()
1552 static struct dummy_ep *find_endpoint(struct dummy *dum, u8 address) in find_endpoint() argument
1556 if (!is_active((dum->gadget.speed == USB_SPEED_SUPER ? in find_endpoint()
1557 dum->ss_hcd : dum->hs_hcd))) in find_endpoint()
1559 if (!dum->ints_enabled) in find_endpoint()
1562 return &dum->ep[0]; in find_endpoint()
1564 struct dummy_ep *ep = &dum->ep[i]; in find_endpoint()
1601 struct dummy *dum = dum_hcd->dum; in handle_control_request() local
1612 dum->address = w_value; in handle_control_request()
1614 dev_dbg(udc_dev(dum), "set_address = %d\n", in handle_control_request()
1625 dum->gadget.b_hnp_enable = 1; in handle_control_request()
1628 dum->gadget.a_hnp_support = 1; in handle_control_request()
1631 dum->gadget.a_alt_hnp_support = 1; in handle_control_request()
1658 dum->devstatus |= (1 << w_value); in handle_control_request()
1663 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1706 dum->devstatus &= ~(1 << w_value); in handle_control_request()
1711 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1735 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1743 buf[0] = (u8)dum->devstatus; in handle_control_request()
1765 struct dummy *dum = dum_hcd->dum; in dummy_timer() local
1773 switch (dum->gadget.speed) { in dummy_timer()
1795 spin_lock_irqsave(&dum->lock, flags); in dummy_timer()
1800 spin_unlock_irqrestore(&dum->lock, flags); in dummy_timer()
1808 dum->ep[i].already_seen = 0; in dummy_timer()
1837 ep = find_endpoint(dum, address); in dummy_timer()
1850 if (ep == &dum->ep[0] && urb->error_count) { in dummy_timer()
1864 if (ep == &dum->ep[0] && ep->setup_stage) { in dummy_timer()
1873 dev_dbg(udc_dev(dum), "stale req = %p\n", in dummy_timer()
1876 spin_unlock(&dum->lock); in dummy_timer()
1878 spin_lock(&dum->lock); in dummy_timer()
1898 ++dum->callback_usage; in dummy_timer()
1899 spin_unlock(&dum->lock); in dummy_timer()
1900 value = dum->driver->setup(&dum->gadget, in dummy_timer()
1902 spin_lock(&dum->lock); in dummy_timer()
1903 --dum->callback_usage; in dummy_timer()
1915 dev_dbg(udc_dev(dum), in dummy_timer()
1938 limit = max(limit, periodic_bytes(dum, ep)); in dummy_timer()
1946 limit = max(limit, periodic_bytes(dum, ep)); in dummy_timer()
1967 spin_unlock(&dum->lock); in dummy_timer()
1969 spin_lock(&dum->lock); in dummy_timer()
1982 spin_unlock_irqrestore(&dum->lock, flags); in dummy_timer()
2002 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_status()
2021 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_status()
2090 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2168 if (dum_hcd->dum->pullup) { in dummy_hub_control()
2172 switch (dum_hcd->dum->gadget.speed) { in dummy_hub_control()
2178 dum_hcd->dum->gadget.ep0-> in dummy_hub_control()
2236 & dum_hcd->dum->devstatus) != 0) in dummy_hub_control()
2273 dum_hcd->dum->devstatus &= in dummy_hub_control()
2321 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2334 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2338 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2349 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2359 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2418 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in urbs_show()
2426 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in urbs_show()
2462 spin_lock_init(&dum_hcd->dum->lock); in dummy_start()
2495 struct dummy *dum; in dummy_setup() local
2497 dum = *((void **)dev_get_platdata(hcd->self.controller)); in dummy_setup()
2500 dum->hs_hcd = hcd_to_dummy_hcd(hcd); in dummy_setup()
2501 dum->hs_hcd->dum = dum; in dummy_setup()
2510 dum->ss_hcd = hcd_to_dummy_hcd(hcd); in dummy_setup()
2511 dum->ss_hcd->dum = dum; in dummy_setup()
2533 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2561 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2576 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2593 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2622 struct dummy *dum; in dummy_hcd_probe() local
2628 dum = *((void **)dev_get_platdata(&pdev->dev)); in dummy_hcd_probe()
2665 dum->hs_hcd = dum->ss_hcd = NULL; in dummy_hcd_probe()
2671 struct dummy *dum; in dummy_hcd_remove() local
2673 dum = hcd_to_dummy_hcd(platform_get_drvdata(pdev))->dum; in dummy_hcd_remove()
2675 if (dum->ss_hcd) { in dummy_hcd_remove()
2676 usb_remove_hcd(dummy_hcd_to_hcd(dum->ss_hcd)); in dummy_hcd_remove()
2677 usb_put_hcd(dummy_hcd_to_hcd(dum->ss_hcd)); in dummy_hcd_remove()
2680 usb_remove_hcd(dummy_hcd_to_hcd(dum->hs_hcd)); in dummy_hcd_remove()
2681 usb_put_hcd(dummy_hcd_to_hcd(dum->hs_hcd)); in dummy_hcd_remove()
2683 dum->hs_hcd = NULL; in dummy_hcd_remove()
2684 dum->ss_hcd = NULL; in dummy_hcd_remove()
2738 struct dummy *dum[MAX_NUM_UDC]; in init() local
2771 dum[i] = kzalloc(sizeof(struct dummy), GFP_KERNEL); in init()
2772 if (!dum[i]) { in init()
2776 retval = platform_device_add_data(the_hcd_pdev[i], &dum[i], in init()
2780 retval = platform_device_add_data(the_udc_pdev[i], &dum[i], in init()
2803 if (!dum[i]->hs_hcd || in init()
2804 (!dum[i]->ss_hcd && mod_data.is_super_speed)) { in init()
2848 kfree(dum[i]); in init()
2863 struct dummy *dum; in cleanup() local
2865 dum = *((void **)dev_get_platdata(&the_udc_pdev[i]->dev)); in cleanup()
2869 kfree(dum); in cleanup()