aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-xfer-mode.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-06-15 12:52:54 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2009-06-15 12:52:54 -0400
commit5880b5de7101cc123778c5d17d4f3986351f3122 (patch)
tree30deb7cee9dd1efadb2a2b27c6b5d38a0c055fd6 /drivers/ide/ide-xfer-mode.c
parentc9ef59ff01b6bd1c7360a64fcc8556a1193c2ed0 (diff)
ide: don't enable IORDY at a probe time
* Add 'unsigned long port_flags' field to ide_hwif_t. * Add IDE_PFLAG_PROBING port flag and keep it set during probing. * Fix ide_pio_need_iordy() to not enable IORDY at a probe time (IORDY may lead to controller lock up on certain controllers if the port is not occupied). Loosely based on the recent libata's fix by Tejun, thanks to Alan for the hint that IDE may also need it. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-xfer-mode.c')
-rw-r--r--drivers/ide/ide-xfer-mode.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/ide/ide-xfer-mode.c b/drivers/ide/ide-xfer-mode.c
index 0b47ca139079..46d203ce60cc 100644
--- a/drivers/ide/ide-xfer-mode.c
+++ b/drivers/ide/ide-xfer-mode.c
@@ -109,6 +109,12 @@ EXPORT_SYMBOL_GPL(ide_get_best_pio_mode);
109 109
110int ide_pio_need_iordy(ide_drive_t *drive, const u8 pio) 110int ide_pio_need_iordy(ide_drive_t *drive, const u8 pio)
111{ 111{
112 /*
113 * IORDY may lead to controller lock up on certain controllers
114 * if the port is not occupied.
115 */
116 if (pio == 0 && (drive->hwif->port_flags & IDE_PFLAG_PROBING))
117 return 0;
112 return ata_id_pio_need_iordy(drive->id, pio); 118 return ata_id_pio_need_iordy(drive->id, pio);
113} 119}
114EXPORT_SYMBOL_GPL(ide_pio_need_iordy); 120EXPORT_SYMBOL_GPL(ide_pio_need_iordy);