.. | .. |
---|
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 | } |
---|