]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - drivers/mmc/omap3_mmc.c
Merge branch 'master' of git://git.denx.de/u-boot-mmc
[karo-tx-uboot.git] / drivers / mmc / omap3_mmc.c
index 9506cca21816bd063faf04c70a51d490b33159a3..15d41e55bd1606b05ddc925f3c90eb3f68d47a90 100644 (file)
@@ -33,7 +33,7 @@
 
 #include "omap3_mmc.h"
 
-const unsigned short mmc_transspeed_val[15][4] = {
+static const unsigned short mmc_transspeed_val[15][4] = {
        {CLKD(10, 1), CLKD(10, 10), CLKD(10, 100), CLKD(10, 1000)},
        {CLKD(12, 1), CLKD(12, 10), CLKD(12, 100), CLKD(12, 1000)},
        {CLKD(13, 1), CLKD(13, 10), CLKD(13, 100), CLKD(13, 1000)},
@@ -51,7 +51,7 @@ const unsigned short mmc_transspeed_val[15][4] = {
        {CLKD(80, 1), CLKD(80, 10), CLKD(80, 100), CLKD(80, 1000)}
 };
 
-mmc_card_data cur_card_data;
+static mmc_card_data cur_card_data;
 static block_dev_desc_t mmc_blk_dev;
 static hsmmc_t *mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE;
 
@@ -80,7 +80,7 @@ block_dev_desc_t *mmc_get_dev(int dev)
        return (block_dev_desc_t *) &mmc_blk_dev;
 }
 
-unsigned char mmc_board_init(void)
+static unsigned char mmc_board_init(void)
 {
 #if defined(CONFIG_TWL4030_POWER)
        twl4030_power_mmc_init();
@@ -114,7 +114,7 @@ unsigned char mmc_board_init(void)
        return 1;
 }
 
-void mmc_init_stream(void)
+static void mmc_init_stream(void)
 {
        writel(readl(&mmc_base->con) | INIT_INITSTREAM, &mmc_base->con);
 
@@ -129,7 +129,7 @@ void mmc_init_stream(void)
        writel(readl(&mmc_base->con) & ~INIT_INITSTREAM, &mmc_base->con);
 }
 
-unsigned char mmc_clock_config(unsigned int iclk, unsigned short clk_div)
+static unsigned char mmc_clock_config(unsigned int iclk, unsigned short clk_div)
 {
        unsigned int val;
 
@@ -158,7 +158,7 @@ unsigned char mmc_clock_config(unsigned int iclk, unsigned short clk_div)
        return 1;
 }
 
-unsigned char mmc_init_setup(void)
+static unsigned char mmc_init_setup(void)
 {
        unsigned int reg_val;
 
@@ -192,7 +192,7 @@ unsigned char mmc_init_setup(void)
        return 1;
 }
 
-unsigned char mmc_send_cmd(unsigned int cmd, unsigned int arg,
+static unsigned char mmc_send_cmd(unsigned int cmd, unsigned int arg,
                                unsigned int *response)
 {
        unsigned int mmc_stat;
@@ -228,7 +228,7 @@ unsigned char mmc_send_cmd(unsigned int cmd, unsigned int arg,
        return 1;
 }
 
-unsigned char mmc_read_data(unsigned int *output_buf)
+static unsigned char mmc_read_data(unsigned int *output_buf)
 {
        unsigned int mmc_stat;
        unsigned int read_count = 0;
@@ -269,7 +269,7 @@ unsigned char mmc_read_data(unsigned int *output_buf)
        return 1;
 }
 
-unsigned char mmc_detect_card(mmc_card_data *mmc_card_cur)
+static unsigned char mmc_detect_card(mmc_card_data *mmc_card_cur)
 {
        unsigned char err;
        unsigned int argument = 0;
@@ -380,7 +380,7 @@ unsigned char mmc_detect_card(mmc_card_data *mmc_card_cur)
        return 1;
 }
 
-unsigned char mmc_read_cardsize(mmc_card_data *mmc_dev_data,
+static unsigned char mmc_read_cardsize(mmc_card_data *mmc_dev_data,
                                mmc_csd_reg_t *cur_csd)
 {
        mmc_extended_csd_reg_t ext_csd;
@@ -434,45 +434,48 @@ unsigned char mmc_read_cardsize(mmc_card_data *mmc_dev_data,
        return 1;
 }
 
-unsigned char omap_mmc_read_sect(unsigned int start_sec, unsigned int num_bytes,
-                                mmc_card_data *mmc_c,
-                                unsigned long *output_buf)
+static unsigned long mmc_bread(int dev_num, unsigned long blknr,
+               lbaint_t blkcnt, void *dst)
 {
        unsigned char err;
        unsigned int argument;
        unsigned int resp[4];
-       unsigned int num_sec_val =
-               (num_bytes + (MMCSD_SECTOR_SIZE - 1)) / MMCSD_SECTOR_SIZE;
+       unsigned int *output_buf = dst;
        unsigned int sec_inc_val;
+       lbaint_t i;
 
-       if (num_sec_val == 0)
-               return 1;
+       if (blkcnt == 0)
+               return 0;
 
-       if (mmc_c->mode == SECTOR_MODE) {
-               argument = start_sec;
+       if (cur_card_data.mode == SECTOR_MODE) {
+               argument = blknr;
                sec_inc_val = 1;
        } else {
-               argument = start_sec * MMCSD_SECTOR_SIZE;
+               argument = blknr * MMCSD_SECTOR_SIZE;
                sec_inc_val = MMCSD_SECTOR_SIZE;
        }
 
-       while (num_sec_val) {
+       for (i = 0; i < blkcnt; i++) {
                err = mmc_send_cmd(MMC_CMD17, argument, resp);
-               if (err != 1)
-                       return err;
+               if (err != 1) {
+                       printf("mmc: CMD17 failed, status = %08x\n", err);
+                       break;
+               }
 
-               err = mmc_read_data((unsigned int *) output_buf);
-               if (err != 1)
-                       return err;
+               err = mmc_read_data(output_buf);
+               if (err != 1) {
+                       printf("mmc: read failed, status = %08x\n", err);
+                       break;
+               }
 
                output_buf += (MMCSD_SECTOR_SIZE / 4);
                argument += sec_inc_val;
-               num_sec_val--;
        }
-       return 1;
+
+       return i;
 }
 
-unsigned char configure_mmc(mmc_card_data *mmc_card_cur)
+static unsigned char configure_mmc(mmc_card_data *mmc_card_cur)
 {
        unsigned char ret_val;
        unsigned int argument;
@@ -541,13 +544,6 @@ unsigned char configure_mmc(mmc_card_data *mmc_card_cur)
 
        return 1;
 }
-unsigned long mmc_bread(int dev_num, unsigned long blknr, lbaint_t blkcnt,
-                       void *dst)
-{
-       omap_mmc_read_sect(blknr, (blkcnt * MMCSD_SECTOR_SIZE), &cur_card_data,
-                               (unsigned long *) dst);
-       return 1;
-}
 
 int mmc_legacy_init(int dev)
 {