|
@@ -248,6 +248,10 @@ int init_sata(int dev)
|
|
else
|
|
else
|
|
printf(" %s ", sata->name);
|
|
printf(" %s ", sata->name);
|
|
|
|
|
|
|
|
+ /* Wait PHY RDY signal changed for 500ms */
|
|
|
|
+ ata_wait_register(®->hstatus, HSTATUS_PHY_RDY,
|
|
|
|
+ HSTATUS_PHY_RDY, 500);
|
|
|
|
+
|
|
/* Check PHYRDY */
|
|
/* Check PHYRDY */
|
|
val32 = in_le32(®->hstatus);
|
|
val32 = in_le32(®->hstatus);
|
|
if (val32 & HSTATUS_PHY_RDY) {
|
|
if (val32 & HSTATUS_PHY_RDY) {
|
|
@@ -258,6 +262,10 @@ int init_sata(int dev)
|
|
return -1;
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* Wait for signature updated, which is 1st D2H */
|
|
|
|
+ ata_wait_register(®->hstatus, HSTATUS_SIGNATURE,
|
|
|
|
+ HSTATUS_SIGNATURE, 10000);
|
|
|
|
+
|
|
if (val32 & HSTATUS_SIGNATURE) {
|
|
if (val32 & HSTATUS_SIGNATURE) {
|
|
sig = in_le32(®->sig);
|
|
sig = in_le32(®->sig);
|
|
debug("Signature updated, the sig =%08x\n\r", sig);
|
|
debug("Signature updated, the sig =%08x\n\r", sig);
|