From: Bartlomiej Zolnierkiewicz Date: Sat, 26 Apr 2008 15:36:35 +0000 (+0200) Subject: qd65xx: return error value in qd_probe() X-Git-Tag: v2.6.26-rc1~1044^2~44 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=7daf66dd142b1978bf8670d9d959d835de37476f;p=linux-2.6-omap-h63xx.git qd65xx: return error value in qd_probe() Return error value in qd_probe() and use it in qd65xx_init() instead of checking ide_hwifs[].chipset. Acked-by: Sergei Shtylyov Signed-off-by: Bartlomiej Zolnierkiewicz --- diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c index 7016bdf4fcc..5c92fb6d81a 100644 --- a/drivers/ide/legacy/qd65xx.c +++ b/drivers/ide/legacy/qd65xx.c @@ -359,7 +359,7 @@ static int __init qd_probe(int base) config = inb(QD_CONFIG_PORT); if (! ((config & QD_CONFIG_BASEPORT) >> 1 == (base == 0xb0)) ) - return 1; + return -ENODEV; unit = ! (config & QD_CONFIG_IDE_BASEPORT); @@ -373,7 +373,8 @@ static int __init qd_probe(int base) if ((config & 0xf0) == QD_CONFIG_QD6500) { - if (qd_testreg(base)) return 1; /* bad register */ + if (qd_testreg(base)) + return -ENODEV; /* bad register */ /* qd6500 found */ @@ -384,7 +385,7 @@ static int __init qd_probe(int base) if (config & QD_CONFIG_DISABLED) { printk(KERN_WARNING "qd6500 is disabled !\n"); - return 1; + return -ENODEV; } ide_init_port_hw(hwif, &hw[unit]); @@ -406,8 +407,8 @@ static int __init qd_probe(int base) u8 control; - if (qd_testreg(base) || qd_testreg(base+0x02)) return 1; - /* bad registers */ + if (qd_testreg(base) || qd_testreg(base + 0x02)) + return -ENODEV; /* bad registers */ /* qd6580 found */ @@ -469,7 +470,7 @@ static int __init qd_probe(int base) } } /* no qd65xx found */ - return 1; + return -ENODEV; } int probe_qd65xx = 0; @@ -479,14 +480,18 @@ MODULE_PARM_DESC(probe, "probe for QD65xx chipsets"); static int __init qd65xx_init(void) { + int rc1, rc2 = -ENODEV; + if (probe_qd65xx == 0) return -ENODEV; - if (qd_probe(0x30)) - qd_probe(0xb0); - if (ide_hwifs[0].chipset != ide_qd65xx && - ide_hwifs[1].chipset != ide_qd65xx) + rc1 = qd_probe(0x30); + if (rc1) + rc2 = qd_probe(0xb0); + + if (rc1 < 0 && rc2 < 0) return -ENODEV; + return 0; }