]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/mmc.c
ppc4xx: Set default PCI device ID for 405EP boards
[u-boot] / drivers / mmc / mmc.c
index 1c89e314270fb2bfef98d824f34854259013676d..8c736ce4974357649d79050d68cede82c954da61 100644 (file)
@@ -292,7 +292,7 @@ sd_send_op_cond(struct mmc *mmc)
        if (mmc->version != SD_VERSION_2)
                mmc->version = SD_VERSION_1_0;
 
-       mmc->ocr = ((uint *)(cmd.response))[0];
+       mmc->ocr = cmd.response[0];
 
        mmc->high_capacity = ((mmc->ocr & OCR_HCS) == OCR_HCS);
        mmc->rca = 0;
@@ -327,7 +327,7 @@ int mmc_send_op_cond(struct mmc *mmc)
                return UNUSABLE_ERR;
 
        mmc->version = MMC_VERSION_UNKNOWN;
-       mmc->ocr = ((uint *)(cmd.response))[0];
+       mmc->ocr = cmd.response[0];
 
        mmc->high_capacity = ((mmc->ocr & OCR_HCS) == OCR_HCS);
        mmc->rca = 0;
@@ -487,8 +487,8 @@ retry_scr:
                return err;
        }
 
-       mmc->scr[0] = scr[0];
-       mmc->scr[1] = scr[1];
+       mmc->scr[0] = __be32_to_cpu(scr[0]);
+       mmc->scr[1] = __be32_to_cpu(scr[1]);
 
        switch ((mmc->scr[0] >> 24) & 0xf) {
                case 0:
@@ -518,7 +518,7 @@ retry_scr:
                        return err;
 
                /* The high-speed function is busy.  Try again */
-               if (!switch_status[7] & SD_HIGHSPEED_BUSY)
+               if (!(__be32_to_cpu(switch_status[7]) & SD_HIGHSPEED_BUSY))
                        break;
        }
 
@@ -526,7 +526,7 @@ retry_scr:
                mmc->card_caps |= MMC_MODE_4BIT;
 
        /* If high-speed isn't supported, we return */
-       if (!(switch_status[3] & SD_HIGHSPEED_SUPPORTED))
+       if (!(__be32_to_cpu(switch_status[3]) & SD_HIGHSPEED_SUPPORTED))
                return 0;
 
        err = sd_switch(mmc, SD_SWITCH_SWITCH, 0, 1, (u8 *)&switch_status);
@@ -534,7 +534,7 @@ retry_scr:
        if (err)
                return err;
 
-       if ((switch_status[4] & 0x0f000000) == 0x01000000)
+       if ((__be32_to_cpu(switch_status[4]) & 0x0f000000) == 0x01000000)
                mmc->card_caps |= MMC_MODE_HS;
 
        return 0;
@@ -632,7 +632,7 @@ int mmc_startup(struct mmc *mmc)
                return err;
 
        if (IS_SD(mmc))
-               mmc->rca = (((uint *)(cmd.response))[0] >> 16) & 0xffff;
+               mmc->rca = (cmd.response[0] >> 16) & 0xffff;
 
        /* Get the Card-Specific Data */
        cmd.cmdidx = MMC_CMD_SEND_CSD;
@@ -645,10 +645,10 @@ int mmc_startup(struct mmc *mmc)
        if (err)
                return err;
 
-       mmc->csd[0] = ((uint *)(cmd.response))[0];
-       mmc->csd[1] = ((uint *)(cmd.response))[1];
-       mmc->csd[2] = ((uint *)(cmd.response))[2];
-       mmc->csd[3] = ((uint *)(cmd.response))[3];
+       mmc->csd[0] = cmd.response[0];
+       mmc->csd[1] = cmd.response[1];
+       mmc->csd[2] = cmd.response[2];
+       mmc->csd[3] = cmd.response[3];
 
        if (mmc->version == MMC_VERSION_UNKNOWN) {
                int version = (cmd.response[0] >> 26) & 0xf;
@@ -681,12 +681,12 @@ int mmc_startup(struct mmc *mmc)
 
        mmc->tran_speed = freq * mult;
 
-       mmc->read_bl_len = 1 << ((((uint *)(cmd.response))[1] >> 16) & 0xf);
+       mmc->read_bl_len = 1 << ((cmd.response[1] >> 16) & 0xf);
 
        if (IS_SD(mmc))
                mmc->write_bl_len = mmc->read_bl_len;
        else
-               mmc->write_bl_len = 1 << ((((uint *)(cmd.response))[3] >> 22) & 0xf);
+               mmc->write_bl_len = 1 << ((cmd.response[3] >> 22) & 0xf);
 
        if (mmc->high_capacity) {
                csize = (mmc->csd[1] & 0x3f) << 16
@@ -819,7 +819,7 @@ int mmc_send_if_cond(struct mmc *mmc)
        if (err)
                return err;
 
-       if ((((uint *)(cmd.response))[0] & 0xff) != 0xaa)
+       if ((cmd.response[0] & 0xff) != 0xaa)
                return UNUSABLE_ERR;
        else
                mmc->version = SD_VERSION_2;
@@ -868,10 +868,6 @@ int mmc_init(struct mmc *mmc)
        /* Test for SD version 2 */
        err = mmc_send_if_cond(mmc);
 
-       /* If we got an error other than timeout, we bail */
-       if (err && err != TIMEOUT)
-               return err;
-
        /* Now try to get the SD card's operating condition */
        err = sd_send_op_cond(mmc);