Lines Matching refs:dum_hcd

355 static void set_link_state_by_speed(struct dummy_hcd *dum_hcd)  in set_link_state_by_speed()  argument
357 struct dummy *dum = dum_hcd->dum; in set_link_state_by_speed()
359 if (dummy_hcd_to_hcd(dum_hcd)->speed == HCD_USB3) { in set_link_state_by_speed()
360 if ((dum_hcd->port_status & USB_SS_PORT_STAT_POWER) == 0) { in set_link_state_by_speed()
361 dum_hcd->port_status = 0; in set_link_state_by_speed()
364 dum_hcd->port_status &= ~(USB_PORT_STAT_CONNECTION | in set_link_state_by_speed()
366 if ((dum_hcd->old_status & in set_link_state_by_speed()
368 dum_hcd->port_status |= in set_link_state_by_speed()
372 dum_hcd->port_status |= (USB_PORT_STAT_CONNECTION | in set_link_state_by_speed()
374 if ((dum_hcd->old_status & in set_link_state_by_speed()
376 dum_hcd->port_status |= in set_link_state_by_speed()
378 if ((dum_hcd->port_status & in set_link_state_by_speed()
380 (dum_hcd->port_status & in set_link_state_by_speed()
382 dum_hcd->rh_state != DUMMY_RH_SUSPENDED) in set_link_state_by_speed()
383 dum_hcd->active = 1; in set_link_state_by_speed()
386 if ((dum_hcd->port_status & USB_PORT_STAT_POWER) == 0) { in set_link_state_by_speed()
387 dum_hcd->port_status = 0; in set_link_state_by_speed()
390 dum_hcd->port_status &= ~(USB_PORT_STAT_CONNECTION | in set_link_state_by_speed()
395 if ((dum_hcd->old_status & in set_link_state_by_speed()
397 dum_hcd->port_status |= in set_link_state_by_speed()
400 dum_hcd->port_status |= USB_PORT_STAT_CONNECTION; in set_link_state_by_speed()
401 if ((dum_hcd->old_status & in set_link_state_by_speed()
403 dum_hcd->port_status |= in set_link_state_by_speed()
405 if ((dum_hcd->port_status & USB_PORT_STAT_ENABLE) == 0) in set_link_state_by_speed()
406 dum_hcd->port_status &= ~USB_PORT_STAT_SUSPEND; in set_link_state_by_speed()
407 else if ((dum_hcd->port_status & in set_link_state_by_speed()
409 dum_hcd->rh_state != DUMMY_RH_SUSPENDED) in set_link_state_by_speed()
410 dum_hcd->active = 1; in set_link_state_by_speed()
416 static void set_link_state(struct dummy_hcd *dum_hcd) in set_link_state() argument
418 struct dummy *dum = dum_hcd->dum; in set_link_state()
420 dum_hcd->active = 0; in set_link_state()
422 if ((dummy_hcd_to_hcd(dum_hcd)->speed == HCD_USB3 && in set_link_state()
424 (dummy_hcd_to_hcd(dum_hcd)->speed != HCD_USB3 && in set_link_state()
428 set_link_state_by_speed(dum_hcd); in set_link_state()
430 if ((dum_hcd->port_status & USB_PORT_STAT_ENABLE) == 0 || in set_link_state()
431 dum_hcd->active) in set_link_state()
432 dum_hcd->resuming = 0; in set_link_state()
435 if ((dum_hcd->port_status & USB_PORT_STAT_CONNECTION) == 0 || in set_link_state()
436 (dum_hcd->port_status & USB_PORT_STAT_RESET) != 0) { in set_link_state()
438 dum_hcd->old_status & (~dum_hcd->port_status); in set_link_state()
440 (~dum_hcd->old_status) & dum_hcd->port_status; in set_link_state()
452 } else if (dum_hcd->active != dum_hcd->old_active) { in set_link_state()
453 if (dum_hcd->old_active && dum->driver->suspend) { in set_link_state()
457 } else if (!dum_hcd->old_active && dum->driver->resume) { in set_link_state()
464 dum_hcd->old_status = dum_hcd->port_status; in set_link_state()
465 dum_hcd->old_active = dum_hcd->active; in set_link_state()
484 struct dummy_hcd *dum_hcd; in dummy_enable() local
497 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_enable()
498 if (!is_enabled(dum_hcd)) in dummy_enable()
688 struct dummy_hcd *dum_hcd; in dummy_queue() local
700 dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_queue()
701 if (!dum->driver || !is_enabled(dum_hcd)) in dummy_queue()
844 struct dummy_hcd *dum_hcd; in dummy_wakeup() local
846 dum_hcd = gadget_to_dummy_hcd(_gadget); in dummy_wakeup()
847 if (!(dum_hcd->dum->devstatus & ((1 << USB_DEVICE_B_HNP_ENABLE) in dummy_wakeup()
850 if ((dum_hcd->port_status & USB_PORT_STAT_CONNECTION) == 0) in dummy_wakeup()
852 if ((dum_hcd->port_status & USB_PORT_STAT_SUSPEND) == 0 && in dummy_wakeup()
853 dum_hcd->rh_state != DUMMY_RH_SUSPENDED) in dummy_wakeup()
859 dum_hcd->resuming = 1; in dummy_wakeup()
860 dum_hcd->re_timeout = jiffies + msecs_to_jiffies(20); in dummy_wakeup()
861 mod_timer(&dummy_hcd_to_hcd(dum_hcd)->rh_timer, dum_hcd->re_timeout); in dummy_wakeup()
888 struct dummy_hcd *dum_hcd; in dummy_pullup() local
909 dum_hcd = gadget_to_dummy_hcd(_gadget); in dummy_pullup()
913 set_link_state(dum_hcd); in dummy_pullup()
916 usb_hcd_poll_rh_status(dummy_hcd_to_hcd(dum_hcd)); in dummy_pullup()
966 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(g); in dummy_udc_start() local
967 struct dummy *dum = dum_hcd->dum; in dummy_udc_start()
985 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(g); in dummy_udc_stop() local
986 struct dummy *dum = dum_hcd->dum; in dummy_udc_stop()
1068 static void dummy_udc_pm(struct dummy *dum, struct dummy_hcd *dum_hcd, in dummy_udc_pm() argument
1073 set_link_state(dum_hcd); in dummy_udc_pm()
1080 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_suspend() local
1083 dummy_udc_pm(dum, dum_hcd, 1); in dummy_udc_suspend()
1084 usb_hcd_poll_rh_status(dummy_hcd_to_hcd(dum_hcd)); in dummy_udc_suspend()
1091 struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(&dum->gadget); in dummy_udc_resume() local
1094 dummy_udc_pm(dum, dum_hcd, 0); in dummy_udc_resume()
1095 usb_hcd_poll_rh_status(dummy_hcd_to_hcd(dum_hcd)); in dummy_udc_resume()
1133 static int dummy_ep_stream_en(struct dummy_hcd *dum_hcd, struct urb *urb) in dummy_ep_stream_en() argument
1142 return (1 << index) & dum_hcd->stream_en_ep; in dummy_ep_stream_en()
1152 static int get_max_streams_for_pipe(struct dummy_hcd *dum_hcd, in get_max_streams_for_pipe() argument
1157 max_streams = dum_hcd->num_stream[usb_pipeendpoint(pipe)]; in get_max_streams_for_pipe()
1166 static void set_max_streams_for_pipe(struct dummy_hcd *dum_hcd, in set_max_streams_for_pipe() argument
1172 max_streams = dum_hcd->num_stream[usb_pipeendpoint(pipe)]; in set_max_streams_for_pipe()
1180 dum_hcd->num_stream[usb_pipeendpoint(pipe)] = max_streams; in set_max_streams_for_pipe()
1183 static int dummy_validate_stream(struct dummy_hcd *dum_hcd, struct urb *urb) in dummy_validate_stream() argument
1188 enabled = dummy_ep_stream_en(dum_hcd, urb); in dummy_validate_stream()
1197 max_streams = get_max_streams_for_pipe(dum_hcd, in dummy_validate_stream()
1200 dev_err(dummy_dev(dum_hcd), "Stream id %d is out of range.\n", in dummy_validate_stream()
1213 struct dummy_hcd *dum_hcd; in dummy_urb_enqueue() local
1224 dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_urb_enqueue()
1225 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1227 rc = dummy_validate_stream(dum_hcd, urb); in dummy_urb_enqueue()
1239 if (!dum_hcd->udev) { in dummy_urb_enqueue()
1240 dum_hcd->udev = urb->dev; in dummy_urb_enqueue()
1241 usb_get_dev(dum_hcd->udev); in dummy_urb_enqueue()
1242 } else if (unlikely(dum_hcd->udev != urb->dev)) in dummy_urb_enqueue()
1243 dev_err(dummy_dev(dum_hcd), "usb_device address has changed!\n"); in dummy_urb_enqueue()
1245 list_add_tail(&urbp->urbp_list, &dum_hcd->urbp_list); in dummy_urb_enqueue()
1251 if (!timer_pending(&dum_hcd->timer)) in dummy_urb_enqueue()
1252 mod_timer(&dum_hcd->timer, jiffies + 1); in dummy_urb_enqueue()
1255 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_enqueue()
1261 struct dummy_hcd *dum_hcd; in dummy_urb_dequeue() local
1267 dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_urb_dequeue()
1268 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1271 if (!rc && dum_hcd->rh_state != DUMMY_RH_RUNNING && in dummy_urb_dequeue()
1272 !list_empty(&dum_hcd->urbp_list)) in dummy_urb_dequeue()
1273 mod_timer(&dum_hcd->timer, jiffies); in dummy_urb_dequeue()
1275 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_urb_dequeue()
1346 static int transfer(struct dummy_hcd *dum_hcd, struct urb *urb, in transfer() argument
1349 struct dummy *dum = dum_hcd->dum; in transfer()
1360 if (dummy_ep_stream_en(dum_hcd, urb)) { in transfer()
1511 #define is_active(dum_hcd) ((dum_hcd->port_status & \ argument
1558 static int handle_control_request(struct dummy_hcd *dum_hcd, struct urb *urb, in handle_control_request() argument
1563 struct dummy *dum = dum_hcd->dum; in handle_control_request()
1596 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1603 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1610 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1643 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1650 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1657 if (dummy_hcd_to_hcd(dum_hcd)->speed == in handle_control_request()
1726 struct dummy_hcd *dum_hcd = (struct dummy_hcd *) _dum_hcd; in dummy_timer() local
1727 struct dummy *dum = dum_hcd->dum; in dummy_timer()
1749 dev_err(dummy_dev(dum_hcd), "bogus device speed\n"); in dummy_timer()
1758 if (!dum_hcd->udev) { in dummy_timer()
1759 dev_err(dummy_dev(dum_hcd), in dummy_timer()
1772 list_for_each_entry_safe(urbp, tmp, &dum_hcd->urbp_list, urbp_list) { in dummy_timer()
1783 else if (dum_hcd->rh_state != DUMMY_RH_RUNNING) in dummy_timer()
1801 dev_dbg(dummy_dev(dum_hcd), in dummy_timer()
1817 dev_dbg(dummy_dev(dum_hcd), "ep %s halted, urb %p\n", in dummy_timer()
1852 value = handle_control_request(dum_hcd, urb, &setup, in dummy_timer()
1907 total -= transfer(dum_hcd, urb, ep, limit, &status); in dummy_timer()
1921 usb_hcd_unlink_urb_from_ep(dummy_hcd_to_hcd(dum_hcd), urb); in dummy_timer()
1923 usb_hcd_giveback_urb(dummy_hcd_to_hcd(dum_hcd), urb, status); in dummy_timer()
1929 if (list_empty(&dum_hcd->urbp_list)) { in dummy_timer()
1930 usb_put_dev(dum_hcd->udev); in dummy_timer()
1931 dum_hcd->udev = NULL; in dummy_timer()
1932 } else if (dum_hcd->rh_state == DUMMY_RH_RUNNING) { in dummy_timer()
1934 mod_timer(&dum_hcd->timer, jiffies + msecs_to_jiffies(1)); in dummy_timer()
1951 struct dummy_hcd *dum_hcd; in dummy_hub_status() local
1955 dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_hub_status()
1957 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_status()
1961 if (dum_hcd->resuming && time_after_eq(jiffies, dum_hcd->re_timeout)) { in dummy_hub_status()
1962 dum_hcd->port_status |= (USB_PORT_STAT_C_SUSPEND << 16); in dummy_hub_status()
1963 dum_hcd->port_status &= ~USB_PORT_STAT_SUSPEND; in dummy_hub_status()
1964 set_link_state(dum_hcd); in dummy_hub_status()
1967 if ((dum_hcd->port_status & PORT_C_MASK) != 0) { in dummy_hub_status()
1969 dev_dbg(dummy_dev(dum_hcd), "port status 0x%08x has changes\n", in dummy_hub_status()
1970 dum_hcd->port_status); in dummy_hub_status()
1972 if (dum_hcd->rh_state == DUMMY_RH_SUSPENDED) in dummy_hub_status()
1976 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_status()
2036 struct dummy_hcd *dum_hcd; in dummy_hub_control() local
2043 dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_hub_control()
2045 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2053 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2058 if (dum_hcd->port_status & USB_PORT_STAT_SUSPEND) { in dummy_hub_control()
2060 dum_hcd->resuming = 1; in dummy_hub_control()
2061 dum_hcd->re_timeout = jiffies + in dummy_hub_control()
2067 if (dum_hcd->port_status & USB_PORT_STAT_POWER) in dummy_hub_control()
2068 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2071 if (dum_hcd->port_status & in dummy_hub_control()
2073 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2077 dum_hcd->port_status &= ~(1 << wValue); in dummy_hub_control()
2078 set_link_state(dum_hcd); in dummy_hub_control()
2085 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2117 if (dum_hcd->resuming && in dummy_hub_control()
2118 time_after_eq(jiffies, dum_hcd->re_timeout)) { in dummy_hub_control()
2119 dum_hcd->port_status |= (USB_PORT_STAT_C_SUSPEND << 16); in dummy_hub_control()
2120 dum_hcd->port_status &= ~USB_PORT_STAT_SUSPEND; in dummy_hub_control()
2122 if ((dum_hcd->port_status & USB_PORT_STAT_RESET) != 0 && in dummy_hub_control()
2123 time_after_eq(jiffies, dum_hcd->re_timeout)) { in dummy_hub_control()
2124 dum_hcd->port_status |= (USB_PORT_STAT_C_RESET << 16); in dummy_hub_control()
2125 dum_hcd->port_status &= ~USB_PORT_STAT_RESET; in dummy_hub_control()
2126 if (dum_hcd->dum->pullup) { in dummy_hub_control()
2127 dum_hcd->port_status |= USB_PORT_STAT_ENABLE; in dummy_hub_control()
2130 switch (dum_hcd->dum->gadget.speed) { in dummy_hub_control()
2132 dum_hcd->port_status |= in dummy_hub_control()
2136 dum_hcd->dum->gadget.ep0-> in dummy_hub_control()
2138 dum_hcd->port_status |= in dummy_hub_control()
2142 dum_hcd->dum->gadget.speed = in dummy_hub_control()
2149 set_link_state(dum_hcd); in dummy_hub_control()
2150 ((__le16 *) buf)[0] = cpu_to_le16(dum_hcd->port_status); in dummy_hub_control()
2151 ((__le16 *) buf)[1] = cpu_to_le16(dum_hcd->port_status >> 16); in dummy_hub_control()
2160 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2174 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2183 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2188 if (dum_hcd->active) { in dummy_hub_control()
2189 dum_hcd->port_status |= USB_PORT_STAT_SUSPEND; in dummy_hub_control()
2194 set_link_state(dum_hcd); in dummy_hub_control()
2196 & dum_hcd->dum->devstatus) != 0) in dummy_hub_control()
2197 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2203 dum_hcd->port_status |= USB_SS_PORT_STAT_POWER; in dummy_hub_control()
2205 dum_hcd->port_status |= USB_PORT_STAT_POWER; in dummy_hub_control()
2206 set_link_state(dum_hcd); in dummy_hub_control()
2211 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2220 dum_hcd->port_status = 0; in dummy_hub_control()
2221 dum_hcd->port_status = in dummy_hub_control()
2226 dum_hcd->port_status &= ~(USB_PORT_STAT_ENABLE in dummy_hub_control()
2233 dum_hcd->dum->devstatus &= in dummy_hub_control()
2239 dum_hcd->re_timeout = jiffies + msecs_to_jiffies(50); in dummy_hub_control()
2243 if ((dum_hcd->port_status & in dummy_hub_control()
2245 dum_hcd->port_status |= (1 << wValue); in dummy_hub_control()
2246 set_link_state(dum_hcd); in dummy_hub_control()
2249 if ((dum_hcd->port_status & in dummy_hub_control()
2251 dum_hcd->port_status |= (1 << wValue); in dummy_hub_control()
2252 set_link_state(dum_hcd); in dummy_hub_control()
2258 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2268 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2275 dev_dbg(dummy_dev(dum_hcd), in dummy_hub_control()
2282 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_hub_control()
2284 if ((dum_hcd->port_status & PORT_C_MASK) != 0) in dummy_hub_control()
2291 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_bus_suspend() local
2295 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2296 dum_hcd->rh_state = DUMMY_RH_SUSPENDED; in dummy_bus_suspend()
2297 set_link_state(dum_hcd); in dummy_bus_suspend()
2299 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_suspend()
2305 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_bus_resume() local
2310 spin_lock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2314 dum_hcd->rh_state = DUMMY_RH_RUNNING; in dummy_bus_resume()
2315 set_link_state(dum_hcd); in dummy_bus_resume()
2316 if (!list_empty(&dum_hcd->urbp_list)) in dummy_bus_resume()
2317 mod_timer(&dum_hcd->timer, jiffies); in dummy_bus_resume()
2320 spin_unlock_irq(&dum_hcd->dum->lock); in dummy_bus_resume()
2374 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in urbs_show() local
2379 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in urbs_show()
2380 list_for_each_entry(urbp, &dum_hcd->urbp_list, urbp_list) { in urbs_show()
2387 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in urbs_show()
2393 static int dummy_start_ss(struct dummy_hcd *dum_hcd) in dummy_start_ss() argument
2395 init_timer(&dum_hcd->timer); in dummy_start_ss()
2396 dum_hcd->timer.function = dummy_timer; in dummy_start_ss()
2397 dum_hcd->timer.data = (unsigned long)dum_hcd; in dummy_start_ss()
2398 dum_hcd->rh_state = DUMMY_RH_RUNNING; in dummy_start_ss()
2399 dum_hcd->stream_en_ep = 0; in dummy_start_ss()
2400 INIT_LIST_HEAD(&dum_hcd->urbp_list); in dummy_start_ss()
2401 dummy_hcd_to_hcd(dum_hcd)->power_budget = POWER_BUDGET; in dummy_start_ss()
2402 dummy_hcd_to_hcd(dum_hcd)->state = HC_STATE_RUNNING; in dummy_start_ss()
2403 dummy_hcd_to_hcd(dum_hcd)->uses_new_polling = 1; in dummy_start_ss()
2405 dummy_hcd_to_hcd(dum_hcd)->self.otg_port = 1; in dummy_start_ss()
2410 return device_create_file(dummy_dev(dum_hcd), &dev_attr_urbs); in dummy_start_ss()
2415 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_start() local
2423 return dummy_start_ss(dum_hcd); in dummy_start()
2425 spin_lock_init(&dum_hcd->dum->lock); in dummy_start()
2426 init_timer(&dum_hcd->timer); in dummy_start()
2427 dum_hcd->timer.function = dummy_timer; in dummy_start()
2428 dum_hcd->timer.data = (unsigned long)dum_hcd; in dummy_start()
2429 dum_hcd->rh_state = DUMMY_RH_RUNNING; in dummy_start()
2431 INIT_LIST_HEAD(&dum_hcd->urbp_list); in dummy_start()
2442 return device_create_file(dummy_dev(dum_hcd), &dev_attr_urbs); in dummy_start()
2491 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_alloc_streams() local
2501 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2504 if ((1 << index) & dum_hcd->stream_en_ep) { in dummy_alloc_streams()
2514 dev_dbg(dummy_dev(dum_hcd), "Ep 0x%x only supports %u " in dummy_alloc_streams()
2524 dum_hcd->stream_en_ep |= 1 << index; in dummy_alloc_streams()
2525 set_max_streams_for_pipe(dum_hcd, in dummy_alloc_streams()
2529 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_alloc_streams()
2538 struct dummy_hcd *dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_free_streams() local
2544 spin_lock_irqsave(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2547 if (!((1 << index) & dum_hcd->stream_en_ep)) { in dummy_free_streams()
2555 dum_hcd->stream_en_ep &= ~(1 << index); in dummy_free_streams()
2556 set_max_streams_for_pipe(dum_hcd, in dummy_free_streams()
2561 spin_unlock_irqrestore(&dum_hcd->dum->lock, flags); in dummy_free_streams()
2658 struct dummy_hcd *dum_hcd; in dummy_hcd_suspend() local
2664 dum_hcd = hcd_to_dummy_hcd(hcd); in dummy_hcd_suspend()
2665 if (dum_hcd->rh_state == DUMMY_RH_RUNNING) { in dummy_hcd_suspend()