]> git.sur5r.net Git - u-boot/blobdiff - drivers/block/fsl_sata.c
mmc: Fix mmc_spi error on cmd->flags field
[u-boot] / drivers / block / fsl_sata.c
index b101bd76403176f30c3c562563aa7b9e7bb01b4d..fda3389e8bf69a1ad6a321f7d499384e3c7b81b7 100644 (file)
 #include <malloc.h>
 #include <libata.h>
 #include <fis.h>
+#include <sata.h>
 #include "fsl_sata.h"
 
-extern block_dev_desc_t sata_dev_desc[CONFIG_SYS_SATA_MAX_DEVICE];
-
 #ifndef CONFIG_SYS_SATA1_FLAGS
        #define CONFIG_SYS_SATA1_FLAGS  FLAGS_DMA
 #endif
@@ -50,13 +49,6 @@ static struct fsl_sata_info fsl_sata_info[] = {
 #endif
 };
 
-static inline void mdelay(unsigned long msec)
-{
-       unsigned long i;
-       for (i = 0; i < msec; i++)
-               udelay(1000);
-}
-
 static inline void sdelay(unsigned long sec)
 {
        unsigned long i;
@@ -204,27 +196,6 @@ int init_sata(int dev)
        /* Wait the controller offline */
        ata_wait_register(&reg->hstatus, HSTATUS_ONOFF, 0, 1000);
 
-#if defined(CONFIG_FSL_SATA_V2) && defined(CONFIG_FSL_SATA_ERRATUM_A001)
-       /*
-        * For P1022/1013 Rev1.0 silicon, after power on SATA host
-        * controller is configured in legacy mode instead of the
-        * expected enterprise mode. software needs to clear bit[28]
-        * of HControl register to change to enterprise mode from
-        * legacy mode.
-        */
-       {
-               u32 svr = get_svr();
-               if (IS_SVR_REV(svr, 1, 0) &&
-                   ((SVR_SOC_VER(svr) == SVR_P1022) ||
-                    (SVR_SOC_VER(svr) == SVR_P1022_E) ||
-                    (SVR_SOC_VER(svr) == SVR_P1013) ||
-                    (SVR_SOC_VER(svr) == SVR_P1013_E))) {
-                       out_le32(&reg->hstatus, 0x20000000);
-                       out_le32(&reg->hcontrol, 0x00000100);
-               }
-       }
-#endif
-
        /* Set the command header base address to CHBA register to tell DMA */
        out_le32(&reg->chba, (u32)cmd_hdr & ~0x3);
 
@@ -786,7 +757,8 @@ static int fsl_sata_get_flush_ext(int dev)
        return sata->flush_ext;
 }
 
-u32 ata_low_level_rw_lba48(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_write)
+u32 ata_low_level_rw_lba48(int dev, u32 blknr, lbaint_t blkcnt,
+               const void *buffer, int is_write)
 {
        u32 start, blks;
        u8 *addr;
@@ -820,7 +792,8 @@ u32 ata_low_level_rw_lba48(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_
        return blkcnt;
 }
 
-u32 ata_low_level_rw_lba28(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_write)
+u32 ata_low_level_rw_lba28(int dev, u32 blknr, u32 blkcnt, const void *buffer,
+               int is_write)
 {
        u32 start, blks;
        u8 *addr;
@@ -851,7 +824,7 @@ u32 ata_low_level_rw_lba28(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_
 /*
  * SATA interface between low level driver and command layer
  */
-ulong sata_read(int dev, u32 blknr, u32 blkcnt, void *buffer)
+ulong sata_read(int dev, ulong blknr, lbaint_t blkcnt, void *buffer)
 {
        u32 rc;
        fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv;
@@ -863,7 +836,7 @@ ulong sata_read(int dev, u32 blknr, u32 blkcnt, void *buffer)
        return rc;
 }
 
-ulong sata_write(int dev, u32 blknr, u32 blkcnt, void *buffer)
+ulong sata_write(int dev, ulong blknr, lbaint_t blkcnt, const void *buffer)
 {
        u32 rc;
        fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv;