|
@@ -634,7 +634,33 @@ static void hwif_register (ide_hwif_t *hwif)
|
|
|
__FUNCTION__, ret);
|
|
|
}
|
|
|
|
|
|
-static int wait_hwif_ready(ide_hwif_t *hwif)
|
|
|
+/**
|
|
|
+ * ide_port_wait_ready - wait for port to become ready
|
|
|
+ * @hwif: IDE port
|
|
|
+ *
|
|
|
+ * This is needed on some PPCs and a bunch of BIOS-less embedded
|
|
|
+ * platforms. Typical cases are:
|
|
|
+ *
|
|
|
+ * - The firmware hard reset the disk before booting the kernel,
|
|
|
+ * the drive is still doing it's poweron-reset sequence, that
|
|
|
+ * can take up to 30 seconds.
|
|
|
+ *
|
|
|
+ * - The firmware does nothing (or no firmware), the device is
|
|
|
+ * still in POST state (same as above actually).
|
|
|
+ *
|
|
|
+ * - Some CD/DVD/Writer combo drives tend to drive the bus during
|
|
|
+ * their reset sequence even when they are non-selected slave
|
|
|
+ * devices, thus preventing discovery of the main HD.
|
|
|
+ *
|
|
|
+ * Doing this wait-for-non-busy should not harm any existing
|
|
|
+ * configuration and fix some issues like the above.
|
|
|
+ *
|
|
|
+ * BenH.
|
|
|
+ *
|
|
|
+ * Returns 0 on success, error code (< 0) otherwise.
|
|
|
+ */
|
|
|
+
|
|
|
+static int ide_port_wait_ready(ide_hwif_t *hwif)
|
|
|
{
|
|
|
int unit, rc;
|
|
|
|
|
@@ -742,26 +768,7 @@ static void probe_hwif(ide_hwif_t *hwif)
|
|
|
|
|
|
local_irq_set(flags);
|
|
|
|
|
|
- /* This is needed on some PPCs and a bunch of BIOS-less embedded
|
|
|
- * platforms. Typical cases are:
|
|
|
- *
|
|
|
- * - The firmware hard reset the disk before booting the kernel,
|
|
|
- * the drive is still doing it's poweron-reset sequence, that
|
|
|
- * can take up to 30 seconds
|
|
|
- * - The firmware does nothing (or no firmware), the device is
|
|
|
- * still in POST state (same as above actually).
|
|
|
- * - Some CD/DVD/Writer combo drives tend to drive the bus during
|
|
|
- * their reset sequence even when they are non-selected slave
|
|
|
- * devices, thus preventing discovery of the main HD
|
|
|
- *
|
|
|
- * Doing this wait-for-busy should not harm any existing configuration
|
|
|
- * (at least things won't be worse than what current code does, that
|
|
|
- * is blindly go & talk to the drive) and fix some issues like the
|
|
|
- * above.
|
|
|
- *
|
|
|
- * BenH.
|
|
|
- */
|
|
|
- if (wait_hwif_ready(hwif) == -EBUSY)
|
|
|
+ if (ide_port_wait_ready(hwif) == -EBUSY)
|
|
|
printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name);
|
|
|
|
|
|
/*
|