Lines Matching refs:hub
203 void ms_hub_power_on(struct usb_hub *hub) in ms_hub_power_on() argument
208 ms_usbhost_debug("enabling power on all ports, delay %d\n", hub->descriptor.bPwrOn2PwrGood * 2); in ms_hub_power_on()
209 ms_dev = interface_to_usbdev(hub->intf); in ms_hub_power_on()
210 for (i = 0; i < hub->descriptor.bNbrPorts; i++) in ms_hub_power_on()
215 wait_ms(hub->descriptor.bPwrOn2PwrGood * 2); in ms_hub_power_on()
227 int ms_hub_hub_status(struct usb_hub *hub, U16 *status_r, U16 *change_r) in ms_hub_hub_status() argument
229 struct usb_device *ms_dev = interface_to_usbdev (hub->intf); in ms_hub_hub_status()
235 &hub->status.hub, sizeof(hub->status.hub), HZ * USB_CTRL_GET_TIMEOUT); in ms_hub_hub_status()
242 *status_r = hub->status.hub.wHubStatus; in ms_hub_hub_status()
243 *change_r = hub->status.hub.wHubChange; in ms_hub_hub_status()
257 static int ms_hub_configure(struct usb_hub *hub, in ms_hub_configure() argument
260 struct usb_device *ms_dev = interface_to_usbdev (hub->intf); in ms_hub_configure()
267 hub->buffer = (char (*)[3]) ms_usb_buffer_alloc(ms_dev, sizeof(*hub->buffer), GFP_KERNEL, in ms_hub_configure()
268 &hub->buffer_dma); in ms_hub_configure()
269 if (!hub->buffer) in ms_hub_configure()
279 USB_DT_HUB << 8, 0, &hub->descriptor, sizeof(hub->descriptor), HZ * USB_CTRL_GET_TIMEOUT); in ms_hub_configure()
285 else if (hub->descriptor.bNbrPorts > USB_MAXCHILDREN) in ms_hub_configure()
293 ms_dev->u32MaxChild = hub->descriptor.bNbrPorts; in ms_hub_configure()
296 hub->descriptor.wHubCharacteristics = hub->descriptor.wHubCharacteristics; in ms_hub_configure()
298 if (hub->descriptor.wHubCharacteristics & HUB_CHAR_COMPOUND) in ms_hub_configure()
304 portstr[i] = hub->descriptor.DeviceRemovable[((i + 1) / 8)] & (1 << ((i + 1) % 8)) in ms_hub_configure()
312 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_LPSM) in ms_hub_configure()
326 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_OCPM) in ms_hub_configure()
340 osapi_spin_lock_init (&hub->tt.lock); in ms_hub_configure()
341 ms_list_init (&hub->tt.clear_list); in ms_hub_configure()
349 hub->tt.hub = ms_dev; in ms_hub_configure()
353 hub->tt.hub = ms_dev; in ms_hub_configure()
354 hub->tt.multi = 1; in ms_hub_configure()
361 switch (hub->descriptor.wHubCharacteristics & HUB_CHAR_TTTT) in ms_hub_configure()
366 hub->tt.think_time = 666; in ms_hub_configure()
371 hub->tt.think_time = 666 * 2; in ms_hub_configure()
375 hub->tt.think_time = 666 * 3; in ms_hub_configure()
379 hub->tt.think_time = 666 * 4; in ms_hub_configure()
384 …ms_usbhost_debug("Port LEDs are %s supported\n",(hub->descriptor.wHubCharacteristics & HUB_CHAR_PO… in ms_hub_configure()
385 … ms_usbhost_debug("Power on to power good last time: %dms\n", hub->descriptor.bPwrOn2PwrGood * 2); in ms_hub_configure()
386 ms_usbhost_debug("Hub current requirement: %dmA\n", hub->descriptor.bHubContrCurrent); in ms_hub_configure()
388 s32Ret = ms_hub_hub_status(hub, &hubstatus, &hubchange); in ms_hub_configure()
402 if ((U32) maxp > sizeof(*hub->buffer)) in ms_hub_configure()
403 maxp = sizeof(*hub->buffer); in ms_hub_configure()
405 hub->urb = ms_usb_alloc_urb(GFP_KERNEL); in ms_hub_configure()
406 if (!hub->urb) in ms_hub_configure()
413 ms_usb_stuff_intr_urb(hub->urb, ms_dev, pipe, *hub->buffer, maxp, ms_hub_irq, in ms_hub_configure()
414 hub, endpoint->bInterval); in ms_hub_configure()
415 hub->urb->tTransferDma = hub->buffer_dma; in ms_hub_configure()
416 hub->urb->u32TransferFlags |= MS_FLAG_URB_NO_TRANSFER_DMA_MAP; in ms_hub_configure()
419 ms_hub_power_on(hub); in ms_hub_configure()
421 s32Ret = ms_usb_submit_urb(hub->urb, GFP_KERNEL); in ms_hub_configure()
571 int ms_hub_reset(struct usb_hub *hub) in ms_hub_reset() argument
573 struct usb_device *ms_dev = interface_to_usbdev(hub->intf); in ms_hub_reset()
577 for (i = 0; i < hub->descriptor.bNbrPorts; i++) in ms_hub_reset()
583 if (hub->urb) in ms_hub_reset()
585 ms_usb_unlink_urb(hub->urb); in ms_hub_reset()
594 hub->urb->dev = ms_dev; in ms_hub_reset()
595 if (ms_usb_submit_urb(hub->urb, GFP_KERNEL)) in ms_hub_reset()
598 ms_hub_power_on(hub); in ms_hub_reset()
643 struct usb_hub *hub = (struct usb_hub*) ms_usb_get_intfdata(ms_dev->actconfig->interface[0]); in ms_hub_port_status() local
649 &hub->status.port, sizeof(hub->status.port), HZ * USB_CTRL_GET_TIMEOUT); in ms_hub_port_status()
656 *status_r = hub->status.port.wPortStatus; in ms_hub_port_status()
657 *change_r = hub->status.port.wPortChange; in ms_hub_port_status()
673 static int ms_hub_port_wait_reset(struct usb_device *hub, int port, in ms_hub_port_wait_reset() argument
684 s32Ret = ms_hub_port_status(hub, port, &u16Portstatus, &u16Portchange); in ms_hub_port_wait_reset()
731 static int ms_hub_port_reset(struct usb_device *hub, int port, in ms_hub_port_reset() argument
739 if (hub->parent == NULL) in ms_hub_port_reset()
741 struct usb_hcd *hcd = (struct usb_hcd*) hub->bus->hcpriv; in ms_hub_port_reset()
754 ms_usb_control_cmd(hub, usb_sndctrlpipe(hub, 0), in ms_hub_port_reset()
757 status = ms_hub_port_wait_reset(hub, port, ms_dev, delay); in ms_hub_port_reset()
762 ms_usb_control_cmd(hub, usb_sndctrlpipe(hub, 0), in ms_hub_port_reset()
787 int ms_hub_port_disable(struct usb_device *hub, int port) in ms_hub_port_disable() argument
792 s32Err = ms_usb_control_cmd(hub, usb_sndctrlpipe(hub, 0), in ms_hub_port_disable()
839 static int ms_hub_port_debounce(struct usb_device *hub, int port) in ms_hub_port_debounce() argument
852 s32Err = ms_hub_port_status(hub, port, &u16Portstatus, &u16Portchange); in ms_hub_port_debounce()
873 ms_usb_control_cmd(hub, usb_sndctrlpipe(hub, 0), in ms_hub_port_debounce()
1277 struct usb_hub *hub; in ms_hub_events() local
1295 hub = entry_to_container(list_t, struct usb_hub, event_list); in ms_hub_events()
1296 ms_dev = interface_to_usbdev(hub->intf); in ms_hub_events()
1300 if (hub->error) in ms_hub_events()
1302 ms_usbhost_debug ("resetting for error %d\n", hub->error); in ms_hub_events()
1304 if (ms_hub_reset(hub)) in ms_hub_events()
1311 hub->nerrors = 0; in ms_hub_events()
1312 hub->error = 0; in ms_hub_events()
1323 for (i = 0; i < hub->descriptor.bNbrPorts; i++) in ms_hub_events()
1377 ms_hub_power_on(hub); in ms_hub_events()
1390 pUdev = ms_hub_port_connect_change(hub, i, u16Portstatus, u16Portchange); in ms_hub_events()
1400 if (ms_hub_hub_status(hub, &hubstatus, &hubchange) < 0) in ms_hub_events()
1421 ms_hub_power_on(hub); in ms_hub_events()
1476 ms_dev->bus->bus_name, utt->hub->devpath); in ms_usb_hub_tt_clear_buffer()
1500 struct usb_hub *hub; in ms_hub_tt_kevent() local
1504 osapi_spin_lock_irqsave (&hub->tt.lock, flags); in ms_hub_tt_kevent()
1506 osapi_spin_unlock_irqrestore (&hub->tt.lock, flags); in ms_hub_tt_kevent()
1510 hub = entry_to_container(list_t, struct usb_hub, event_list); in ms_hub_tt_kevent()
1511 while (--limit && !list_empty (&hub->tt.clear_list)) { in ms_hub_tt_kevent()
1514 struct usb_device *hdev = interface_to_usbdev(hub->intf); in ms_hub_tt_kevent()
1517 temp = hub->tt.clear_list.next; in ms_hub_tt_kevent()
1522 osapi_spin_unlock_irqrestore (&hub->tt.lock, flags); in ms_hub_tt_kevent()
1527 osapi_spin_lock_irqsave (&hub->tt.lock, flags); in ms_hub_tt_kevent()
1534 osapi_spin_unlock_irqrestore (&hub->tt.lock, flags); in ms_hub_tt_kevent()