diff options
| -rw-r--r-- | board/efikamx/efikamx.c | 9 | ||||
| -rw-r--r-- | board/emk/top9000/top9000.c | 12 | ||||
| -rw-r--r-- | board/freescale/mx51evk/mx51evk.c | 9 | ||||
| -rw-r--r-- | board/freescale/mx53ard/mx53ard.c | 9 | ||||
| -rw-r--r-- | board/freescale/mx53evk/mx53evk.c | 9 | ||||
| -rw-r--r-- | board/freescale/mx53loco/mx53loco.c | 9 | ||||
| -rw-r--r-- | board/freescale/mx53smd/mx53smd.c | 6 | ||||
| -rw-r--r-- | doc/README.atmel_mci | 12 | ||||
| -rw-r--r-- | drivers/mmc/fsl_esdhc.c | 8 | ||||
| -rw-r--r-- | drivers/mmc/mmc.c | 4 | ||||
| -rw-r--r-- | include/mmc.h | 2 | 
11 files changed, 39 insertions, 50 deletions
| diff --git a/board/efikamx/efikamx.c b/board/efikamx/efikamx.c index 1f6c457e9..e88b2edfa 100644 --- a/board/efikamx/efikamx.c +++ b/board/efikamx/efikamx.c @@ -314,17 +314,18 @@ static inline uint32_t efika_mmc_cd(void)  		return MX51_PIN_EIM_CS2;  } -int board_mmc_getcd(u8 *absent, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;  	uint32_t cd = efika_mmc_cd(); +	int ret;  	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR) -		*absent = gpio_get_value(IOMUX_TO_GPIO(cd)); +		ret = !gpio_get_value(IOMUX_TO_GPIO(cd));  	else -		*absent = gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_8)); +		ret = !gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_GPIO1_8)); -	return 0; +	return ret;  }  int board_mmc_init(bd_t *bis) diff --git a/board/emk/top9000/top9000.c b/board/emk/top9000/top9000.c index 6f5662a96..e0b4cf2c3 100644 --- a/board/emk/top9000/top9000.c +++ b/board/emk/top9000/top9000.c @@ -108,17 +108,9 @@ int board_mmc_init(bd_t *bd)  }  /* this is a weak define that we are overriding */ -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  { -	/* -	 * the only currently existing use of this function -	 * (fsl_esdhc.c) suggests this function must return -	 * *cs = TRUE if a card is NOT detected -> in most -	 * cases the value of the pin when the detect switch -	 * closes to GND -	 */ -	*cd = at91_get_gpio_value(CONFIG_SYS_MMC_CD_PIN) ? 1 : 0; -	return 0; +	return !at91_get_gpio_value(CONFIG_SYS_MMC_CD_PIN);  }  #endif diff --git a/board/freescale/mx51evk/mx51evk.c b/board/freescale/mx51evk/mx51evk.c index e43aaf726..8d1f6a33c 100644 --- a/board/freescale/mx51evk/mx51evk.c +++ b/board/freescale/mx51evk/mx51evk.c @@ -321,19 +321,20 @@ static void power_init(void)  }  #ifdef CONFIG_FSL_ESDHC -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; +	int ret;  	mxc_request_iomux(MX51_PIN_GPIO1_0, IOMUX_CONFIG_ALT1);  	mxc_request_iomux(MX51_PIN_GPIO1_6, IOMUX_CONFIG_ALT0);  	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR) -		*cd = gpio_get_value(0); +		ret = !gpio_get_value(0);  	else -		*cd = gpio_get_value(6); +		ret = !gpio_get_value(6); -	return 0; +	return ret;  }  int board_mmc_init(bd_t *bis) diff --git a/board/freescale/mx53ard/mx53ard.c b/board/freescale/mx53ard/mx53ard.c index e5a11429f..40b5c1967 100644 --- a/board/freescale/mx53ard/mx53ard.c +++ b/board/freescale/mx53ard/mx53ard.c @@ -83,19 +83,20 @@ struct fsl_esdhc_cfg esdhc_cfg[2] = {  	{MMC_SDHC2_BASE_ADDR, 1 },  }; -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; +	int ret;  	mxc_request_iomux(MX53_PIN_GPIO_1, IOMUX_CONFIG_ALT1);  	mxc_request_iomux(MX53_PIN_GPIO_4, IOMUX_CONFIG_ALT1);  	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR) -		*cd = gpio_get_value(1); /*GPIO1_1*/ +		ret = !gpio_get_value(1); /* GPIO1_1 */  	else -		*cd = gpio_get_value(4); /*GPIO1_4*/ +		ret = !gpio_get_value(4); /* GPIO1_4 */ -	return 0; +	return ret;  }  int board_mmc_init(bd_t *bis) diff --git a/board/freescale/mx53evk/mx53evk.c b/board/freescale/mx53evk/mx53evk.c index aa4a2c93d..e976ae1c0 100644 --- a/board/freescale/mx53evk/mx53evk.c +++ b/board/freescale/mx53evk/mx53evk.c @@ -208,19 +208,20 @@ struct fsl_esdhc_cfg esdhc_cfg[2] = {  	{MMC_SDHC3_BASE_ADDR, 1},  }; -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; +	int ret;  	mxc_request_iomux(MX53_PIN_EIM_DA11, IOMUX_CONFIG_ALT1);  	mxc_request_iomux(MX53_PIN_EIM_DA13, IOMUX_CONFIG_ALT1);  	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR) -		*cd = gpio_get_value(77); /*GPIO3_13*/ +		ret = !gpio_get_value(77); /* GPIO3_13 */  	else -		*cd = gpio_get_value(75); /*GPIO3_11*/ +		ret = !gpio_get_value(75); /* GPIO3_11 */ -	return 0; +	return ret;  }  int board_mmc_init(bd_t *bis) diff --git a/board/freescale/mx53loco/mx53loco.c b/board/freescale/mx53loco/mx53loco.c index ea4d35431..e6345e7e5 100644 --- a/board/freescale/mx53loco/mx53loco.c +++ b/board/freescale/mx53loco/mx53loco.c @@ -147,19 +147,20 @@ struct fsl_esdhc_cfg esdhc_cfg[2] = {  	{MMC_SDHC3_BASE_ADDR, 1},  }; -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; +	int ret;  	mxc_request_iomux(MX53_PIN_EIM_DA11, IOMUX_CONFIG_ALT1);  	mxc_request_iomux(MX53_PIN_EIM_DA13, IOMUX_CONFIG_ALT1);  	if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR) -		*cd = gpio_get_value(77); /*GPIO3_13*/ +		ret = !gpio_get_value(77); /* GPIO3_13 */  	else -		*cd = gpio_get_value(75); /*GPIO3_11*/ +		ret = !gpio_get_value(75); /* GPIO3_11 */ -	return 0; +	return ret;  }  int board_mmc_init(bd_t *bis) diff --git a/board/freescale/mx53smd/mx53smd.c b/board/freescale/mx53smd/mx53smd.c index 55af4e480..e273192ca 100644 --- a/board/freescale/mx53smd/mx53smd.c +++ b/board/freescale/mx53smd/mx53smd.c @@ -132,12 +132,10 @@ struct fsl_esdhc_cfg esdhc_cfg[1] = {  	{MMC_SDHC1_BASE_ADDR, 1},  }; -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  {  	mxc_request_iomux(MX53_PIN_EIM_DA13, IOMUX_CONFIG_ALT1); -	*cd = gpio_get_value(77); /*GPIO3_13*/ - -	return 0; +	return !gpio_get_value(77); /* GPIO3_13 */  }  int board_mmc_init(bd_t *bis) diff --git a/doc/README.atmel_mci b/doc/README.atmel_mci index dee0cf0a9..0cbd90982 100644 --- a/doc/README.atmel_mci +++ b/doc/README.atmel_mci @@ -59,17 +59,9 @@ int board_mmc_init(bd_t *bd)  }  /* this is a weak define that we are overriding */ -int board_mmc_getcd(u8 *cd, struct mmc *mmc) +int board_mmc_getcd(struct mmc *mmc)  { -	/* -	 * the only currently existing use of this function -	 * (fsl_esdhc.c) suggests this function must return -	 * *cs = TRUE if a card is NOT detected -> in most -	 * cases the value of the pin when the detect switch -	 * closes to GND -	 */ -	*cd = at91_get_gpio_value (CONFIG_SYS_MMC_CD_PIN) ? 1 : 0; -	return 0; +	return !at91_get_gpio_value(CONFIG_SYS_MMC_CD_PIN);  }  #endif diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index ddd1b4c6f..f038acc86 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -419,7 +419,6 @@ static int esdhc_init(struct mmc *mmc)  	struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base;  	int timeout = 1000;  	int ret = 0; -	u8 card_absent;  	/* Reset the entire host controller */  	esdhc_write32(®s->sysctl, SYSCTL_RSTA); @@ -447,7 +446,8 @@ static int esdhc_init(struct mmc *mmc)  	esdhc_clrsetbits32(®s->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);  	/* Check if there is a callback for detecting the card */ -	if (board_mmc_getcd(&card_absent, mmc)) { +	ret = board_mmc_getcd(mmc); +	if (ret < 0) {  		timeout = 1000;  		while (!(esdhc_read32(®s->prsstat) & PRSSTAT_CINS) &&  				--timeout) @@ -456,8 +456,10 @@ static int esdhc_init(struct mmc *mmc)  		if (timeout <= 0)  			ret = NO_CARD_ERR;  	} else { -		if (card_absent) +		if (ret == 0)  			ret = NO_CARD_ERR; +		else +			ret = 0;  	}  	return ret; diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 98abf1c8e..11c6aa67c 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -40,11 +40,11 @@  static struct list_head mmc_devices;  static int cur_dev_num = -1; -int __board_mmc_getcd(u8 *cd, struct mmc *mmc) { +int __board_mmc_getcd(struct mmc *mmc) {  	return -1;  } -int board_mmc_getcd(u8 *cd, struct mmc *mmc)__attribute__((weak, +int board_mmc_getcd(struct mmc *mmc)__attribute__((weak,  	alias("__board_mmc_getcd")));  int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) diff --git a/include/mmc.h b/include/mmc.h index 015a7f36a..a850174ab 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -314,7 +314,7 @@ struct mmc *find_mmc_device(int dev_num);  int mmc_set_dev(int dev_num);  void print_mmc_devices(char separator);  int get_mmc_num(void); -int board_mmc_getcd(u8 *cd, struct mmc *mmc); +int board_mmc_getcd(struct mmc *mmc);  int mmc_switch_part(int dev_num, unsigned int part_num);  #ifdef CONFIG_GENERIC_MMC |