[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git-commits-head
Subject:    USB: musb: use right poll limit for low speed devices
From:       Linux Kernel Mailing List <linux-kernel () vger ! kernel ! org>
Date:       2009-02-28 2:02:07
Message-ID: 200902280202.n1S227Q5014492 () hera ! kernel ! org
[Download RAW message or body]

Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=136733d6124a152ed2b61c3d38008c6581fc8685
Commit:     136733d6124a152ed2b61c3d38008c6581fc8685
Parent:     3ecdb9acf343bbcf2bb2c287dc524ab709cfad7e
Author:     Sergei Shtylyov <sshtylyov@ru.mvista.com>
AuthorDate: Sat Feb 21 15:31:35 2009 -0800
Committer:  Greg Kroah-Hartman <gregkh@suse.de>
CommitDate: Fri Feb 27 14:40:51 2009 -0800

    USB: musb: use right poll limit for low speed devices
    
    Remove wrongly applied upper limit on the interrupt transfer
    interval for low speed devices (not much of an error per se,
    according to USB specs).
    
    Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/usb/musb/musb_host.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 23d3890..6dbbd07 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -1863,19 +1863,21 @@ static int musb_urb_enqueue(
 	}
 	qh->type_reg = type_reg;
 
-	/* precompute rxinterval/txinterval register */
-	interval = min((u8)16, epd->bInterval);	/* log encoding */
+	/* Precompute RXINTERVAL/TXINTERVAL register */
 	switch (qh->type) {
 	case USB_ENDPOINT_XFER_INT:
-		/* fullspeed uses linear encoding */
-		if (USB_SPEED_FULL == urb->dev->speed) {
-			interval = epd->bInterval;
-			if (!interval)
-				interval = 1;
+		/*
+		 * Full/low speeds use the  linear encoding,
+		 * high speed uses the logarithmic encoding.
+		 */
+		if (urb->dev->speed <= USB_SPEED_FULL) {
+			interval = max_t(u8, epd->bInterval, 1);
+			break;
 		}
 		/* FALLTHROUGH */
 	case USB_ENDPOINT_XFER_ISOC:
-		/* iso always uses log encoding */
+		/* ISO always uses logarithmic encoding */
+		interval = min_t(u8, epd->bInterval, 16);
 		break;
 	default:
 		/* REVISIT we actually want to use NAK limits, hinting to the
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic