[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(®->hstatus, HSTATUS_PHY_RDY,
+			  HSTATUS_PHY_RDY, 500);
+
 	/* Check PHYRDY */
 	val32 = in_le32(®->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(®->hstatus, HSTATUS_SIGNATURE,
+			  HSTATUS_SIGNATURE, 10000);
+
 	if (val32 & HSTATUS_SIGNATURE) {
 		sig = in_le32(®->sig);
 		debug("Signature updated, the sig =%08x\n\r", sig);
-- 
1.5.4
    
    
More information about the U-Boot
mailing list