]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/pxa_mmc.c
Merge branch 'master' of git://git.denx.de/u-boot-ti
[u-boot] / drivers / mmc / pxa_mmc.c
index 33da75f4a3f9dc3557d8d1b4d9cbe0e370a71f9e..87769033bbcee9db4ea855fde11091da1dd3ee7f 100644 (file)
@@ -126,7 +126,7 @@ mmc_block_read(uchar * dst, ulong src, ulong len)
        MMC_I_MASK = ~MMC_I_MASK_RXFIFO_RD_REQ;
        while (len) {
                if (MMC_I_REG & MMC_I_REG_RXFIFO_RD_REQ) {
-#ifdef CONFIG_PXA27X
+#if defined(CONFIG_PXA27X) || defined(CONFIG_CPU_MONAHANS)
                        int i;
                        for (i = min(len, 32); i; i--) {
                                *dst++ = *((volatile uchar *)&MMC_RXFIFO);
@@ -179,7 +179,7 @@ mmc_block_write(ulong dst, uchar * src, int len)
        MMC_STRPCL = MMC_STRPCL_STOP_CLK;
        MMC_NOB = 1;
        MMC_BLKLEN = len;
-       mmc_cmd(MMC_CMD_WRITE_BLOCK, argh, argl,
+       mmc_cmd(MMC_CMD_WRITE_SINGLE_BLOCK, argh, argl,
                MMC_CMDAT_R1 | MMC_CMDAT_WRITE | MMC_CMDAT_BLOCK |
                MMC_CMDAT_DATA_EN);
 
@@ -216,7 +216,7 @@ mmc_block_write(ulong dst, uchar * src, int len)
 
 int
 /****************************************************/
-mmc_read(ulong src, uchar * dst, int size)
+pxa_mmc_read(long src, uchar * dst, int size)
 /****************************************************/
 {
        ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
@@ -292,7 +292,7 @@ mmc_read(ulong src, uchar * dst, int size)
 
 int
 /****************************************************/
-mmc_write(uchar * src, ulong dst, int size)
+pxa_mmc_write(uchar * src, ulong dst, int size)
 /****************************************************/
 {
        ulong end, part_start, part_end, part_len, aligned_start, aligned_end;
@@ -373,7 +373,7 @@ mmc_write(uchar * src, ulong dst, int size)
        return 0;
 }
 
-ulong
+static ulong
 /****************************************************/
 mmc_bread(int dev_num, ulong blknr, lbaint_t blkcnt, void *dst)
 /****************************************************/
@@ -381,7 +381,7 @@ mmc_bread(int dev_num, ulong blknr, lbaint_t blkcnt, void *dst)
        int mmc_block_size = MMC_BLOCK_SIZE;
        ulong src = blknr * mmc_block_size + CONFIG_SYS_MMC_BASE;
 
-       mmc_read(src, (uchar *) dst, blkcnt * mmc_block_size);
+       pxa_mmc_read(src, (uchar *) dst, blkcnt * mmc_block_size);
        return blkcnt;
 }
 
@@ -558,8 +558,11 @@ mmc_legacy_init(int verbose)
        set_GPIO_mode(GPIO6_MMCCLK_MD);
        set_GPIO_mode(GPIO8_MMCCS0_MD);
 #endif
+#ifdef CONFIG_CPU_MONAHANS     /* pxa3xx */
+       CKENA |= CKENA_12_MMC0 | CKENA_13_MMC1;
+#else  /* pxa2xx */
        CKEN |= CKEN12_MMC;     /* enable MMC unit clock */
-
+#endif
        MMC_CLKRT = MMC_CLKRT_0_3125MHZ;
        MMC_RESTO = MMC_RES_TO_MAX;
        MMC_SPI = MMC_SPI_DISABLE;
@@ -584,11 +587,7 @@ mmc_legacy_init(int verbose)
                        debug("Detected SD card\n");
                        break;
                }
-#ifdef CONFIG_PXA27X
-               udelay(10000);
-#else
                udelay(200000);
-#endif
        }
 
        if (retries <= 0 || !(IF_TYPE_SD == mmc_dev.if_type)) {
@@ -598,11 +597,7 @@ mmc_legacy_init(int verbose)
 
                retries = 10;
                while (retries-- && resp && !(resp[0] & 0x80000000)) {
-#ifdef CONFIG_PXA27X
-                       udelay(10000);
-#else
                        udelay(200000);
-#endif
                        resp =
                            mmc_cmd(MMC_CMD_SEND_OP_COND, 0x00ff, 0x8000,
                                    MMC_CMDAT_R3);
@@ -632,7 +627,7 @@ mmc_legacy_init(int verbose)
        MMC_CLKRT = 0;          /* 20 MHz */
        resp = mmc_cmd(MMC_CMD_SELECT_CARD, rca, 0, MMC_CMDAT_R1);
 
-#ifdef CONFIG_PXA27X
+#if defined(CONFIG_PXA27X) || defined(CONFIG_CPU_MONAHANS)
        if (IF_TYPE_SD == mmc_dev.if_type) {
                resp = mmc_cmd(MMC_CMD_APP_CMD, rca, 0, MMC_CMDAT_R1);
                resp = mmc_cmd(SD_CMD_APP_SET_BUS_WIDTH, 0, 2, MMC_CMDAT_R1);