From 9d9e283790102f760676b3b949561e6deb5213d2 Mon Sep 17 00:00:00 2001
From: wdenk <wdenk>
Date: Tue, 11 May 2004 21:53:55 +0000
Subject: [PATCH] Add some limited support for low-speed devices to SL811 USB
 controller (at least "usb reset" now passes successfully and "usb info"
 displays correct information)

---
 CHANGELOG           | 4 ++++
 drivers/sl811_usb.c | 5 +++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 0ddcc612dd..5e9c5e508d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,10 @@
 Changes since U-Boot 1.1.1:
 ======================================================================
 
+* Add some limited support for low-speed devices to SL811 USB controller
+  (at least "usb reset" now passes successfully and "usb info" displays
+  correct information)
+
 * Change init sequence for multiple network interfaces: initialize
   on-chip interfaces before external cards.
 
diff --git a/drivers/sl811_usb.c b/drivers/sl811_usb.c
index 5136cdc68d..61604e55cc 100644
--- a/drivers/sl811_usb.c
+++ b/drivers/sl811_usb.c
@@ -228,7 +228,7 @@ int usb_lowlevel_stop(void)
 
 static int calc_needed_buswidth(int bytes, int low_speed)
 {
-	return bytes * 8 + 512;
+	return low_speed ? 0 : bytes * 8 + 512;
 }
 
 static int sl811_send_packet(int dir_to_host, int data1, __u8 *buffer, int len)
@@ -253,7 +253,8 @@ static int sl811_send_packet(int dir_to_host, int data1, __u8 *buffer, int len)
 		if (!dir_to_host && len)
 			sl811_write_buf(0x10, buffer, len);
 
-		if (sl811_read(SL811_SOFCNTDIV)*64 < calc_needed_buswidth(len, 0))
+		if (sl811_read(SL811_SOFCNTDIV)*64 < 
+		    calc_needed_buswidth(len, rh_status.wPortStatus & USB_PORT_STAT_LOW_SPEED))
 			ctrl |= SL811_USB_CTRL_SOF;
 		else
 			ctrl &= ~SL811_USB_CTRL_SOF;
-- 
GitLab