aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy/qd65xx.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-04-26 17:36:42 +0200
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-04-26 17:36:42 +0200
commitd07616f19336b514eef06e6a361988c4073e6ecb (patch)
tree0c5c57185532b45bc6de5e3590beb9c2d94869d3 /drivers/ide/legacy/qd65xx.c
parentide-cd: put proc-related functions together under single ifdef (diff)
downloadlinux-dev-d07616f19336b514eef06e6a361988c4073e6ecb.tar.xz
linux-dev-d07616f19336b514eef06e6a361988c4073e6ecb.zip
qd65xx: always use ->selectproc method
qd_select() checks itself whether timings should be reprogrammed so remove superfluous qd_timing_ok() and always use ->selectproc method (rename qd_select() to qd65xx_select() while at it). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy/qd65xx.c')
-rw-r--r--drivers/ide/legacy/qd65xx.c37
1 files changed, 10 insertions, 27 deletions
diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c
index b693a5f21a42..ad4ec2c42a5a 100644
--- a/drivers/ide/legacy/qd65xx.c
+++ b/drivers/ide/legacy/qd65xx.c
@@ -88,12 +88,12 @@
static int timings[4]={-1,-1,-1,-1}; /* stores current timing for each timer */
/*
- * qd_select:
+ * qd65xx_select:
*
- * This routine is invoked from ide.c to prepare for access to a given drive.
+ * This routine is invoked to prepare for access to a given drive.
*/
-static void qd_select (ide_drive_t *drive)
+static void qd65xx_select(ide_drive_t *drive)
{
u8 index = (( (QD_TIMREG(drive)) & 0x80 ) >> 7) |
(QD_TIMREG(drive) & 0x02);
@@ -168,36 +168,15 @@ static int qd_find_disk_type (ide_drive_t *drive,
}
/*
- * qd_timing_ok:
- *
- * check whether timings don't conflict
- */
-
-static int qd_timing_ok (ide_drive_t drives[])
-{
- return (IDE_IMPLY(drives[0].present && drives[1].present,
- IDE_IMPLY(QD_TIMREG(drives) == QD_TIMREG(drives+1),
- QD_TIMING(drives) == QD_TIMING(drives+1))));
- /* if same timing register, must be same timing */
-}
-
-/*
* qd_set_timing:
*
- * records the timing, and enables selectproc as needed
+ * records the timing
*/
static void qd_set_timing (ide_drive_t *drive, u8 timing)
{
- ide_hwif_t *hwif = HWIF(drive);
-
drive->drive_data &= 0xff00;
drive->drive_data |= timing;
- if (qd_timing_ok(hwif->drives)) {
- qd_select(drive); /* selects once */
- hwif->selectproc = NULL;
- } else
- hwif->selectproc = &qd_select;
printk(KERN_DEBUG "%s: %#x\n", drive->name, timing);
}
@@ -400,7 +379,8 @@ static int __init qd_probe(int base)
qd_setup(hwif, base, config);
hwif->port_init_devs = qd6500_port_init_devs;
- hwif->set_pio_mode = &qd6500_set_pio_mode;
+ hwif->set_pio_mode = qd6500_set_pio_mode;
+ hwif->selectproc = qd65xx_select;
idx[unit] = hwif->index;
@@ -441,7 +421,8 @@ static int __init qd_probe(int base)
qd_setup(hwif, base, config | (control << 8));
hwif->port_init_devs = qd6580_port_init_devs;
- hwif->set_pio_mode = &qd6580_set_pio_mode;
+ hwif->set_pio_mode = qd6580_set_pio_mode;
+ hwif->selectproc = qd65xx_select;
idx[unit] = hwif->index;
@@ -460,6 +441,7 @@ static int __init qd_probe(int base)
qd_setup(hwif, base, config | (control << 8));
hwif->port_init_devs = qd6580_port_init_devs;
hwif->set_pio_mode = qd6580_set_pio_mode;
+ hwif->selectproc = qd65xx_select;
idx[0] = hwif->index;
}
@@ -469,6 +451,7 @@ static int __init qd_probe(int base)
qd_setup(mate, base, config | (control << 8));
mate->port_init_devs = qd6580_port_init_devs;
mate->set_pio_mode = qd6580_set_pio_mode;
+ mate->selectproc = qd65xx_select;
idx[1] = mate->index;
}