diff options
| author | Wolfgang Denk <wd@denx.de> | 2010-09-09 21:39:46 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2010-09-09 21:39:46 +0200 | 
| commit | 8fea51a4acb0c7da6fb375c9a708c50c0a1b66ad (patch) | |
| tree | f6a3d36e35f8f4d1009c367417e918c210b0baf0 /drivers/mmc/omap3_mmc.c | |
| parent | 40e74c852b76accfe27d832f23ea3020352bc120 (diff) | |
| parent | ec99d983418897b120409f71712d41c01a21bf7c (diff) | |
| download | olio-uboot-2014.01-8fea51a4acb0c7da6fb375c9a708c50c0a1b66ad.tar.xz olio-uboot-2014.01-8fea51a4acb0c7da6fb375c9a708c50c0a1b66ad.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Diffstat (limited to 'drivers/mmc/omap3_mmc.c')
| -rw-r--r-- | drivers/mmc/omap3_mmc.c | 68 | 
1 files changed, 32 insertions, 36 deletions
| diff --git a/drivers/mmc/omap3_mmc.c b/drivers/mmc/omap3_mmc.c index 9506cca21..15d41e55b 100644 --- a/drivers/mmc/omap3_mmc.c +++ b/drivers/mmc/omap3_mmc.c @@ -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)  { |