mvsata: fix ide_preinit for missing disks

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>
This commit is contained in:
Simon Guinot 2011-11-21 19:25:46 +05:30 committed by Albert ARIBAUD
parent 0bfb66b6d1
commit 2cb4fade0e
1 changed files with 8 additions and 6 deletions

View 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;
}