]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/mmc.c
mmc: dcache: allocate cache aligned buffer for scr and switch_status
[u-boot] / drivers / mmc / mmc.c
index cbd75673b8b501b23bcea85c79253a7f737868f3..ba6fbfe7ac2d1156b6d39040f7a012b9b2cbab9c 100644 (file)
@@ -115,7 +115,8 @@ int mmc_send_status(struct mmc *mmc, int timeout)
 
        cmd.cmdidx = MMC_CMD_SEND_STATUS;
        cmd.resp_type = MMC_RSP_R1;
-       cmd.cmdarg = 0;
+       if (!mmc_host_is_spi(mmc))
+               cmd.cmdarg = mmc->rca << 16;
        cmd.flags = 0;
 
        do {
@@ -701,8 +702,8 @@ int sd_change_freq(struct mmc *mmc)
 {
        int err;
        struct mmc_cmd cmd;
-       uint scr[2];
-       uint switch_status[16];
+       ALLOC_CACHE_ALIGN_BUFFER(uint, scr, 2);
+       ALLOC_CACHE_ALIGN_BUFFER(uint, switch_status, 16);
        struct mmc_data data;
        int timeout;
 
@@ -730,7 +731,7 @@ int sd_change_freq(struct mmc *mmc)
        timeout = 3;
 
 retry_scr:
-       data.dest = (char *)&scr;
+       data.dest = (char *)scr;
        data.blocksize = 8;
        data.blocks = 1;
        data.flags = MMC_DATA_READ;
@@ -772,7 +773,7 @@ retry_scr:
        timeout = 4;
        while (timeout--) {
                err = sd_switch(mmc, SD_SWITCH_CHECK, 0, 1,
-                               (u8 *)&switch_status);
+                               (u8 *)switch_status);
 
                if (err)
                        return err;
@@ -786,7 +787,7 @@ retry_scr:
        if (!(__be32_to_cpu(switch_status[3]) & SD_HIGHSPEED_SUPPORTED))
                return 0;
 
-       err = sd_switch(mmc, SD_SWITCH_SWITCH, 0, 1, (u8 *)&switch_status);
+       err = sd_switch(mmc, SD_SWITCH_SWITCH, 0, 1, (u8 *)switch_status);
 
        if (err)
                return err;
@@ -1167,12 +1168,14 @@ int mmc_register(struct mmc *mmc)
        return 0;
 }
 
+#ifdef CONFIG_PARTITIONS
 block_dev_desc_t *mmc_get_dev(int dev)
 {
        struct mmc *mmc = find_mmc_device(dev);
 
        return mmc ? &mmc->block_dev : NULL;
 }
+#endif
 
 int mmc_init(struct mmc *mmc)
 {