X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fblock%2Ffsl_sata.c;h=55f593a4915def5d66469a2adc013f76b06a6133;hb=20a71d93d62add9c5330a0b9895a497995ffaec7;hp=d14f5bc6bf8e5de12f78cbe38df1159147d37e7d;hpb=24b448448a917e52806f82660a5c9d47608894fb;p=u-boot diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c index d14f5bc6bf..55f593a491 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); @@ -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; }