blob: f827eae10ff6a6175719c4cdce3cf7fcab1230ce [file] [log] [blame]
From stable-bounces@linux.kernel.org Sun Sep 10 08:47:01 2006
From: Michael-Luke Jones <mlj28@cam.ac.uk>
To: stable@kernel.org
Message-Id: <86EA9E48-1F4C-4ED8-B5AD-D07F8210CE73@cam.ac.uk>
Date: Sun, 10 Sep 2006 16:46:35 +0100
Subject: Backport: Old IDE, fix SATA detection for cabling
From: Michael-Luke Jones <mlj28@cam.ac.uk>
This patch is identical to that introduced in
1a1276e7b6cba549553285f74e87f702bfff6fac to the Linus' 2.6 development tree
by Alan Cox.
'This is based on the proposed patches flying around but also checks that
the device in question is new enough to have word 93 rather thanb blindly
assuming word 93 == 0 means SATA (see ATA-5, ATA-7)' -- Alan Cox
Required for my SATA drive on an Asus Pundit-R to operate above 33MBps.
Signed-off-by: Michael-Luke Jones <mlj28@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/ide/ide-iops.c | 4 ++++
1 file changed, 4 insertions(+)
--- linux-2.6.17.13.orig/drivers/ide/ide-iops.c
+++ linux-2.6.17.13/drivers/ide/ide-iops.c
@@ -597,6 +597,10 @@ u8 eighty_ninty_three (ide_drive_t *driv
{
if(HWIF(drive)->udma_four == 0)
return 0;
+
+ /* Check for SATA but only if we are ATA5 or higher */
+ if (drive->id->hw_config == 0 && (drive->id->major_rev_num & 0x7FE0))
+ return 1;
if (!(drive->id->hw_config & 0x6000))
return 0;
#ifndef CONFIG_IDEDMA_IVB