Lines Matching refs:hub
840 struct usb_hub *hub = (struct usb_hub *)urb->context; in hub_irq() local
898 dev_dbg (&hub->intf->dev, "transfer --> %d\n", urb->status); in hub_irq()
900 if ((++hub->nerrors < 10) || hub->error) in hub_irq()
902 hub->error = urb->status; in hub_irq()
908 hub->nerrors = 0; in hub_irq()
948 if (list_empty(&hub->event_list)) { in hub_irq()
953 list_add(&hub->event_list, hcd->phub_event); // new in hub_irq()
1037 if ((status = usb_submit_urb (hub->urb, GFP_ATOMIC)) != 0 in hub_irq()
1040 dev_err (&hub->intf->dev, "previous urb status is %d, resubmit --> %d\n", tmp,status); in hub_irq()
1110 hub_clear_tt_buffer (struct usb_device *hub, U16 devinfo, U16 tt) in hub_clear_tt_buffer() argument
1112 return usb_control_msg (hub, usb_rcvctrlpipe (hub, 0), in hub_clear_tt_buffer()
1185 struct usb_hub *hub = arg; in hub_tt_kevent() local
1188 spin_lock_irqsave (&hub->tt.lock, flags); in hub_tt_kevent()
1189 while (!list_empty (&hub->tt.clear_list)) { in hub_tt_kevent()
1195 temp = hub->tt.clear_list.next; in hub_tt_kevent()
1256 spin_unlock_irqrestore (&hub->tt.lock, flags); in hub_tt_kevent()
1257 dev = interface_to_usbdev (hub->intf); in hub_tt_kevent()
1259 spin_lock_irqsave (&hub->tt.lock, flags); in hub_tt_kevent()
1267 spin_unlock_irqrestore (&hub->tt.lock, flags); in hub_tt_kevent()
1314 dev->bus->bus_name, utt->hub->devpath); in usb_hub_tt_clear_buffer()
1494 void hub_power_on(struct usb_hub *hub) in hub_power_on() argument
1499 dev_dbg(hubdev(interface_to_usbdev(hub->intf)), in hub_power_on()
1501 dev = interface_to_usbdev(hub->intf); in hub_power_on()
1502 for (i = 0; i < hub->descriptor.bNbrPorts; i++) in hub_power_on()
1505 wait_ms(hub->descriptor.bPwrOn2PwrGood * 2); in hub_power_on()
1544 int hub_hub_status(struct usb_hub *hub, in hub_hub_status() argument
1547 struct usb_device *dev = interface_to_usbdev (hub->intf); in hub_hub_status()
1550 ret = get_hub_status(dev, &hub->status.hub); in hub_hub_status()
1598 *status = LE16ToCPU(hub->status.hub.wHubStatus); in hub_hub_status()
1599 *change = LE16ToCPU(hub->status.hub.wHubChange); in hub_hub_status()
1682 static int hub_configure(struct usb_hub *hub, in hub_configure() argument
1685 struct usb_device *dev = interface_to_usbdev (hub->intf); in hub_configure()
1692 hub->buffer = (char (*)[3]) usb_buffer_alloc(dev, sizeof(*hub->buffer), GFP_KERNEL, in hub_configure()
1693 &hub->buffer_dma); in hub_configure()
1694 if (!hub->buffer) { in hub_configure()
1765 hub->status = kmalloc(sizeof(*hub->status), GFP_KERNEL); in hub_configure()
1766 if (!hub->status) { in hub_configure()
1772 hub->descriptor = kmalloc(sizeof(*hub->descriptor), GFP_KERNEL); in hub_configure()
1773 if (!hub->descriptor) { in hub_configure()
1780 ret = get_hub_descriptor(dev, &hub->descriptor, in hub_configure()
1781 sizeof(hub->descriptor)); in hub_configure()
1853 } else if (hub->descriptor.bNbrPorts > USB_MAXCHILDREN) { in hub_configure()
1860 dev->maxchild = hub->descriptor.bNbrPorts; in hub_configure()
1934 hub->descriptor.wHubCharacteristics = LE16ToCPU(hub->descriptor.wHubCharacteristics); in hub_configure()
1936 if (hub->descriptor.wHubCharacteristics & HUB_CHAR_COMPOUND) { in hub_configure()
1941 portstr[i] = hub->descriptor.DeviceRemovable in hub_configure()
1990 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_LPSM) { in hub_configure()
2069 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_OCPM) { in hub_configure()
2156 spin_lock_init (&hub->tt.lock); in hub_configure()
2157 INIT_LIST_HEAD (&hub->tt.clear_list); in hub_configure()
2164 hub->tt.hub = dev; in hub_configure()
2168 hub->tt.hub = dev; in hub_configure()
2169 hub->tt.multi = 1; in hub_configure()
2246 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_TTTT) { in hub_configure()
2263 (hub->descriptor.wHubCharacteristics & HUB_CHAR_PORTIND) in hub_configure()
2343 hub->descriptor.bPwrOn2PwrGood * 2); in hub_configure()
2345 hub->descriptor.bHubContrCurrent); in hub_configure()
2423 ret = hub_hub_status(hub, &hubstatus, &hubchange); in hub_configure()
2588 if ((U32) maxp > sizeof(*hub->buffer)) in hub_configure()
2589 maxp = sizeof(*hub->buffer); in hub_configure()
2591 hub->urb = usb_alloc_urb(0, GFP_KERNEL); in hub_configure()
2592 if (!hub->urb) { in hub_configure()
2670 usb_fill_int_urb(hub->urb, dev, pipe, *hub->buffer, maxp, hub_irq, in hub_configure()
2671 hub, endpoint->bInterval); in hub_configure()
2672 hub->urb->transfer_dma = hub->buffer_dma; in hub_configure()
2673 hub->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in hub_configure()
2674 ret = usb_submit_urb(hub->urb, GFP_KERNEL); in hub_configure()
2682 hub_power_on(hub); in hub_configure()
2753 dev_err (&hub->intf->dev, "config failed, %s (err %d)\n", in hub_configure()
2760 struct usb_hub *hub = (struct usb_hub*) usb_get_intfdata (intf); in hub_disconnect() local
2763 if (!hub) in hub_disconnect()
2837 list_del(&hub->event_list); in hub_disconnect()
2838 INIT_LIST_HEAD(&hub->event_list); in hub_disconnect()
2839 list_del(&hub->hub_list); in hub_disconnect()
2840 INIT_LIST_HEAD(&hub->hub_list); in hub_disconnect()
2914 down(&hub->khubd_sem); in hub_disconnect()
2915 up(&hub->khubd_sem); in hub_disconnect()
2920 if (hub->urb) { in hub_disconnect()
2922 usb_unlink_urb(hub->urb); in hub_disconnect()
2923 usb_free_urb(hub->urb); in hub_disconnect()
2924 hub->urb = NULL; in hub_disconnect()
2928 if (hub.descriptor) { in hub_disconnect()
2929 kfree(hub->descriptor); in hub_disconnect()
2930 hub->descriptor = NULL; in hub_disconnect()
2933 if (hub->status) { in hub_disconnect()
2934 kfree(hub->status); in hub_disconnect()
2935 hub->status = NULL; in hub_disconnect()
3013 if (hub->buffer) { in hub_disconnect()
3015 sizeof(*hub->buffer), hub->buffer, in hub_disconnect()
3016 hub->buffer_dma); in hub_disconnect()
3017 hub->buffer = NULL; in hub_disconnect()
3020 kfree(hub); in hub_disconnect()
3028 struct usb_hub *hub; in hub_probe() local
3251 hub = (struct usb_hub*) kmalloc(sizeof(*hub), GFP_KERNEL); in hub_probe()
3252 if (!hub) { in hub_probe()
3257 memset(hub, 0, sizeof(*hub)); in hub_probe()
3259 INIT_LIST_HEAD(&hub->event_list); in hub_probe()
3260 hub->intf = intf; in hub_probe()
3264 INIT_LIST_HEAD(&hub->hub_list); in hub_probe()
3265 list_add(&hub->hub_list, &hub_list); in hub_probe()
3268 usb_set_intfdata (intf, hub); in hub_probe()
3270 if (hub_configure(hub, endpoint) >= 0) in hub_probe()
3362 if (hub->devnum <= 0) in hub_ioctl()
3438 info->nports = hub->maxchild; in hub_ioctl()
3440 if (hub->children[i] == NULL) in hub_ioctl()
3444 hub->children[i]->devnum; in hub_ioctl()
3533 int hub_reset(struct usb_hub *hub) in hub_reset() argument
3535 struct usb_device *dev = interface_to_usbdev(hub->intf); in hub_reset()
3538 for (i = 0; i < hub->descriptor.bNbrPorts; i++) { in hub_reset()
3602 if (hub->urb) in hub_reset()
3604 usb_unlink_urb(hub->urb); in hub_reset()
3613 hub->urb->dev = dev; in hub_reset()
3614 if (usb_submit_urb(hub->urb, GFP_KERNEL)) in hub_reset()
3617 hub_power_on(hub); in hub_reset()
3777 struct usb_hub *hub = (struct usb_hub*) usb_get_intfdata(dev->actconfig->interface[0]); in hub_port_status() local
3780 ret = get_port_status(dev, port + 1, &hub->status.port); in hub_port_status()
3786 *status = LE16ToCPU(hub->status.port.wPortStatus); in hub_port_status()
3787 *change = LE16ToCPU(hub->status.port.wPortChange); in hub_port_status()
3954 static int hub_port_wait_reset(struct usb_device *hub, int port, in hub_port_wait_reset() argument
4042 ret = hub_port_status(hub, port, &portstatus, &portchange); in hub_port_wait_reset()
4143 dev_dbg(hubdev(hub),"Device Speed is %s\n",portspeed (portstatus)); in hub_port_wait_reset()
4231 dev_dbg (hubdev (hub), in hub_port_wait_reset()
4323 static int hub_port_reset(struct usb_device *hub, int port, in hub_port_reset() argument
4329 set_port_feature(hub, port + 1, USB_PORT_FEAT_RESET); in hub_port_reset()
4331 status = hub_port_wait_reset(hub, port, dev, delay); in hub_port_reset()
4334 clear_port_feature(hub, in hub_port_reset()
4418 dev_dbg (hubdev (hub), in hub_port_reset()
4424 dev_err (hubdev (hub), in hub_port_reset()
4513 int hub_port_disable(struct usb_device *hub, int port) in hub_port_disable() argument
4517 ret = clear_port_feature(hub, port + 1, USB_PORT_FEAT_ENABLE); in hub_port_disable()
4519 dev_err(hubdev(hub), "cannot disable port %d (err = %d)\n", in hub_port_disable()
4608 static int hub_port_debounce(struct usb_device *hub, int port) in hub_port_debounce() argument
4690 ret = hub_port_status(hub, port, &portstatus, &portchange); in hub_port_debounce()
4774 clear_port_feature(hub, port+1, USB_PORT_FEAT_C_CONNECTION); in hub_port_debounce()
4778 dev_info (hubdev (hub), in hub_port_debounce()
4863 struct usb_device *hub = interface_to_usbdev(hubstate->intf); in hub_port_connect_change() local
4866 struct usb_hcd *hcd = (struct usb_hcd*) hub->bus->hcpriv; in hub_port_connect_change()
5019 clear_port_feature(hub, port + 1, USB_PORT_FEAT_C_CONNECTION); in hub_port_connect_change()
5021 if (hub->children[port]) in hub_port_connect_change()
5022 usb_disconnect(&hub->children[port]); in hub_port_connect_change()
5124 hub_port_disable(hub, port); in hub_port_connect_change()
5128 if (hub_port_debounce(hub, port)) { in hub_port_connect_change()
5132 hub_port_disable(hub, port); in hub_port_connect_change()
5234 if (!hub->parent) in hub_port_connect_change()
5342 dev = usb_alloc_dev(hub, hub->bus); in hub_port_connect_change()
5349 hub->children[port] = dev; in hub_port_connect_change()
5353 if ( (hub->parent == NULL) && (hcd->isBadDevice) ) in hub_port_connect_change()
5470 if (hub_port_reset(hub, port, dev, delay)) { in hub_port_connect_change()
5478 if (hub->parent == NULL) in hub_port_connect_change()
5587 if (hub->tt) { in hub_port_connect_change()
5588 dev->tt = hub->tt; in hub_port_connect_change()
5589 dev->ttport = hub->ttport; in hub_port_connect_change()
5592 && hub->speed == USB_SPEED_HIGH) { in hub_port_connect_change()
5907 if (!usb_new_device(dev, &hub->dev)) in hub_port_connect_change()
5921 hub->children[port] = NULL; in hub_port_connect_change()
5922 hub_port_disable(hub, port); in hub_port_connect_change()
6146 struct usb_hub *hub; in has_hub_events() local
6158 hub = list_entry(tmp, struct usb_hub, event_list); in has_hub_events()
6159 dev = interface_to_usbdev(hub->intf); in has_hub_events()
6279 struct usb_hub *hub; in hub_events() local
6298 hub = list_entry(tmp, struct usb_hub, event_list); in hub_events()
6300 dev = interface_to_usbdev(hub->intf); in hub_events()
6310 if (hub->error) { in hub_events()
6311 dev_dbg (&hub->intf->dev, "resetting for error %d\n", in hub_events()
6312 hub->error); in hub_events()
6314 if (hub_reset(hub)) { in hub_events()
6315 dev_dbg (&hub->intf->dev, in hub_events()
6317 up(&hub->khubd_sem); in hub_events()
6322 hub->nerrors = 0; in hub_events()
6323 hub->error = 0; in hub_events()
6423 for (i = 0; i < hub->descriptor.bNbrPorts; i++) { in hub_events()
6429 hub_port_connect_change(hub, i, portstatus, portchange); in hub_events()
6633 dev_err (&hub->intf->dev, in hub_events()
6638 hub_port_connect_change(hub, in hub_events()
6740 dev_dbg (&hub->intf->dev, in hub_events()
6748 dev_err (&hub->intf->dev, in hub_events()
6753 hub_power_on(hub); in hub_events()
6757 dev_dbg (&hub->intf->dev, in hub_events()
6861 if (hub_hub_status(hub, &hubstatus, &hubchange) < 0) { in hub_events()
6862 dev_err (&hub->intf->dev, "get_hub_status failed%s","\n"); in hub_events()
6866 dev_dbg (&hub->intf->dev, "power change%s","\n"); in hub_events()
6870 dev_dbg (&hub->intf->dev, "overcurrent change%s","\n"); in hub_events()
6873 hub_power_on(hub); in hub_events()
6876 up(&hub->khubd_sem); in hub_events()
8703 struct usb_hub *hub; in has_hub_events_EX() local
8717 hub = list_entry(tmp, struct usb_hub, event_list); in has_hub_events_EX()
8718 dev = interface_to_usbdev(hub->intf); in has_hub_events_EX()
8837 struct usb_hub *hub; in hub_events_EX() local
8952 hub = list_entry(tmp, struct usb_hub, event_list); in hub_events_EX()
8954 dev = interface_to_usbdev(hub->intf); in hub_events_EX()
9059 if (hub->error) { in hub_events_EX()
9060 dev_dbg (&hub->intf->dev, "resetting for error %d\n", hub->error); in hub_events_EX()
9062 if (hub_reset(hub)) { in hub_events_EX()
9063 dev_dbg (&hub->intf->dev, "can't reset; disconnecting%s","\n"); in hub_events_EX()
9064 up(&hub->khubd_sem); in hub_events_EX()
9069 hub->nerrors = 0; in hub_events_EX()
9070 hub->error = 0; in hub_events_EX()
9170 for (i = 0; i < hub->descriptor.bNbrPorts; i++) { in hub_events_EX()
9176 hub_port_connect_change(hub, i, portstatus, portchange); in hub_events_EX()
9281 … dev_err (&hub->intf->dev, "port %i " "disabled by hub (EMI?), " "re-enabling...", i + 1); in hub_events_EX()
9282 hub_port_connect_change(hub, i, portstatus, portchange); in hub_events_EX()
9287 dev_dbg (&hub->intf->dev, "suspend change on port %d\n", i + 1); in hub_events_EX()
9292 dev_err (&hub->intf->dev, in hub_events_EX()
9295 hub_power_on(hub); in hub_events_EX()
9395 dev_dbg (&hub->intf->dev, "reset change on port %d\n", i + 1); in hub_events_EX()
9400 if (hub_hub_status(hub, &hubstatus, &hubchange) < 0) { in hub_events_EX()
9401 dev_err (&hub->intf->dev, "get_hub_status failed%s","\n"); in hub_events_EX()
9405 dev_dbg (&hub->intf->dev, "power change%s","\n"); in hub_events_EX()
9506 dev_dbg (&hub->intf->dev, "overcurrent change%s","\n"); in hub_events_EX()
9509 hub_power_on(hub); in hub_events_EX()
9512 up(&hub->khubd_sem); in hub_events_EX()