]> 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 7436c4d08bc3617fae65a638afe039733534c82b..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;
        }
 
@@ -600,7 +608,7 @@ static u32 fsl_sata_rw_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_wr
 
        cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;
        cfis->pm_port_c = 0x80; /* is command */
-       cfis->command = (is_write) ? ATA_CMD_WRITE_DMA : ATA_CMD_READ_DMA;
+       cfis->command = (is_write) ? ATA_CMD_WRITE : ATA_CMD_READ;
        cfis->device = ATA_LBA;
 
        cfis->device |= (block >> 24) & 0xf;
@@ -625,7 +633,7 @@ void fsl_sata_flush_cache(int dev)
 
        cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;
        cfis->pm_port_c = 0x80; /* is command */
-       cfis->command = ATA_CMD_FLUSH_CACHE;
+       cfis->command = ATA_CMD_FLUSH;
 
        fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, NULL, 0);
 }
@@ -645,8 +653,8 @@ static u32 fsl_sata_rw_cmd_ext(int dev, u32 start, u32 blkcnt, u8 *buffer, int i
        cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;
        cfis->pm_port_c = 0x80; /* is command */
 
-       cfis->command = (is_write) ? ATA_CMD_WRITE_DMA_EXT
-                                : ATA_CMD_READ_DMA_EXT;
+       cfis->command = (is_write) ? ATA_CMD_WRITE_EXT
+                                : ATA_CMD_READ_EXT;
 
        cfis->lba_high_exp = (block >> 40) & 0xff;
        cfis->lba_mid_exp = (block >> 32) & 0xff;
@@ -683,8 +691,8 @@ u32 fsl_sata_rw_ncq_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write
        cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;
        cfis->pm_port_c = 0x80; /* is command */
 
-       cfis->command = (is_write) ? ATA_CMD_WRITE_FPDMA_QUEUED
-                                : ATA_CMD_READ_FPDMA_QUEUED;
+       cfis->command = (is_write) ? ATA_CMD_FPDMA_WRITE
+                                : ATA_CMD_FPDMA_READ;
 
        cfis->lba_high_exp = (block >> 40) & 0xff;
        cfis->lba_mid_exp = (block >> 32) & 0xff;
@@ -719,7 +727,7 @@ void fsl_sata_flush_cache_ext(int dev)
 
        cfis->fis_type = SATA_FIS_TYPE_REGISTER_H2D;
        cfis->pm_port_c = 0x80; /* is command */
-       cfis->command = ATA_CMD_FLUSH_CACHE_EXT;
+       cfis->command = ATA_CMD_FLUSH_EXT;
 
        fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, NULL, 0);
 }