diff options
Diffstat (limited to 'drivers/usb/core/endpoint.c')
| -rw-r--r-- | drivers/usb/core/endpoint.c | 35 | 
1 files changed, 4 insertions, 31 deletions
| diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c index 903426b6d305..a2530811cf7d 100644 --- a/drivers/usb/core/endpoint.c +++ b/drivers/usb/core/endpoint.c @@ -84,40 +84,13 @@ static ssize_t interval_show(struct device *dev, struct device_attribute *attr,  			     char *buf)  {  	struct ep_device *ep = to_ep_device(dev); +	unsigned int interval;  	char unit; -	unsigned interval = 0; -	unsigned in; -	in = (ep->desc->bEndpointAddress & USB_DIR_IN); - -	switch (usb_endpoint_type(ep->desc)) { -	case USB_ENDPOINT_XFER_CONTROL: -		if (ep->udev->speed == USB_SPEED_HIGH) -			/* uframes per NAK */ -			interval = ep->desc->bInterval; -		break; - -	case USB_ENDPOINT_XFER_ISOC: -		interval = 1 << (ep->desc->bInterval - 1); -		break; - -	case USB_ENDPOINT_XFER_BULK: -		if (ep->udev->speed == USB_SPEED_HIGH && !in) -			/* uframes per NAK */ -			interval = ep->desc->bInterval; -		break; - -	case USB_ENDPOINT_XFER_INT: -		if (ep->udev->speed == USB_SPEED_HIGH) -			interval = 1 << (ep->desc->bInterval - 1); -		else -			interval = ep->desc->bInterval; -		break; -	} -	interval *= (ep->udev->speed == USB_SPEED_HIGH) ? 125 : 1000; -	if (interval % 1000) +	interval = usb_decode_interval(ep->desc, ep->udev->speed); +	if (interval % 1000) {  		unit = 'u'; -	else { +	} else {  		unit = 'm';  		interval /= 1000;  	} | 
