Lines Matching refs:dum

231 	struct dummy			*dum;  member
276 static inline struct usb_hcd *dummy_hcd_to_hcd(struct dummy_hcd *dum) in dummy_hcd_to_hcd() argument
278 return container_of((void *) dum, struct usb_hcd, hcd_priv); in dummy_hcd_to_hcd()
281 static inline struct device *dummy_dev(struct dummy_hcd *dum) in dummy_dev() argument
283 return dummy_hcd_to_hcd(dum)->self.controller; in dummy_dev()
286 static inline struct device *udc_dev(struct dummy *dum) in udc_dev() argument
288 return dum->gadget.dev.parent; in udc_dev()
298 struct dummy *dum = container_of(gadget, struct dummy, gadget); in gadget_to_dummy_hcd() local
299 if (dum->gadget.speed == USB_SPEED_SUPER) in gadget_to_dummy_hcd()
300 return dum->ss_hcd; in gadget_to_dummy_hcd()
302 return dum->hs_hcd; in gadget_to_dummy_hcd()
315 static void nuke(struct dummy *dum, struct dummy_ep *ep) in nuke() argument
324 spin_unlock(&dum->lock); in nuke()
326 spin_lock(&dum->lock); in nuke()
331 static void stop_activity(struct dummy *dum) in stop_activity() argument
336 dum->address = 0; in stop_activity()
341 list_for_each_entry(ep, &dum->gadget.ep_list, ep.ep_list) in stop_activity()
342 nuke(dum, ep); in stop_activity()
357 struct dummy *dum = dum_hcd->dum; in set_link_state_by_speed() local
362 } else if (!dum->pullup || dum->udc_suspended) { in set_link_state_by_speed()
388 } else if (!dum->pullup || dum->udc_suspended) { in set_link_state_by_speed()
418 struct dummy *dum = dum_hcd->dum; in set_link_state() local
421 if (dum->pullup) in set_link_state()
423 dum->gadget.speed != USB_SPEED_SUPER) || in set_link_state()
425 dum->gadget.speed == USB_SPEED_SUPER)) in set_link_state()
443 if (dum->driver && (disconnect || reset)) { in set_link_state()
444 stop_activity(dum); in set_link_state()
445 spin_unlock(&dum->lock); in set_link_state()
447 usb_gadget_udc_reset(&dum->gadget, dum->driver); in set_link_state()
449 dum->driver->disconnect(&dum->gadget); in set_link_state()
450 spin_lock(&dum->lock); in set_link_state()
453 if (dum_hcd->old_active && dum->driver->suspend) { in set_link_state()
454 spin_unlock(&dum->lock); in set_link_state()
455 dum->driver->suspend(&dum->gadget); in set_link_state()
456 spin_lock(&dum->lock); in set_link_state()
457 } else if (!dum_hcd->old_active && dum->driver->resume) { in set_link_state()
458 spin_unlock(&dum->lock); in set_link_state()
459 dum->driver->resume(&dum->gadget); in set_link_state()
460 spin_lock(&dum->lock); in set_link_state()
477 #define is_enabled(dum) \ argument
478 (dum->port_status & USB_PORT_STAT_ENABLE)
483 struct dummy *dum; in dummy_enable() local
493 dum = ep_to_dummy(ep); in dummy_enable()
494 if (!dum->driver) in dummy_enable()
497 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_enable()
523 switch (dum->gadget.speed) { in dummy_enable()
545 switch (dum->gadget.speed) { in dummy_enable()
566 switch (dum->gadget.speed) { in dummy_enable()
588 dev_err(udc_dev(dum), "Can't enable stream support on " in dummy_enable()
596 dev_dbg(udc_dev(dum), "enabled %s (ep%d%s-%s) maxpacket %d stream %s\n", in dummy_enable()
629 struct dummy *dum; in dummy_disable() local
635 dum = ep_to_dummy(ep); in dummy_disable()
637 spin_lock_irqsave(&dum->lock, flags); in dummy_disable()
640 nuke(dum, ep); in dummy_disable()
641 spin_unlock_irqrestore(&dum->lock, flags); in dummy_disable()
643 dev_dbg(udc_dev(dum), "disabled %s\n", _ep->name); in dummy_disable()
687 struct dummy *dum; in dummy_queue() local
699 dum = ep_to_dummy(ep); in dummy_queue()
700 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_queue()
701 if (!dum->driver || !is_enabled(dum_hcd)) in dummy_queue()
705 dev_dbg(udc_dev(dum), "ep %p queue req %p to %s, len %d buf %p\n", in dummy_queue()
710 spin_lock_irqsave(&dum->lock, flags); in dummy_queue()
714 list_empty(&dum->fifo_req.queue) && in dummy_queue()
717 req = &dum->fifo_req; in dummy_queue()
719 req->req.buf = dum->fifo_buf; in dummy_queue()
720 memcpy(dum->fifo_buf, _req->buf, _req->length); in dummy_queue()
721 req->req.context = dum; in dummy_queue()
725 spin_unlock(&dum->lock); in dummy_queue()
729 spin_lock(&dum->lock); in dummy_queue()
732 spin_unlock_irqrestore(&dum->lock, flags); in dummy_queue()
743 struct dummy *dum; in dummy_dequeue() local
751 dum = ep_to_dummy(ep); in dummy_dequeue()
753 if (!dum->driver) in dummy_dequeue()
757 spin_lock(&dum->lock); in dummy_dequeue()
766 spin_unlock(&dum->lock); in dummy_dequeue()
769 dev_dbg(udc_dev(dum), in dummy_dequeue()
782 struct dummy *dum; in dummy_set_halt_and_wedge() local
787 dum = ep_to_dummy(ep); in dummy_set_halt_and_wedge()
788 if (!dum->driver) in dummy_set_halt_and_wedge()
847 if (!(dum_hcd->dum->devstatus & ((1 << USB_DEVICE_B_HNP_ENABLE) in dummy_wakeup()
867 struct dummy *dum; in dummy_set_selfpowered() local
870 dum = gadget_to_dummy_hcd(_gadget)->dum; in dummy_set_selfpowered()
872 dum->devstatus |= (1 << USB_DEVICE_SELF_POWERED); in dummy_set_selfpowered()
874 dum->devstatus &= ~(1 << USB_DEVICE_SELF_POWERED); in dummy_set_selfpowered()
878 static void dummy_udc_update_ep0(struct dummy *dum) in dummy_udc_update_ep0() argument
880 if (dum->gadget.speed == USB_SPEED_SUPER) in dummy_udc_update_ep0()
881 dum->ep[0].ep.maxpacket = 9; in dummy_udc_update_ep0()
883 dum->ep[0].ep.maxpacket = 64; in dummy_udc_update_ep0()
889 struct dummy *dum; in dummy_pullup() local
892 dum = gadget_dev_to_dummy(&_gadget->dev); in dummy_pullup()
894 if (value && dum->driver) { in dummy_pullup()
896 dum->gadget.speed = dum->driver->max_speed; in dummy_pullup()
898 dum->gadget.speed = min_t(u8, USB_SPEED_HIGH, in dummy_pullup()
899 dum->driver->max_speed); in dummy_pullup()
901 dum->gadget.speed = USB_SPEED_FULL; in dummy_pullup()
902 dummy_udc_update_ep0(dum); in dummy_pullup()
904 if (dum->gadget.speed < dum->driver->max_speed) in dummy_pullup()
905 dev_dbg(udc_dev(dum), "This device can perform faster" in dummy_pullup()
907 usb_speed_string(dum->driver->max_speed)); in dummy_pullup()
911 spin_lock_irqsave(&dum->lock, flags); in dummy_pullup()
912 dum->pullup = (value != 0); in dummy_pullup()
914 spin_unlock_irqrestore(&dum->lock, flags); in dummy_pullup()
939 struct dummy *dum = gadget_dev_to_dummy(dev); in function_show() local
941 if (!dum->driver || !dum->driver->function) in function_show()
943 return scnprintf(buf, PAGE_SIZE, "%s\n", dum->driver->function); in function_show()
967 struct dummy *dum = dum_hcd->dum; in dummy_udc_start() local
977 dum->devstatus = 0; in dummy_udc_start()
978 dum->driver = driver; in dummy_udc_start()
986 struct dummy *dum = dum_hcd->dum; in dummy_udc_stop() local
988 dum->driver = NULL; in dummy_udc_stop()
997 static void init_dummy_udc_hw(struct dummy *dum) in init_dummy_udc_hw() argument
1001 INIT_LIST_HEAD(&dum->gadget.ep_list); in init_dummy_udc_hw()
1003 struct dummy_ep *ep = &dum->ep[i]; in init_dummy_udc_hw()
1010 list_add_tail(&ep->ep.ep_list, &dum->gadget.ep_list); in init_dummy_udc_hw()
1016 ep->gadget = &dum->gadget; in init_dummy_udc_hw()
1021 dum->gadget.ep0 = &dum->ep[0].ep; in init_dummy_udc_hw()
1022 list_del_init(&dum->ep[0].ep.ep_list); in init_dummy_udc_hw()
1023 INIT_LIST_HEAD(&dum->fifo_req.queue); in init_dummy_udc_hw()
1026 dum->gadget.is_otg = 1; in init_dummy_udc_hw()
1032 struct dummy *dum; in dummy_udc_probe() local
1035 dum = *((void **)dev_get_platdata(&pdev->dev)); in dummy_udc_probe()
1036 dum->gadget.name = gadget_name; in dummy_udc_probe()
1037 dum->gadget.ops = &dummy_ops; in dummy_udc_probe()
1038 dum->gadget.max_speed = USB_SPEED_SUPER; in dummy_udc_probe()
1040 dum->gadget.dev.parent = &pdev->dev; in dummy_udc_probe()
1041 init_dummy_udc_hw(dum); in dummy_udc_probe()
1043 rc = usb_add_gadget_udc(&pdev->dev, &dum->gadget); in dummy_udc_probe()
1047 rc = device_create_file(&dum->gadget.dev, &dev_attr_function); in dummy_udc_probe()
1050 platform_set_drvdata(pdev, dum); in dummy_udc_probe()
1054 usb_del_gadget_udc(&dum->gadget); in dummy_udc_probe()
1061 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_remove() local
1063 device_remove_file(&dum->gadget.dev, &dev_attr_function); in dummy_udc_remove()
1064 usb_del_gadget_udc(&dum->gadget); in dummy_udc_remove()
1068 static void dummy_udc_pm(struct dummy *dum, struct dummy_hcd *dum_hcd, in dummy_udc_pm() argument
1071 spin_lock_irq(&dum->lock); in dummy_udc_pm()
1072 dum->udc_suspended = suspend; in dummy_udc_pm()
1074 spin_unlock_irq(&dum->lock); in dummy_udc_pm()
1079 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_suspend() local
1080 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_suspend()
1083 dummy_udc_pm(dum, dum_hcd, 1); in dummy_udc_suspend()
1090 struct dummy *dum = platform_get_drvdata(pdev); in dummy_udc_resume() local
1091 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_resume()
1094 dummy_udc_pm(dum, dum_hcd, 0); in dummy_udc_resume()
1225 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1255 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1268 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1275 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1349 struct dummy *dum = dum_hcd->dum; in transfer() local
1461 spin_unlock(&dum->lock); in transfer()
1463 spin_lock(&dum->lock); in transfer()
1480 static int periodic_bytes(struct dummy *dum, struct dummy_ep *ep) in periodic_bytes() argument
1484 if (dum->gadget.speed == USB_SPEED_HIGH) { in periodic_bytes()
1493 if (dum->gadget.speed == USB_SPEED_SUPER) { in periodic_bytes()
1516 static struct dummy_ep *find_endpoint(struct dummy *dum, u8 address) in find_endpoint() argument
1520 if (!is_active((dum->gadget.speed == USB_SPEED_SUPER ? in find_endpoint()
1521 dum->ss_hcd : dum->hs_hcd))) in find_endpoint()
1524 return &dum->ep[0]; in find_endpoint()
1526 struct dummy_ep *ep = &dum->ep[i]; in find_endpoint()
1563 struct dummy *dum = dum_hcd->dum; in handle_control_request() local
1574 dum->address = w_value; in handle_control_request()
1576 dev_dbg(udc_dev(dum), "set_address = %d\n", in handle_control_request()
1587 dum->gadget.b_hnp_enable = 1; in handle_control_request()
1590 dum->gadget.a_hnp_support = 1; in handle_control_request()
1593 dum->gadget.a_alt_hnp_support = 1; in handle_control_request()
1620 dum->devstatus |= (1 << w_value); in handle_control_request()
1625 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1668 dum->devstatus &= ~(1 << w_value); in handle_control_request()
1673 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1697 ep2 = find_endpoint(dum, w_index); in handle_control_request()
1705 buf[0] = (u8)dum->devstatus; in handle_control_request()
1727 struct dummy *dum = dum_hcd->dum; in dummy_timer() local
1734 switch (dum->gadget.speed) { in dummy_timer()
1756 spin_lock_irqsave(&dum->lock, flags); in dummy_timer()
1761 spin_unlock_irqrestore(&dum->lock, flags); in dummy_timer()
1768 dum->ep[i].already_seen = 0; in dummy_timer()
1798 ep = find_endpoint(dum, address); in dummy_timer()
1811 if (ep == &dum->ep[0] && urb->error_count) { in dummy_timer()
1825 if (ep == &dum->ep[0] && ep->setup_stage) { in dummy_timer()
1834 dev_dbg(udc_dev(dum), "stale req = %p\n", in dummy_timer()
1837 spin_unlock(&dum->lock); in dummy_timer()
1839 spin_lock(&dum->lock); in dummy_timer()
1859 spin_unlock(&dum->lock); in dummy_timer()
1860 value = dum->driver->setup(&dum->gadget, in dummy_timer()
1862 spin_lock(&dum->lock); in dummy_timer()
1874 dev_dbg(udc_dev(dum), in dummy_timer()
1893 limit = max(limit, periodic_bytes(dum, ep)); in dummy_timer()
1901 limit = max(limit, periodic_bytes(dum, ep)); in dummy_timer()
1922 spin_unlock(&dum->lock); in dummy_timer()
1924 spin_lock(&dum->lock); in dummy_timer()
1937 spin_unlock_irqrestore(&dum->lock, flags); in dummy_timer()
1957 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_status()
1976 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_status()
2045 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2126 if (dum_hcd->dum->pullup) { in dummy_hub_control()
2130 switch (dum_hcd->dum->gadget.speed) { in dummy_hub_control()
2136 dum_hcd->dum->gadget.ep0-> in dummy_hub_control()
2142 dum_hcd->dum->gadget.speed = in dummy_hub_control()
2196 & dum_hcd->dum->devstatus) != 0) in dummy_hub_control()
2233 dum_hcd->dum->devstatus &= in dummy_hub_control()
2282 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2295 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2299 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2310 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2320 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2379 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in urbs_show()
2387 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in urbs_show()
2425 spin_lock_init(&dum_hcd->dum->lock); in dummy_start()
2447 struct dummy *dum; in dummy_stop() local
2449 dum = hcd_to_dummy_hcd(hcd)->dum; in dummy_stop()
2463 struct dummy *dum; in dummy_setup() local
2465 dum = *((void **)dev_get_platdata(hcd->self.controller)); in dummy_setup()
2468 dum->hs_hcd = hcd_to_dummy_hcd(hcd); in dummy_setup()
2469 dum->hs_hcd->dum = dum; in dummy_setup()
2478 dum->ss_hcd = hcd_to_dummy_hcd(hcd); in dummy_setup()
2479 dum->ss_hcd->dum = dum; in dummy_setup()
2501 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2529 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2544 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2561 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2592 struct dummy *dum; in dummy_hcd_probe() local
2598 dum = *((void **)dev_get_platdata(&pdev->dev)); in dummy_hcd_probe()
2631 dum->hs_hcd = dum->ss_hcd = NULL; in dummy_hcd_probe()
2637 struct dummy *dum; in dummy_hcd_remove() local
2639 dum = hcd_to_dummy_hcd(platform_get_drvdata(pdev))->dum; in dummy_hcd_remove()
2641 if (dum->ss_hcd) { in dummy_hcd_remove()
2642 usb_remove_hcd(dummy_hcd_to_hcd(dum->ss_hcd)); in dummy_hcd_remove()
2643 usb_put_hcd(dummy_hcd_to_hcd(dum->ss_hcd)); in dummy_hcd_remove()
2646 usb_remove_hcd(dummy_hcd_to_hcd(dum->hs_hcd)); in dummy_hcd_remove()
2647 usb_put_hcd(dummy_hcd_to_hcd(dum->hs_hcd)); in dummy_hcd_remove()
2649 dum->hs_hcd = NULL; in dummy_hcd_remove()
2650 dum->ss_hcd = NULL; in dummy_hcd_remove()
2704 struct dummy *dum[MAX_NUM_UDC]; in init() local
2737 dum[i] = kzalloc(sizeof(struct dummy), GFP_KERNEL); in init()
2738 if (!dum[i]) { in init()
2742 retval = platform_device_add_data(the_hcd_pdev[i], &dum[i], in init()
2746 retval = platform_device_add_data(the_udc_pdev[i], &dum[i], in init()
2769 if (!dum[i]->hs_hcd || in init()
2770 (!dum[i]->ss_hcd && mod_data.is_super_speed)) { in init()
2814 kfree(dum[i]); in init()
2829 struct dummy *dum; in cleanup() local
2831 dum = *((void **)dev_get_platdata(&the_udc_pdev[i]->dev)); in cleanup()
2835 kfree(dum); in cleanup()