]> git.sur5r.net Git - u-boot/blobdiff - drivers/block/fsl_sata.c
Merge branch 'master' of git://git.denx.de/u-boot-ppc4xx
[u-boot] / drivers / block / fsl_sata.c
index d14f5bc6bf8e5de12f78cbe38df1159147d37e7d..55f593a4915def5d66469a2adc013f76b06a6133 100644 (file)
@@ -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);
@@ -502,7 +510,7 @@ static int fsl_sata_exec_cmd(struct fsl_sata *sata, struct cfis *cfis,
        int rc;
 
        if (tag > SATA_HC_MAX_CMD || tag < 0) {
-               printf("tag is out of range, tag=\n\r", tag);
+               printf("tag is out of range, tag=%d\n\r", tag);
                return -1;
        }