From e367fdbcada7970c1e85f480c055da89b58c1194 Mon Sep 17 00:00:00 2001 From: Dinh Nguyen Date: Wed, 16 Dec 2009 11:51:01 +0800 Subject: [PATCH] Ubuntu: SAUCE: Workaround for SATA drive failure on Ubuntu installation BugLink: http://bugs.launchpad.net/bugs/431963 Original patch was from Dinh Nguyen. That one find the root cause of this SATA drive failure issue. The USB2SATA chip GL830 can not accept the ATA PASS THROUGH command. This patch will skip the ATA PASS THROUGH command only for GL830 USB device. So it will not effect other USB devices. Signed-off-by: Dinh Nguyen Signed-off-by: Bryan Wu --- drivers/usb/storage/usb.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c index 8060b85..d538511 100644 --- a/drivers/usb/storage/usb.c +++ b/drivers/usb/storage/usb.c @@ -329,8 +329,21 @@ static int usb_stor_control_thread(void * __us) /* we've got a command, let's do it! */ else { - US_DEBUG(usb_stor_show_command(us->srb)); - us->proto_handler(us->srb, us); +#ifdef CONFIG_MACH_MX51_BABBAGE + u16 vid = + le16_to_cpu(us->pusb_dev->descriptor.idVendor); + u16 pid = + le16_to_cpu(us->pusb_dev->descriptor.idProduct); +#endif + US_DEBUGP(usb_stor_show_command(us->srb)); +#ifdef CONFIG_MACH_MX51_BABBAGE + if ((us->srb->cmnd[0] == 0x85) && + (vid == 0x05e3) && + (pid == 0x0718)) + US_DEBUGP("Skip ATA PASS-THROUGH command\n"); + else +#endif + us->proto_handler(us->srb, us); } /* lock access to the state */ -- 1.6.3.3