| .. | .. |
|---|
| 84 | 84 | char *buf) |
|---|
| 85 | 85 | { |
|---|
| 86 | 86 | struct ep_device *ep = to_ep_device(dev); |
|---|
| 87 | + unsigned int interval; |
|---|
| 87 | 88 | char unit; |
|---|
| 88 | | - unsigned interval = 0; |
|---|
| 89 | | - unsigned in; |
|---|
| 90 | 89 | |
|---|
| 91 | | - in = (ep->desc->bEndpointAddress & USB_DIR_IN); |
|---|
| 92 | | - |
|---|
| 93 | | - switch (usb_endpoint_type(ep->desc)) { |
|---|
| 94 | | - case USB_ENDPOINT_XFER_CONTROL: |
|---|
| 95 | | - if (ep->udev->speed == USB_SPEED_HIGH) |
|---|
| 96 | | - /* uframes per NAK */ |
|---|
| 97 | | - interval = ep->desc->bInterval; |
|---|
| 98 | | - break; |
|---|
| 99 | | - |
|---|
| 100 | | - case USB_ENDPOINT_XFER_ISOC: |
|---|
| 101 | | - interval = 1 << (ep->desc->bInterval - 1); |
|---|
| 102 | | - break; |
|---|
| 103 | | - |
|---|
| 104 | | - case USB_ENDPOINT_XFER_BULK: |
|---|
| 105 | | - if (ep->udev->speed == USB_SPEED_HIGH && !in) |
|---|
| 106 | | - /* uframes per NAK */ |
|---|
| 107 | | - interval = ep->desc->bInterval; |
|---|
| 108 | | - break; |
|---|
| 109 | | - |
|---|
| 110 | | - case USB_ENDPOINT_XFER_INT: |
|---|
| 111 | | - if (ep->udev->speed == USB_SPEED_HIGH) |
|---|
| 112 | | - interval = 1 << (ep->desc->bInterval - 1); |
|---|
| 113 | | - else |
|---|
| 114 | | - interval = ep->desc->bInterval; |
|---|
| 115 | | - break; |
|---|
| 116 | | - } |
|---|
| 117 | | - interval *= (ep->udev->speed == USB_SPEED_HIGH) ? 125 : 1000; |
|---|
| 118 | | - if (interval % 1000) |
|---|
| 90 | + interval = usb_decode_interval(ep->desc, ep->udev->speed); |
|---|
| 91 | + if (interval % 1000) { |
|---|
| 119 | 92 | unit = 'u'; |
|---|
| 120 | | - else { |
|---|
| 93 | + } else { |
|---|
| 121 | 94 | unit = 'm'; |
|---|
| 122 | 95 | interval /= 1000; |
|---|
| 123 | 96 | } |
|---|