On Mon, 5 Feb 2007 16:47:13 +0900
Tejun Heo <[EMAIL PROTECTED]> wrote:

> The 80c wire bit is bit 13, not 14.  This increases the chance of
> incorrect wire detection especially because host side cable detection
> is often unreliable and we sometimes soley depend on drive side cable
> detection.  Fix it.
> 
> Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
> ---
> Please consider for -stable.
> 
>  drivers/ide/ide-iops.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Index: work/drivers/ide/ide-iops.c
> ===================================================================
> --- work.orig/drivers/ide/ide-iops.c
> +++ work/drivers/ide/ide-iops.c
> @@ -604,7 +604,7 @@ u8 eighty_ninty_three (ide_drive_t *driv
>       if (!(drive->id->hw_config & 0x6000))
>               return 0;
>  #ifndef CONFIG_IDEDMA_IVB
> -     if(!(drive->id->hw_config & 0x4000))
> +     if (!(drive->id->hw_config & 0x2000))
>               return 0;
>  #endif /* CONFIG_IDEDMA_IVB */

NAK

While the old code is a mess, your changes don't fix it. The code above
is correct before you touch it as far as I can tell. Incomplete but
correct as far as it went.

The logic in the function as far as it goes is correct

If neither valid bit nor 80pin bit set -> 40pin         [00]
If checking valid bit && valid bit clear -> 40pin       [0x]

The 0x2000 test is needed as an additional test (as per the
ide_ata66_check function directly below)                [10] v [11]

Without this an id value of 0x2000 will trigger 80pin but is not valid.

(the IDEDMA_IVB check is more relaxted to handle some confused ATA4
drives, and is probably something we don't want in libata anyway, or
should blacklist the afflicted for this)

Alan
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to