]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
mvsata: fix ide_preinit for missing disks
authorSimon Guinot <simon.guinot@sequanux.org>
Mon, 21 Nov 2011 13:55:46 +0000 (19:25 +0530)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Tue, 6 Dec 2011 22:59:30 +0000 (23:59 +0100)
Consider that ide_preinit() succeed if at least one port is successfully
initialized. This allows to iniatialize IDE support on a board with two
SATA ports but a single hard disk available.

Signed-off-by: Simon Guinot <simon.guinot@sequanux.org>
drivers/block/mvsata_ide.c

index 1be395fb45baf5d85e44fb434e574fde4c931e31..a88d0f7f83995dd3465f8becf20869d6aa8051a4 100644 (file)
@@ -150,23 +150,25 @@ static int mvsata_ide_initialize_port(struct mvsata_port_registers *port)
 
 int ide_preinit(void)
 {
+       int ret = MVSATA_STATUS_TIMEOUT;
        int status;
+
        /* Enable ATA port 0 (could be SATA port 0 or 1) if declared */
 #if defined(CONFIG_SYS_ATA_IDE0_OFFSET)
        status = mvsata_ide_initialize_port(
                (struct mvsata_port_registers *)
                (CONFIG_SYS_ATA_BASE_ADDR + CONFIG_SYS_ATA_IDE0_OFFSET));
-       if (status)
-               return status;
+       if (status == MVSATA_STATUS_OK)
+               ret = MVSATA_STATUS_OK;
 #endif
        /* Enable ATA port 1 (could be SATA port 0 or 1) if declared */
 #if defined(CONFIG_SYS_ATA_IDE1_OFFSET)
        status = mvsata_ide_initialize_port(
                (struct mvsata_port_registers *)
                (CONFIG_SYS_ATA_BASE_ADDR + CONFIG_SYS_ATA_IDE1_OFFSET));
-       if (status)
-               return status;
+       if (status == MVSATA_STATUS_OK)
+               ret = MVSATA_STATUS_OK;
 #endif
-       /* return success if all ports initializations succeeded */
-       return MVSATA_STATUS_OK;
+       /* Return success if at least one port initialization succeeded */
+       return ret;
 }