From 17f0f63b1c8393b2566d767ada6d6837546dfaed Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Sat, 26 Jan 2008 20:13:03 +0100 Subject: [PATCH] --- yaml --- r: 77245 b: refs/heads/master c: 795d74b51a853e1f5f2c81baf6666836a3866f08 h: refs/heads/master i: 77243: b51869eae86b42e5a2a20dd3e48650f3bf0bb3db v: v3 --- [refs] | 2 +- trunk/drivers/ide/ide.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 3b735a19868d..5fe87c6703ce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f01393e48c44e30f7c9a36c8b98a07b0232580fe +refs/heads/master: 795d74b51a853e1f5f2c81baf6666836a3866f08 diff --git a/trunk/drivers/ide/ide.c b/trunk/drivers/ide/ide.c index 0d7328e0fb96..8ef521f66f87 100644 --- a/trunk/drivers/ide/ide.c +++ b/trunk/drivers/ide/ide.c @@ -694,6 +694,15 @@ int ide_register_hw(hw_regs_t *hw, void (*quirkproc)(ide_drive_t *), int index, retry = 1; ide_hwif_t *hwif; + if (initializing) { + hwif = ide_find_port(hw->io_ports[IDE_DATA_OFFSET]); + if (hwif) { + index = hwif->index; + goto found; + } + return -1; + } + do { for (index = 0; index < MAX_HWIFS; ++index) { hwif = &ide_hwifs[index]; @@ -704,8 +713,7 @@ int ide_register_hw(hw_regs_t *hw, void (*quirkproc)(ide_drive_t *), hwif = &ide_hwifs[index]; if (hwif->hold) continue; - if ((!hwif->present && !hwif->mate && !initializing) || - (!hwif->io_ports[IDE_DATA_OFFSET] && initializing)) + if (!hwif->present && hwif->mate == NULL) goto found; } for (index = 0; index < MAX_HWIFS; index++)