[U-Boot-Users] [PATCH] ata: fix the bug of signature updated

Dave Liu r63238 at freescale.com
Tue Jun 3 11:38:19 CEST 2008


The driver need wait for the device updating signature
to host. if we don't wait for it, the driver can not detect
the device(disk) when the system power up.

Signed-off-by: Dave Liu <daveliu at freescale.com>
---
 drivers/block/fsl_sata.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c
index d14f5bc..d441a30 100644
--- a/drivers/block/fsl_sata.c
+++ b/drivers/block/fsl_sata.c
@@ -248,6 +248,10 @@ int init_sata(int dev)
 	else
 		printf("       %s ", sata->name);
 
+	/* Wait PHY RDY signal changed for 500ms */
+	ata_wait_register(&reg->hstatus, HSTATUS_PHY_RDY,
+			  HSTATUS_PHY_RDY, 500);
+
 	/* Check PHYRDY */
 	val32 = in_le32(&reg->hstatus);
 	if (val32 & HSTATUS_PHY_RDY) {
@@ -258,6 +262,10 @@ int init_sata(int dev)
 		return -1;
 	}
 
+	/* Wait for signature updated, which is 1st D2H */
+	ata_wait_register(&reg->hstatus, HSTATUS_SIGNATURE,
+			  HSTATUS_SIGNATURE, 10000);
+
 	if (val32 & HSTATUS_SIGNATURE) {
 		sig = in_le32(&reg->sig);
 		debug("Signature updated, the sig =%08x\n\r", sig);
-- 
1.5.4







More information about the U-Boot mailing list