Lines Matching refs:hcd

439 rh_string(int id, struct usb_hcd const *hcd, u8 *data, unsigned len)  in rh_string()  argument
456 s = hcd->self.bus_name; in rh_string()
460 s = hcd->product_desc; in rh_string()
465 init_utsname()->release, hcd->driver->description); in rh_string()
478 static int rh_call_control (struct usb_hcd *hcd, struct urb *urb) in rh_call_control() argument
494 status = usb_hcd_link_urb_to_ep(hcd, urb); in rh_call_control()
498 urb->hcpriv = hcd; /* Indicate it's queued */ in rh_call_control()
545 tbuf[0] = (device_may_wakeup(&hcd->self.root_hub->dev) in rh_call_control()
553 device_set_wakeup_enable(&hcd->self.root_hub->dev, 0); in rh_call_control()
558 if (device_can_wakeup(&hcd->self.root_hub->dev) in rh_call_control()
560 device_set_wakeup_enable(&hcd->self.root_hub->dev, 1); in rh_call_control()
573 switch (hcd->speed) { in rh_call_control()
594 if (hcd->has_tt) in rh_call_control()
598 switch (hcd->speed) { in rh_call_control()
617 if (device_can_wakeup(&hcd->self.root_hub->dev)) in rh_call_control()
623 hcd, ubuf, wLength); in rh_call_control()
641 dev_dbg (hcd->self.controller, "root hub device address %d\n", in rh_call_control()
657 dev_dbg (hcd->self.controller, "no endpoint features yet\n"); in rh_call_control()
683 status = hcd->driver->hub_control (hcd, in rh_call_control()
688 usb_hub_adjust_deviceremovable(hcd->self.root_hub, in rh_call_control()
699 dev_dbg (hcd->self.controller, in rh_call_control()
737 usb_hcd_unlink_urb_from_ep(hcd, urb); in rh_call_control()
738 usb_hcd_giveback_urb(hcd, urb, status); in rh_call_control()
752 void usb_hcd_poll_rh_status(struct usb_hcd *hcd) in usb_hcd_poll_rh_status() argument
760 if (unlikely(!hcd->rh_pollable)) in usb_hcd_poll_rh_status()
762 if (!hcd->uses_new_polling && !hcd->status_urb) in usb_hcd_poll_rh_status()
765 length = hcd->driver->hub_status_data(hcd, buffer); in usb_hcd_poll_rh_status()
770 urb = hcd->status_urb; in usb_hcd_poll_rh_status()
772 clear_bit(HCD_FLAG_POLL_PENDING, &hcd->flags); in usb_hcd_poll_rh_status()
773 hcd->status_urb = NULL; in usb_hcd_poll_rh_status()
783 usb_hcd_unlink_urb_from_ep(hcd, urb); in usb_hcd_poll_rh_status()
784 usb_hcd_giveback_urb(hcd, urb, status); in usb_hcd_poll_rh_status()
787 set_bit(HCD_FLAG_POLL_PENDING, &hcd->flags); in usb_hcd_poll_rh_status()
796 if (hcd->uses_new_polling ? HCD_POLL_RH(hcd) : in usb_hcd_poll_rh_status()
797 (length == 0 && hcd->status_urb != NULL)) in usb_hcd_poll_rh_status()
798 mod_timer (&hcd->rh_timer, (jiffies/(HZ/4) + 1) * (HZ/4)); in usb_hcd_poll_rh_status()
812 static int rh_queue_status (struct usb_hcd *hcd, struct urb *urb) in rh_queue_status() argument
819 if (hcd->status_urb || urb->transfer_buffer_length < len) { in rh_queue_status()
820 dev_dbg (hcd->self.controller, "not queuing rh status urb\n"); in rh_queue_status()
825 retval = usb_hcd_link_urb_to_ep(hcd, urb); in rh_queue_status()
829 hcd->status_urb = urb; in rh_queue_status()
830 urb->hcpriv = hcd; /* indicate it's queued */ in rh_queue_status()
831 if (!hcd->uses_new_polling) in rh_queue_status()
832 mod_timer(&hcd->rh_timer, (jiffies/(HZ/4) + 1) * (HZ/4)); in rh_queue_status()
835 else if (HCD_POLL_PENDING(hcd)) in rh_queue_status()
836 mod_timer(&hcd->rh_timer, jiffies); in rh_queue_status()
843 static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb) in rh_urb_enqueue() argument
846 return rh_queue_status (hcd, urb); in rh_urb_enqueue()
848 return rh_call_control (hcd, urb); in rh_urb_enqueue()
857 static int usb_rh_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) in usb_rh_urb_dequeue() argument
863 rc = usb_hcd_check_unlink_urb(hcd, urb, status); in usb_rh_urb_dequeue()
871 if (!hcd->uses_new_polling) in usb_rh_urb_dequeue()
872 del_timer (&hcd->rh_timer); in usb_rh_urb_dequeue()
873 if (urb == hcd->status_urb) { in usb_rh_urb_dequeue()
874 hcd->status_urb = NULL; in usb_rh_urb_dequeue()
875 usb_hcd_unlink_urb_from_ep(hcd, urb); in usb_rh_urb_dequeue()
876 usb_hcd_giveback_urb(hcd, urb, status); in usb_rh_urb_dequeue()
982 static int register_root_hub(struct usb_hcd *hcd) in register_root_hub() argument
984 struct device *parent_dev = hcd->self.controller; in register_root_hub()
985 struct usb_device *usb_dev = hcd->self.root_hub; in register_root_hub()
1023 hcd->rh_registered = 1; in register_root_hub()
1027 if (HCD_DEAD(hcd)) in register_root_hub()
1028 usb_hc_died (hcd); /* This time clean up */ in register_root_hub()
1153 int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb) in usb_hcd_link_urb_to_ep() argument
1179 if (HCD_RH_RUNNING(hcd)) { in usb_hcd_link_urb_to_ep()
1211 int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb, in usb_hcd_check_unlink_urb() argument
1244 void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb) in usb_hcd_unlink_urb_from_ep() argument
1332 void usb_hcd_unmap_urb_setup_for_dma(struct usb_hcd *hcd, struct urb *urb) in usb_hcd_unmap_urb_setup_for_dma() argument
1336 dma_unmap_single(hcd->self.sysdev, in usb_hcd_unmap_urb_setup_for_dma()
1352 static void unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) in unmap_urb_for_dma() argument
1354 if (hcd->driver->unmap_urb_for_dma) in unmap_urb_for_dma()
1355 hcd->driver->unmap_urb_for_dma(hcd, urb); in unmap_urb_for_dma()
1357 usb_hcd_unmap_urb_for_dma(hcd, urb); in unmap_urb_for_dma()
1360 void usb_hcd_unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) in usb_hcd_unmap_urb_for_dma() argument
1364 usb_hcd_unmap_urb_setup_for_dma(hcd, urb); in usb_hcd_unmap_urb_for_dma()
1369 dma_unmap_sg(hcd->self.sysdev, in usb_hcd_unmap_urb_for_dma()
1375 dma_unmap_page(hcd->self.sysdev, in usb_hcd_unmap_urb_for_dma()
1381 dma_unmap_single(hcd->self.sysdev, in usb_hcd_unmap_urb_for_dma()
1398 static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb, in map_urb_for_dma() argument
1401 if (hcd->driver->map_urb_for_dma) in map_urb_for_dma()
1402 return hcd->driver->map_urb_for_dma(hcd, urb, mem_flags); in map_urb_for_dma()
1404 return usb_hcd_map_urb_for_dma(hcd, urb, mem_flags); in map_urb_for_dma()
1407 int usb_hcd_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb, in usb_hcd_map_urb_for_dma() argument
1420 if (hcd->self.uses_pio_for_control) in usb_hcd_map_urb_for_dma()
1422 if (hcd->localmem_pool) { in usb_hcd_map_urb_for_dma()
1432 } else if (hcd_uses_dma(hcd)) { in usb_hcd_map_urb_for_dma()
1439 hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1443 if (dma_mapping_error(hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1453 if (hcd->localmem_pool) { in usb_hcd_map_urb_for_dma()
1462 } else if (hcd_uses_dma(hcd)) { in usb_hcd_map_urb_for_dma()
1473 hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1488 hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1493 if (dma_mapping_error(hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1503 hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1507 if (dma_mapping_error(hcd->self.sysdev, in usb_hcd_map_urb_for_dma()
1516 usb_hcd_unmap_urb_for_dma(hcd, urb); in usb_hcd_map_urb_for_dma()
1532 struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); in usb_hcd_submit_urb() local
1541 usbmon_urb_submit(&hcd->self, urb); in usb_hcd_submit_urb()
1552 status = rh_urb_enqueue(hcd, urb); in usb_hcd_submit_urb()
1554 status = map_urb_for_dma(hcd, urb, mem_flags); in usb_hcd_submit_urb()
1556 status = hcd->driver->urb_enqueue(hcd, urb, mem_flags); in usb_hcd_submit_urb()
1558 unmap_urb_for_dma(hcd, urb); in usb_hcd_submit_urb()
1563 usbmon_urb_submit_error(&hcd->self, urb, status); in usb_hcd_submit_urb()
1589 static int unlink1(struct usb_hcd *hcd, struct urb *urb, int status) in unlink1() argument
1594 value = usb_rh_urb_dequeue(hcd, urb, status); in unlink1()
1600 value = hcd->driver->urb_dequeue(hcd, urb, status); in unlink1()
1613 struct usb_hcd *hcd; in usb_hcd_unlink_urb() local
1630 hcd = bus_to_hcd(urb->dev->bus); in usb_hcd_unlink_urb()
1631 retval = unlink1(hcd, urb, status); in usb_hcd_unlink_urb()
1646 struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); in __usb_hcd_giveback_urb() local
1656 unmap_urb_for_dma(hcd, urb); in __usb_hcd_giveback_urb()
1657 usbmon_urb_complete(&hcd->self, urb, status); in __usb_hcd_giveback_urb()
1744 void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, int status) in usb_hcd_giveback_urb() argument
1753 if (!hcd_giveback_urb_in_bh(hcd) && !is_root_hub(urb->dev)) { in usb_hcd_giveback_urb()
1759 bh = &hcd->high_prio_bh; in usb_hcd_giveback_urb()
1761 bh = &hcd->low_prio_bh; in usb_hcd_giveback_urb()
1786 struct usb_hcd *hcd; in usb_hcd_flush_endpoint() local
1792 hcd = bus_to_hcd(udev->bus); in usb_hcd_flush_endpoint()
1807 unlink1(hcd, urb, -ESHUTDOWN); in usb_hcd_flush_endpoint()
1808 dev_dbg (hcd->self.controller, in usb_hcd_flush_endpoint()
1870 struct usb_hcd *hcd; in usb_hcd_alloc_bandwidth() local
1873 hcd = bus_to_hcd(udev->bus); in usb_hcd_alloc_bandwidth()
1874 if (!hcd->driver->check_bandwidth) in usb_hcd_alloc_bandwidth()
1882 hcd->driver->drop_endpoint(hcd, udev, ep); in usb_hcd_alloc_bandwidth()
1885 hcd->driver->drop_endpoint(hcd, udev, ep); in usb_hcd_alloc_bandwidth()
1887 hcd->driver->check_bandwidth(hcd, udev); in usb_hcd_alloc_bandwidth()
1903 ret = hcd->driver->drop_endpoint(hcd, udev, ep); in usb_hcd_alloc_bandwidth()
1909 ret = hcd->driver->drop_endpoint(hcd, udev, ep); in usb_hcd_alloc_bandwidth()
1927 ret = hcd->driver->add_endpoint(hcd, udev, &alt->endpoint[j]); in usb_hcd_alloc_bandwidth()
1956 ret = hcd->driver->drop_endpoint(hcd, udev, in usb_hcd_alloc_bandwidth()
1963 ret = hcd->driver->add_endpoint(hcd, udev, in usb_hcd_alloc_bandwidth()
1969 ret = hcd->driver->check_bandwidth(hcd, udev); in usb_hcd_alloc_bandwidth()
1972 hcd->driver->reset_bandwidth(hcd, udev); in usb_hcd_alloc_bandwidth()
1987 struct usb_hcd *hcd; in usb_hcd_disable_endpoint() local
1990 hcd = bus_to_hcd(udev->bus); in usb_hcd_disable_endpoint()
1991 if (hcd->driver->endpoint_disable) in usb_hcd_disable_endpoint()
1992 hcd->driver->endpoint_disable(hcd, ep); in usb_hcd_disable_endpoint()
2006 struct usb_hcd *hcd = bus_to_hcd(udev->bus); in usb_hcd_reset_endpoint() local
2008 if (hcd->driver->endpoint_reset) in usb_hcd_reset_endpoint()
2009 hcd->driver->endpoint_reset(hcd, ep); in usb_hcd_reset_endpoint()
2040 struct usb_hcd *hcd; in usb_alloc_streams() local
2045 hcd = bus_to_hcd(dev->bus); in usb_alloc_streams()
2046 if (!hcd->driver->alloc_streams || !hcd->driver->free_streams) in usb_alloc_streams()
2062 ret = hcd->driver->alloc_streams(hcd, dev, eps, num_eps, in usb_alloc_streams()
2090 struct usb_hcd *hcd; in usb_free_streams() local
2095 hcd = bus_to_hcd(dev->bus); in usb_free_streams()
2104 ret = hcd->driver->free_streams(hcd, dev, eps, num_eps, mem_flags); in usb_free_streams()
2131 struct usb_hcd *hcd = bus_to_hcd(udev->bus); in usb_hcd_get_frame_number() local
2133 if (!HCD_RH_RUNNING(hcd)) in usb_hcd_get_frame_number()
2135 return hcd->driver->get_frame_number (hcd); in usb_hcd_get_frame_number()
2160 struct usb_hcd *hcd = bus_to_hcd(udev->bus); in request_single_step_set_feature_urb() local
2180 if (map_urb_for_dma(hcd, urb, GFP_KERNEL)) { in request_single_step_set_feature_urb()
2190 int ehset_single_step_set_feature(struct usb_hcd *hcd, int port) in ehset_single_step_set_feature() argument
2200 udev = usb_hub_find_child(hcd->self.root_hub, port); in ehset_single_step_set_feature()
2202 dev_err(hcd->self.controller, "No device attached to the RootHub\n"); in ehset_single_step_set_feature()
2226 retval = hcd->driver->submit_single_step_set_feature(hcd, urb, 1); in ehset_single_step_set_feature()
2232 dev_err(hcd->self.controller, in ehset_single_step_set_feature()
2243 retval = hcd->driver->submit_single_step_set_feature(hcd, urb, 0); in ehset_single_step_set_feature()
2248 dev_err(hcd->self.controller, in ehset_single_step_set_feature()
2267 struct usb_hcd *hcd = bus_to_hcd(rhdev->bus); in hcd_bus_suspend() local
2269 int old_state = hcd->state; in hcd_bus_suspend()
2274 if (HCD_DEAD(hcd)) { in hcd_bus_suspend()
2279 if (!hcd->driver->bus_suspend) { in hcd_bus_suspend()
2282 clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in hcd_bus_suspend()
2283 hcd->state = HC_STATE_QUIESCING; in hcd_bus_suspend()
2284 status = hcd->driver->bus_suspend(hcd); in hcd_bus_suspend()
2288 hcd->state = HC_STATE_SUSPENDED; in hcd_bus_suspend()
2291 usb_phy_roothub_suspend(hcd->self.sysdev, in hcd_bus_suspend()
2292 hcd->phy_roothub); in hcd_bus_suspend()
2298 status = hcd->driver->hub_status_data(hcd, buffer); in hcd_bus_suspend()
2307 if (!HCD_DEAD(hcd)) { in hcd_bus_suspend()
2308 set_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in hcd_bus_suspend()
2309 hcd->state = old_state; in hcd_bus_suspend()
2320 struct usb_hcd *hcd = bus_to_hcd(rhdev->bus); in hcd_bus_resume() local
2322 int old_state = hcd->state; in hcd_bus_resume()
2326 if (HCD_DEAD(hcd)) { in hcd_bus_resume()
2332 status = usb_phy_roothub_resume(hcd->self.sysdev, in hcd_bus_resume()
2333 hcd->phy_roothub); in hcd_bus_resume()
2338 if (!hcd->driver->bus_resume) in hcd_bus_resume()
2340 if (HCD_RH_RUNNING(hcd)) in hcd_bus_resume()
2343 hcd->state = HC_STATE_RESUMING; in hcd_bus_resume()
2344 status = hcd->driver->bus_resume(hcd); in hcd_bus_resume()
2345 clear_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags); in hcd_bus_resume()
2347 status = usb_phy_roothub_calibrate(hcd->phy_roothub); in hcd_bus_resume()
2354 if (!HCD_DEAD(hcd)) { in hcd_bus_resume()
2358 set_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in hcd_bus_resume()
2359 hcd->state = HC_STATE_RUNNING; in hcd_bus_resume()
2377 hcd->state = old_state; in hcd_bus_resume()
2378 usb_phy_roothub_suspend(hcd->self.sysdev, hcd->phy_roothub); in hcd_bus_resume()
2382 usb_hc_died(hcd); in hcd_bus_resume()
2390 struct usb_hcd *hcd = container_of(work, struct usb_hcd, wakeup_work); in hcd_resume_work() local
2391 struct usb_device *udev = hcd->self.root_hub; in hcd_resume_work()
2405 void usb_hcd_resume_root_hub (struct usb_hcd *hcd) in usb_hcd_resume_root_hub() argument
2410 if (hcd->rh_registered) { in usb_hcd_resume_root_hub()
2411 pm_wakeup_event(&hcd->self.root_hub->dev, 0); in usb_hcd_resume_root_hub()
2412 set_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags); in usb_hcd_resume_root_hub()
2413 queue_work(pm_wq, &hcd->wakeup_work); in usb_hcd_resume_root_hub()
2440 struct usb_hcd *hcd; in usb_bus_start_enum() local
2447 hcd = bus_to_hcd(bus); in usb_bus_start_enum()
2448 if (port_num && hcd->driver->start_port_reset) in usb_bus_start_enum()
2449 status = hcd->driver->start_port_reset(hcd, port_num); in usb_bus_start_enum()
2455 mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(10)); in usb_bus_start_enum()
2476 struct usb_hcd *hcd = __hcd; in usb_hcd_irq() local
2479 if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd))) in usb_hcd_irq()
2481 else if (hcd->driver->irq(hcd) == IRQ_NONE) in usb_hcd_irq()
2495 struct usb_hcd *hcd = container_of(work, struct usb_hcd, died_work); in hcd_died_work() local
2502 kobject_uevent_env(&hcd->self.root_hub->dev.kobj, KOBJ_OFFLINE, env); in hcd_died_work()
2515 void usb_hc_died (struct usb_hcd *hcd) in usb_hc_died() argument
2519 dev_err (hcd->self.controller, "HC died; cleaning up\n"); in usb_hc_died()
2522 clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in usb_hc_died()
2523 set_bit(HCD_FLAG_DEAD, &hcd->flags); in usb_hc_died()
2524 if (hcd->rh_registered) { in usb_hc_died()
2525 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); in usb_hc_died()
2528 usb_set_device_state (hcd->self.root_hub, in usb_hc_died()
2530 usb_kick_hub_wq(hcd->self.root_hub); in usb_hc_died()
2532 if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) { in usb_hc_died()
2533 hcd = hcd->shared_hcd; in usb_hc_died()
2534 clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in usb_hc_died()
2535 set_bit(HCD_FLAG_DEAD, &hcd->flags); in usb_hc_died()
2536 if (hcd->rh_registered) { in usb_hc_died()
2537 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); in usb_hc_died()
2540 usb_set_device_state(hcd->self.root_hub, in usb_hc_died()
2542 usb_kick_hub_wq(hcd->self.root_hub); in usb_hc_died()
2547 if (usb_hcd_is_primary_hcd(hcd)) in usb_hc_died()
2548 schedule_work(&hcd->died_work); in usb_hc_died()
2550 schedule_work(&hcd->primary_hcd->died_work); in usb_hc_died()
2571 struct usb_hcd *hcd; in __usb_create_hcd() local
2573 hcd = kzalloc(sizeof(*hcd) + driver->hcd_priv_size, GFP_KERNEL); in __usb_create_hcd()
2574 if (!hcd) in __usb_create_hcd()
2577 hcd->address0_mutex = kmalloc(sizeof(*hcd->address0_mutex), in __usb_create_hcd()
2579 if (!hcd->address0_mutex) { in __usb_create_hcd()
2580 kfree(hcd); in __usb_create_hcd()
2584 mutex_init(hcd->address0_mutex); in __usb_create_hcd()
2585 hcd->bandwidth_mutex = kmalloc(sizeof(*hcd->bandwidth_mutex), in __usb_create_hcd()
2587 if (!hcd->bandwidth_mutex) { in __usb_create_hcd()
2588 kfree(hcd->address0_mutex); in __usb_create_hcd()
2589 kfree(hcd); in __usb_create_hcd()
2593 mutex_init(hcd->bandwidth_mutex); in __usb_create_hcd()
2594 dev_set_drvdata(dev, hcd); in __usb_create_hcd()
2597 hcd->address0_mutex = primary_hcd->address0_mutex; in __usb_create_hcd()
2598 hcd->bandwidth_mutex = primary_hcd->bandwidth_mutex; in __usb_create_hcd()
2599 hcd->primary_hcd = primary_hcd; in __usb_create_hcd()
2601 hcd->shared_hcd = primary_hcd; in __usb_create_hcd()
2602 primary_hcd->shared_hcd = hcd; in __usb_create_hcd()
2606 kref_init(&hcd->kref); in __usb_create_hcd()
2608 usb_bus_init(&hcd->self); in __usb_create_hcd()
2609 hcd->self.controller = dev; in __usb_create_hcd()
2610 hcd->self.sysdev = sysdev; in __usb_create_hcd()
2611 hcd->self.bus_name = bus_name; in __usb_create_hcd()
2613 timer_setup(&hcd->rh_timer, rh_timer_func, 0); in __usb_create_hcd()
2615 INIT_WORK(&hcd->wakeup_work, hcd_resume_work); in __usb_create_hcd()
2618 INIT_WORK(&hcd->died_work, hcd_died_work); in __usb_create_hcd()
2620 hcd->driver = driver; in __usb_create_hcd()
2621 hcd->speed = driver->flags & HCD_MASK; in __usb_create_hcd()
2622 hcd->product_desc = (driver->product_desc) ? driver->product_desc : in __usb_create_hcd()
2624 return hcd; in __usb_create_hcd()
2686 struct usb_hcd *hcd = container_of (kref, struct usb_hcd, kref); in hcd_release() local
2689 if (hcd->shared_hcd) { in hcd_release()
2690 struct usb_hcd *peer = hcd->shared_hcd; in hcd_release()
2695 kfree(hcd->address0_mutex); in hcd_release()
2696 kfree(hcd->bandwidth_mutex); in hcd_release()
2699 kfree(hcd); in hcd_release()
2702 struct usb_hcd *usb_get_hcd (struct usb_hcd *hcd) in usb_get_hcd() argument
2704 if (hcd) in usb_get_hcd()
2705 kref_get (&hcd->kref); in usb_get_hcd()
2706 return hcd; in usb_get_hcd()
2710 void usb_put_hcd (struct usb_hcd *hcd) in usb_put_hcd() argument
2712 if (hcd) in usb_put_hcd()
2713 kref_put (&hcd->kref, hcd_release); in usb_put_hcd()
2717 int usb_hcd_is_primary_hcd(struct usb_hcd *hcd) in usb_hcd_is_primary_hcd() argument
2719 if (!hcd->primary_hcd) in usb_hcd_is_primary_hcd()
2721 return hcd == hcd->primary_hcd; in usb_hcd_is_primary_hcd()
2725 int usb_hcd_find_raw_port_number(struct usb_hcd *hcd, int port1) in usb_hcd_find_raw_port_number() argument
2727 if (!hcd->driver->find_raw_port_number) in usb_hcd_find_raw_port_number()
2730 return hcd->driver->find_raw_port_number(hcd, port1); in usb_hcd_find_raw_port_number()
2733 static int usb_hcd_request_irqs(struct usb_hcd *hcd, in usb_hcd_request_irqs() argument
2738 if (hcd->driver->irq) { in usb_hcd_request_irqs()
2740 snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d", in usb_hcd_request_irqs()
2741 hcd->driver->description, hcd->self.busnum); in usb_hcd_request_irqs()
2743 hcd->irq_descr, hcd); in usb_hcd_request_irqs()
2745 dev_err(hcd->self.controller, in usb_hcd_request_irqs()
2750 hcd->irq = irqnum; in usb_hcd_request_irqs()
2751 dev_info(hcd->self.controller, "irq %d, %s 0x%08llx\n", irqnum, in usb_hcd_request_irqs()
2752 (hcd->driver->flags & HCD_MEMORY) ? in usb_hcd_request_irqs()
2754 (unsigned long long)hcd->rsrc_start); in usb_hcd_request_irqs()
2756 hcd->irq = 0; in usb_hcd_request_irqs()
2757 if (hcd->rsrc_start) in usb_hcd_request_irqs()
2758 dev_info(hcd->self.controller, "%s 0x%08llx\n", in usb_hcd_request_irqs()
2759 (hcd->driver->flags & HCD_MEMORY) ? in usb_hcd_request_irqs()
2761 (unsigned long long)hcd->rsrc_start); in usb_hcd_request_irqs()
2770 static void usb_put_invalidate_rhdev(struct usb_hcd *hcd) in usb_put_invalidate_rhdev() argument
2775 rhdev = hcd->self.root_hub; in usb_put_invalidate_rhdev()
2776 hcd->self.root_hub = NULL; in usb_put_invalidate_rhdev()
2787 static void usb_stop_hcd(struct usb_hcd *hcd) in usb_stop_hcd() argument
2789 hcd->rh_pollable = 0; in usb_stop_hcd()
2790 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); in usb_stop_hcd()
2791 del_timer_sync(&hcd->rh_timer); in usb_stop_hcd()
2793 hcd->driver->stop(hcd); in usb_stop_hcd()
2794 hcd->state = HC_STATE_HALT; in usb_stop_hcd()
2797 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); in usb_stop_hcd()
2798 del_timer_sync(&hcd->rh_timer); in usb_stop_hcd()
2811 int usb_add_hcd(struct usb_hcd *hcd, in usb_add_hcd() argument
2818 if (!hcd->skip_phy_initialization && usb_hcd_is_primary_hcd(hcd)) { in usb_add_hcd()
2819 hcd->phy_roothub = usb_phy_roothub_alloc(hcd->self.sysdev); in usb_add_hcd()
2820 if (IS_ERR(hcd->phy_roothub)) in usb_add_hcd()
2821 return PTR_ERR(hcd->phy_roothub); in usb_add_hcd()
2823 retval = usb_phy_roothub_init(hcd->phy_roothub); in usb_add_hcd()
2827 retval = usb_phy_roothub_set_mode(hcd->phy_roothub, in usb_add_hcd()
2830 retval = usb_phy_roothub_set_mode(hcd->phy_roothub, in usb_add_hcd()
2835 retval = usb_phy_roothub_power_on(hcd->phy_roothub); in usb_add_hcd()
2840 dev_info(hcd->self.controller, "%s\n", hcd->product_desc); in usb_add_hcd()
2844 hcd->dev_policy = USB_DEVICE_AUTHORIZE_NONE; in usb_add_hcd()
2848 hcd->dev_policy = USB_DEVICE_AUTHORIZE_ALL; in usb_add_hcd()
2852 hcd->dev_policy = USB_DEVICE_AUTHORIZE_INTERNAL; in usb_add_hcd()
2857 hcd->dev_policy = hcd->wireless ? in usb_add_hcd()
2862 set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); in usb_add_hcd()
2865 set_bit(HCD_FLAG_INTF_AUTHORIZED, &hcd->flags); in usb_add_hcd()
2871 retval = hcd_buffer_create(hcd); in usb_add_hcd()
2873 dev_dbg(hcd->self.sysdev, "pool alloc failed\n"); in usb_add_hcd()
2877 retval = usb_register_bus(&hcd->self); in usb_add_hcd()
2881 rhdev = usb_alloc_dev(NULL, &hcd->self, 0); in usb_add_hcd()
2883 dev_err(hcd->self.sysdev, "unable to allocate root hub\n"); in usb_add_hcd()
2888 hcd->self.root_hub = rhdev; in usb_add_hcd()
2895 switch (hcd->speed) { in usb_add_hcd()
2933 set_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in usb_add_hcd()
2938 if (hcd->driver->reset) { in usb_add_hcd()
2939 retval = hcd->driver->reset(hcd); in usb_add_hcd()
2941 dev_err(hcd->self.controller, "can't setup: %d\n", in usb_add_hcd()
2946 hcd->rh_pollable = 1; in usb_add_hcd()
2948 retval = usb_phy_roothub_calibrate(hcd->phy_roothub); in usb_add_hcd()
2953 if (device_can_wakeup(hcd->self.controller) in usb_add_hcd()
2954 && device_can_wakeup(&hcd->self.root_hub->dev)) in usb_add_hcd()
2955 dev_dbg(hcd->self.controller, "supports USB remote wakeup\n"); in usb_add_hcd()
2958 init_giveback_urb_bh(&hcd->high_prio_bh); in usb_add_hcd()
2959 hcd->high_prio_bh.high_prio = true; in usb_add_hcd()
2960 init_giveback_urb_bh(&hcd->low_prio_bh); in usb_add_hcd()
2965 if (usb_hcd_is_primary_hcd(hcd) && irqnum) { in usb_add_hcd()
2966 retval = usb_hcd_request_irqs(hcd, irqnum, irqflags); in usb_add_hcd()
2971 hcd->state = HC_STATE_RUNNING; in usb_add_hcd()
2972 retval = hcd->driver->start(hcd); in usb_add_hcd()
2974 dev_err(hcd->self.controller, "startup error %d\n", retval); in usb_add_hcd()
2979 shared_hcd = hcd->shared_hcd; in usb_add_hcd()
2980 if (!usb_hcd_is_primary_hcd(hcd) && shared_hcd && HCD_DEFER_RH_REGISTER(shared_hcd)) { in usb_add_hcd()
2990 if (!HCD_DEFER_RH_REGISTER(hcd)) { in usb_add_hcd()
2991 retval = register_root_hub(hcd); in usb_add_hcd()
2995 if (hcd->uses_new_polling && HCD_POLL_RH(hcd)) in usb_add_hcd()
2996 usb_hcd_poll_rh_status(hcd); in usb_add_hcd()
3002 usb_stop_hcd(hcd); in usb_add_hcd()
3004 if (usb_hcd_is_primary_hcd(hcd) && hcd->irq > 0) in usb_add_hcd()
3005 free_irq(irqnum, hcd); in usb_add_hcd()
3009 usb_put_invalidate_rhdev(hcd); in usb_add_hcd()
3011 usb_deregister_bus(&hcd->self); in usb_add_hcd()
3013 hcd_buffer_destroy(hcd); in usb_add_hcd()
3015 usb_phy_roothub_power_off(hcd->phy_roothub); in usb_add_hcd()
3017 usb_phy_roothub_exit(hcd->phy_roothub); in usb_add_hcd()
3032 void usb_remove_hcd(struct usb_hcd *hcd) in usb_remove_hcd() argument
3037 if (!hcd) { in usb_remove_hcd()
3041 rhdev = hcd->self.root_hub; in usb_remove_hcd()
3043 dev_info(hcd->self.controller, "remove, state %x\n", hcd->state); in usb_remove_hcd()
3046 clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags); in usb_remove_hcd()
3047 if (HC_IS_RUNNING (hcd->state)) in usb_remove_hcd()
3048 hcd->state = HC_STATE_QUIESCING; in usb_remove_hcd()
3050 dev_dbg(hcd->self.controller, "roothub graceful disconnect\n"); in usb_remove_hcd()
3052 rh_registered = hcd->rh_registered; in usb_remove_hcd()
3053 hcd->rh_registered = 0; in usb_remove_hcd()
3057 cancel_work_sync(&hcd->wakeup_work); in usb_remove_hcd()
3059 cancel_work_sync(&hcd->died_work); in usb_remove_hcd()
3081 usb_stop_hcd(hcd); in usb_remove_hcd()
3083 if (usb_hcd_is_primary_hcd(hcd)) { in usb_remove_hcd()
3084 if (hcd->irq > 0) in usb_remove_hcd()
3085 free_irq(hcd->irq, hcd); in usb_remove_hcd()
3088 usb_deregister_bus(&hcd->self); in usb_remove_hcd()
3089 hcd_buffer_destroy(hcd); in usb_remove_hcd()
3091 usb_phy_roothub_power_off(hcd->phy_roothub); in usb_remove_hcd()
3092 usb_phy_roothub_exit(hcd->phy_roothub); in usb_remove_hcd()
3094 usb_put_invalidate_rhdev(hcd); in usb_remove_hcd()
3095 hcd->flags = 0; in usb_remove_hcd()
3102 struct usb_hcd *hcd = platform_get_drvdata(dev); in usb_hcd_platform_shutdown() local
3107 if (hcd->driver->shutdown) in usb_hcd_platform_shutdown()
3108 hcd->driver->shutdown(hcd); in usb_hcd_platform_shutdown()
3112 int usb_hcd_setup_local_mem(struct usb_hcd *hcd, phys_addr_t phys_addr, in usb_hcd_setup_local_mem() argument
3118 hcd->localmem_pool = devm_gen_pool_create(hcd->self.sysdev, 4, in usb_hcd_setup_local_mem()
3119 dev_to_node(hcd->self.sysdev), in usb_hcd_setup_local_mem()
3120 dev_name(hcd->self.sysdev)); in usb_hcd_setup_local_mem()
3121 if (IS_ERR(hcd->localmem_pool)) in usb_hcd_setup_local_mem()
3122 return PTR_ERR(hcd->localmem_pool); in usb_hcd_setup_local_mem()
3129 local_mem = devm_memremap(hcd->self.sysdev, phys_addr, in usb_hcd_setup_local_mem()
3132 local_mem = dmam_alloc_attrs(hcd->self.sysdev, size, &dma, in usb_hcd_setup_local_mem()
3144 err = gen_pool_add_virt(hcd->localmem_pool, (unsigned long)local_mem, in usb_hcd_setup_local_mem()
3145 dma, size, dev_to_node(hcd->self.sysdev)); in usb_hcd_setup_local_mem()
3147 dev_err(hcd->self.sysdev, "gen_pool_add_virt failed with %d\n", in usb_hcd_setup_local_mem()