Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0706efd61edfcf958c2c19669aa65c2180ec3ba0
Commit:     0706efd61edfcf958c2c19669aa65c2180ec3ba0
Parent:     dd05c199cd02ffd2ac49eb29677f1468910996a8
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Mon Nov 19 18:06:11 2007 +0900
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Fri Nov 23 19:23:55 2007 -0500

    pata_jmicron: fix disabled port handling in jmicron_pre_reset()
    
    There are two bugs in disabled port handling.
    
    * test in PORT_PATA0 is reversed
    * ->prereset should return -ENOENT for disabled ports not 0
    
    The first bug makes the PATA channel considered disabled but the
    second bug saves the day by returning 0.  The net result is that cable
    is always left at ATA_CBL_UNKNOWN.  This results in false 80c
    configuration and thus transfer errors.
    
    This patch fixes both bugs.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/ata/pata_jmicron.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/pata_jmicron.c b/drivers/ata/pata_jmicron.c
index 225a722..5b8174d 100644
--- a/drivers/ata/pata_jmicron.c
+++ b/drivers/ata/pata_jmicron.c
@@ -80,11 +80,10 @@ static int jmicron_pre_reset(struct ata_link *link, 
unsigned long deadline)
         *      actually do our cable checking etc. Thankfully we don't need
         *      to do the plumbing for other cases.
         */
-       switch (port_map[port])
-       {
+       switch (port_map[port]) {
        case PORT_PATA0:
-               if (control & (1 << 5))
-                       return 0;
+               if ((control & (1 << 5)) == 0)
+                       return -ENOENT;
                if (control & (1 << 3)) /* 40/80 pin primary */
                        ap->cbl = ATA_CBL_PATA40;
                else
@@ -93,7 +92,7 @@ static int jmicron_pre_reset(struct ata_link *link, unsigned 
long deadline)
        case PORT_PATA1:
                /* Bit 21 is set if the port is enabled */
                if ((control5 & (1 << 21)) == 0)
-                       return 0;
+                       return -ENOENT;
                if (control5 & (1 << 19))       /* 40/80 pin secondary */
                        ap->cbl = ATA_CBL_PATA40;
                else
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to