Merge branch 'master' of git://git.denx.de/u-boot-mmc
This commit is contained in:
		
						commit
						a60d94b204
					
				|  | @ -37,7 +37,7 @@ static int wait_for_command_end(struct mmc *dev, struct mmc_cmd *cmd) | |||
| 	writel(statusmask, &host->base->status_clear); | ||||
| 	if (hoststatus & SDI_STA_CTIMEOUT) { | ||||
| 		debug("CMD%d time out\n", cmd->cmdidx); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if ((hoststatus & SDI_STA_CCRCFAIL) && | ||||
| 		   (cmd->resp_type & MMC_RSP_CRC)) { | ||||
| 		printf("CMD%d CRC error\n", cmd->cmdidx); | ||||
|  |  | |||
|  | @ -109,9 +109,9 @@ sdh_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd) | |||
| 	} | ||||
| 
 | ||||
| 	if (status & CMD_TIME_OUT) | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 	else if (status & CMD_CRC_FAIL && flags & MMC_RSP_CRC) | ||||
| 		ret = COMM_ERR; | ||||
| 		ret = -ECOMM; | ||||
| 	else | ||||
| 		ret = 0; | ||||
| 
 | ||||
|  | @ -136,7 +136,7 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) | |||
| 
 | ||||
| 	/* Don't support write yet. */ | ||||
| 	if (data->flags & MMC_DATA_WRITE) | ||||
| 		return UNUSABLE_ERR; | ||||
| 		return -EOPNOTSUPP; | ||||
| #ifndef RSI_BLKSZ | ||||
| 	data_ctl |= ((ffs(data->blocksize) - 1) << 4); | ||||
| #else | ||||
|  | @ -194,10 +194,10 @@ static int bfin_sdh_request(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 
 | ||||
| 		if (status & DAT_TIME_OUT) { | ||||
| 			bfin_write_SDH_STATUS_CLR(DAT_TIMEOUT_STAT); | ||||
| 			ret |= TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 		} else if (status & (DAT_CRC_FAIL | RX_OVERRUN)) { | ||||
| 			bfin_write_SDH_STATUS_CLR(DAT_CRC_FAIL_STAT | RX_OVERRUN_STAT); | ||||
| 			ret |= COMM_ERR; | ||||
| 			ret = -ECOMM; | ||||
| 		} else | ||||
| 			bfin_write_SDH_STATUS_CLR(DAT_BLK_END_STAT | DAT_END_STAT); | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| #include <config.h> | ||||
| #include <common.h> | ||||
| #include <command.h> | ||||
| #include <errno.h> | ||||
| #include <mmc.h> | ||||
| #include <part.h> | ||||
| #include <malloc.h> | ||||
|  | @ -66,7 +67,7 @@ dmmc_wait_fifo_status(volatile struct davinci_mmc_regs *regs, uint status) | |||
| 		udelay(100); | ||||
| 
 | ||||
| 	if (wdog == 0) | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  | @ -80,7 +81,7 @@ static int dmmc_busy_wait(volatile struct davinci_mmc_regs *regs) | |||
| 		udelay(10); | ||||
| 
 | ||||
| 	if (wdog == 0) | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  | @ -99,7 +100,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, | |||
| 			return 0; | ||||
| 		} else if (mmcstatus & st_error) { | ||||
| 			if (mmcstatus & MMCST0_TOUTRS) | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			printf("[ ST0 ERROR %x]\n", mmcstatus); | ||||
| 			/*
 | ||||
| 			 * Ignore CRC errors as some MMC cards fail to | ||||
|  | @ -107,7 +108,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, | |||
| 			 */ | ||||
| 			if (mmcstatus & MMCST0_CRCRS) | ||||
| 				return 0; | ||||
| 			return COMM_ERR; | ||||
| 			return -ECOMM; | ||||
| 		} | ||||
| 		udelay(10); | ||||
| 
 | ||||
|  | @ -116,7 +117,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, | |||
| 
 | ||||
| 	printf("Status %x Timeout ST0:%x ST1:%x\n", st_ready, mmcstatus, | ||||
| 			get_val(®s->mmcst1)); | ||||
| 	return COMM_ERR; | ||||
| 	return -ECOMM; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
|  | @ -13,7 +13,6 @@ | |||
| #include <memalign.h> | ||||
| #include <mmc.h> | ||||
| #include <dwmmc.h> | ||||
| #include <asm-generic/errno.h> | ||||
| 
 | ||||
| #define PAGE_SIZE 4096 | ||||
| 
 | ||||
|  | @ -120,12 +119,14 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data) | |||
| 		} | ||||
| 
 | ||||
| 		if (host->fifo_mode && size) { | ||||
| 			len = 0; | ||||
| 			if (data->flags == MMC_DATA_READ) { | ||||
| 				if ((dwmci_readl(host, DWMCI_RINTSTS) & | ||||
| 				     DWMCI_INTMSK_RXDR)) { | ||||
| 					len = dwmci_readl(host, DWMCI_STATUS); | ||||
| 					len = (len >> DWMCI_FIFO_SHIFT) & | ||||
| 						    DWMCI_FIFO_MASK; | ||||
| 					len = min(size, len); | ||||
| 					for (i = 0; i < len; i++) | ||||
| 						*buf++ = | ||||
| 						dwmci_readl(host, DWMCI_DATA); | ||||
|  | @ -139,6 +140,7 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data) | |||
| 					len = fifo_depth - ((len >> | ||||
| 						   DWMCI_FIFO_SHIFT) & | ||||
| 						   DWMCI_FIFO_MASK); | ||||
| 					len = min(size, len); | ||||
| 					for (i = 0; i < len; i++) | ||||
| 						dwmci_writel(host, DWMCI_DATA, | ||||
| 							     *buf++); | ||||
|  | @ -159,7 +161,7 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data) | |||
| 		if (get_timer(start) > timeout) { | ||||
| 			debug("%s: Timeout waiting for data!\n", | ||||
| 			      __func__); | ||||
| 			ret = TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -204,7 +206,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 	while (dwmci_readl(host, DWMCI_STATUS) & DWMCI_BUSY) { | ||||
| 		if (get_timer(start) > timeout) { | ||||
| 			debug("%s: Timeout on data busy\n", __func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -270,7 +272,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 
 | ||||
| 	if (i == retry) { | ||||
| 		debug("%s: Timeout.\n", __func__); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	if (mask & DWMCI_INTMSK_RTO) { | ||||
|  | @ -283,7 +285,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		 * CMD8, please keep that in mind. | ||||
| 		 */ | ||||
| 		debug("%s: Response Timeout.\n", __func__); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if (mask & DWMCI_INTMSK_RE) { | ||||
| 		debug("%s: Response Error.\n", __func__); | ||||
| 		return -EIO; | ||||
|  |  | |||
|  | @ -10,12 +10,12 @@ | |||
| #include <fdtdec.h> | ||||
| #include <libfdt.h> | ||||
| #include <malloc.h> | ||||
| #include <errno.h> | ||||
| #include <asm/arch/dwmmc.h> | ||||
| #include <asm/arch/clk.h> | ||||
| #include <asm/arch/pinmux.h> | ||||
| #include <asm/arch/power.h> | ||||
| #include <asm/gpio.h> | ||||
| #include <asm-generic/errno.h> | ||||
| 
 | ||||
| #define	DWMMC_MAX_CH_NUM		4 | ||||
| #define	DWMMC_MAX_FREQ			52000000 | ||||
|  |  | |||
|  | @ -12,11 +12,11 @@ | |||
| #include <config.h> | ||||
| #include <common.h> | ||||
| #include <command.h> | ||||
| #include <errno.h> | ||||
| #include <hwconfig.h> | ||||
| #include <mmc.h> | ||||
| #include <part.h> | ||||
| #include <malloc.h> | ||||
| #include <mmc.h> | ||||
| #include <fsl_esdhc.h> | ||||
| #include <fdt_support.h> | ||||
| #include <asm/io.h> | ||||
|  | @ -253,7 +253,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data) | |||
| 			if ((esdhc_read32(®s->prsstat) & | ||||
| 			    PRSSTAT_WPSPL) == 0) { | ||||
| 				printf("\nThe SD card is locked. Can not write to a locked card.\n\n"); | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  | @ -411,12 +411,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 	irqstat = esdhc_read32(®s->irqstat); | ||||
| 
 | ||||
| 	if (irqstat & CMD_ERR) { | ||||
| 		err = COMM_ERR; | ||||
| 		err = -ECOMM; | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	if (irqstat & IRQSTAT_CTOE) { | ||||
| 		err = TIMEOUT; | ||||
| 		err = -ETIMEDOUT; | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -442,7 +442,7 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 		if (timeout <= 0) { | ||||
| 			printf("Timeout waiting for DAT0 to go high!\n"); | ||||
| 			err = TIMEOUT; | ||||
| 			err = -ETIMEDOUT; | ||||
| 			goto out; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -471,12 +471,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 			irqstat = esdhc_read32(®s->irqstat); | ||||
| 
 | ||||
| 			if (irqstat & IRQSTAT_DTOE) { | ||||
| 				err = TIMEOUT; | ||||
| 				err = -ETIMEDOUT; | ||||
| 				goto out; | ||||
| 			} | ||||
| 
 | ||||
| 			if (irqstat & DATA_ERR) { | ||||
| 				err = COMM_ERR; | ||||
| 				err = -ECOMM; | ||||
| 				goto out; | ||||
| 			} | ||||
| 		} while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE); | ||||
|  |  | |||
|  | @ -34,7 +34,7 @@ static inline int ftsdc010_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd) | |||
| { | ||||
| 	struct ftsdc010_chip *chip = mmc->priv; | ||||
| 	struct ftsdc010_mmc __iomem *regs = chip->regs; | ||||
| 	int ret = TIMEOUT; | ||||
| 	int ret = -ETIMEDOUT; | ||||
| 	uint32_t ts, st; | ||||
| 	uint32_t cmd   = FTSDC010_CMD_IDX(mmc_cmd->cmdidx); | ||||
| 	uint32_t arg   = mmc_cmd->cmdarg; | ||||
|  | @ -126,7 +126,7 @@ static void ftsdc010_clkset(struct mmc *mmc, uint32_t rate) | |||
| 
 | ||||
| static int ftsdc010_wait(struct ftsdc010_mmc __iomem *regs, uint32_t mask) | ||||
| { | ||||
| 	int ret = TIMEOUT; | ||||
| 	int ret = -ETIMEDOUT; | ||||
| 	uint32_t st, ts; | ||||
| 
 | ||||
| 	for (ts = get_timer(0); get_timer(ts) < CFG_CMD_TIMEOUT; ) { | ||||
|  | @ -151,7 +151,7 @@ static int ftsdc010_wait(struct ftsdc010_mmc __iomem *regs, uint32_t mask) | |||
| static int ftsdc010_request(struct mmc *mmc, struct mmc_cmd *cmd, | ||||
| 	struct mmc_data *data) | ||||
| { | ||||
| 	int ret = UNUSABLE_ERR; | ||||
| 	int ret = -EOPNOTSUPP; | ||||
| 	uint32_t len = 0; | ||||
| 	struct ftsdc010_chip *chip = mmc->priv; | ||||
| 	struct ftsdc010_mmc __iomem *regs = chip->regs; | ||||
|  | @ -279,7 +279,7 @@ static int ftsdc010_init(struct mmc *mmc) | |||
| 	uint32_t ts; | ||||
| 
 | ||||
| 	if (readl(®s->status) & FTSDC010_STATUS_CARD_DETECT) | ||||
| 		return NO_CARD_ERR; | ||||
| 		return -ENOMEDIUM; | ||||
| 
 | ||||
| 	if (readl(®s->status) & FTSDC010_STATUS_WRITE_PROT) { | ||||
| 		printf("ftsdc010: write protected\n"); | ||||
|  | @ -297,7 +297,7 @@ static int ftsdc010_init(struct mmc *mmc) | |||
| 	} | ||||
| 	if (readl(®s->cmd) & FTSDC010_CMD_SDC_RST) { | ||||
| 		printf("ftsdc010: reset failed\n"); | ||||
| 		return UNUSABLE_ERR; | ||||
| 		return -EOPNOTSUPP; | ||||
| 	} | ||||
| 
 | ||||
| 	/* 2. enter low speed mode (400k card detection) */ | ||||
|  |  | |||
|  | @ -213,7 +213,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 	if (!priv->initialized) { | ||||
| 		puts ("MCI not initialized!\n"); | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Figure out the transfer arguments */ | ||||
|  | @ -238,10 +238,10 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 	if ((status & error_flags) & MMCI_BIT(RTOE)) { | ||||
| 		dump_cmd(cmdr, cmd->cmdarg, status, "Command Time Out"); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if (status & error_flags) { | ||||
| 		dump_cmd(cmdr, cmd->cmdarg, status, "Command Failed"); | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Copy the response to the response buffer */ | ||||
|  | @ -303,7 +303,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 			if (status) { | ||||
| 				dump_cmd(cmdr, cmd->cmdarg, status, | ||||
| 					"Data Transfer Failed"); | ||||
| 				return COMM_ERR; | ||||
| 				return -ECOMM; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  | @ -315,7 +315,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 			if (status & error_flags) { | ||||
| 				dump_cmd(cmdr, cmd->cmdarg, status, | ||||
| 					"DTIP Wait Failed"); | ||||
| 				return COMM_ERR; | ||||
| 				return -ECOMM; | ||||
| 			} | ||||
| 			i++; | ||||
| 		} while ((status & MMCI_BIT(DTIP)) && i < 10000); | ||||
|  |  | |||
|  | @ -169,7 +169,7 @@ void print_mmc_devices(char separator) | |||
| 
 | ||||
| 	for (uclass_first_device(UCLASS_MMC, &dev); | ||||
| 	     dev; | ||||
| 	     uclass_next_device(&dev)) { | ||||
| 	     uclass_next_device(&dev), first = false) { | ||||
| 		struct mmc *m = mmc_get_mmc_dev(dev); | ||||
| 
 | ||||
| 		if (!first) { | ||||
|  |  | |||
|  | @ -152,7 +152,7 @@ int mmc_send_status(struct mmc *mmc, int timeout) | |||
| 				printf("Status Error: 0x%08X\n", | ||||
| 					cmd.response[0]); | ||||
| #endif | ||||
| 				return COMM_ERR; | ||||
| 				return -ECOMM; | ||||
| 			} | ||||
| 		} else if (--retries < 0) | ||||
| 			return err; | ||||
|  | @ -168,7 +168,7 @@ int mmc_send_status(struct mmc *mmc, int timeout) | |||
| #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) | ||||
| 		printf("Timeout waiting card ready\n"); | ||||
| #endif | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
|  | @ -344,7 +344,7 @@ static int sd_send_op_cond(struct mmc *mmc) | |||
| 			break; | ||||
| 
 | ||||
| 		if (timeout-- <= 0) | ||||
| 			return UNUSABLE_ERR; | ||||
| 			return -EOPNOTSUPP; | ||||
| 
 | ||||
| 		udelay(1000); | ||||
| 	} | ||||
|  | @ -430,7 +430,7 @@ static int mmc_complete_op_cond(struct mmc *mmc) | |||
| 			if (mmc->ocr & OCR_BUSY) | ||||
| 				break; | ||||
| 			if (get_timer(start) > timeout) | ||||
| 				return UNUSABLE_ERR; | ||||
| 				return -EOPNOTSUPP; | ||||
| 			udelay(100); | ||||
| 		} | ||||
| 	} | ||||
|  | @ -1429,7 +1429,7 @@ static int mmc_startup(struct mmc *mmc) | |||
| 				   &test_csd[EXT_CSD_SEC_CNT], 4) == 0) | ||||
| 				break; | ||||
| 			else | ||||
| 				err = SWITCH_ERR; | ||||
| 				err = -EBADMSG; | ||||
| 		} | ||||
| 
 | ||||
| 		if (err) | ||||
|  | @ -1499,7 +1499,7 @@ static int mmc_send_if_cond(struct mmc *mmc) | |||
| 		return err; | ||||
| 
 | ||||
| 	if ((cmd.response[0] & 0xff) != 0xaa) | ||||
| 		return UNUSABLE_ERR; | ||||
| 		return -EOPNOTSUPP; | ||||
| 	else | ||||
| 		mmc->version = SD_VERSION_2; | ||||
| 
 | ||||
|  | @ -1526,7 +1526,7 @@ int mmc_start_init(struct mmc *mmc) | |||
| #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) | ||||
| 		printf("MMC: no card present\n"); | ||||
| #endif | ||||
| 		return NO_CARD_ERR; | ||||
| 		return -ENOMEDIUM; | ||||
| 	} | ||||
| 
 | ||||
| 	if (mmc->has_init) | ||||
|  | @ -1565,14 +1565,14 @@ int mmc_start_init(struct mmc *mmc) | |||
| 	err = sd_send_op_cond(mmc); | ||||
| 
 | ||||
| 	/* If the command timed out, we check for an MMC card */ | ||||
| 	if (err == TIMEOUT) { | ||||
| 	if (err == -ETIMEDOUT) { | ||||
| 		err = mmc_send_op_cond(mmc); | ||||
| 
 | ||||
| 		if (err) { | ||||
| #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) | ||||
| 			printf("Card did not respond to voltage select!\n"); | ||||
| #endif | ||||
| 			return UNUSABLE_ERR; | ||||
| 			return -EOPNOTSUPP; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
|  * Licensed under the GPL-2 or later. | ||||
|  */ | ||||
| #include <common.h> | ||||
| #include <errno.h> | ||||
| #include <malloc.h> | ||||
| #include <part.h> | ||||
| #include <mmc.h> | ||||
|  | @ -182,13 +183,13 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 	spi_cs_activate(spi); | ||||
| 	r1 = mmc_spi_sendcmd(mmc, cmd->cmdidx, cmd->cmdarg); | ||||
| 	if (r1 == 0xff) { /* no response */ | ||||
| 		ret = NO_CARD_ERR; | ||||
| 		ret = -ENOMEDIUM; | ||||
| 		goto done; | ||||
| 	} else if (r1 & R1_SPI_COM_CRC) { | ||||
| 		ret = COMM_ERR; | ||||
| 		ret = -ECOMM; | ||||
| 		goto done; | ||||
| 	} else if (r1 & ~R1_SPI_IDLE) { /* other errors */ | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 		goto done; | ||||
| 	} else if (cmd->resp_type == MMC_RSP_R2) { | ||||
| 		r1 = mmc_spi_readdata(mmc, cmd->response, 1, 16); | ||||
|  | @ -225,9 +226,9 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 				data->blocks, data->blocksize, | ||||
| 				(cmd->cmdidx == MMC_CMD_WRITE_MULTIPLE_BLOCK)); | ||||
| 		if (r1 & R1_SPI_COM_CRC) | ||||
| 			ret = COMM_ERR; | ||||
| 			ret = -ECOMM; | ||||
| 		else if (r1) /* other errors */ | ||||
| 			ret = TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 	} | ||||
| done: | ||||
| 	spi_cs_deactivate(spi); | ||||
|  |  | |||
|  | @ -143,9 +143,7 @@ static int msm_sdc_probe(struct udevice *dev) | |||
| 	/* Set host controller version */ | ||||
| 	host->version = sdhci_readw(host, SDHCI_HOST_VERSION); | ||||
| 
 | ||||
| 	caps = sdhci_readl(host, SDHCI_CAPABILITIES); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, dev->name, host->bus_width, | ||||
| 			      caps, 0, 0, host->version, host->quirks, 0); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0); | ||||
| 	host->mmc = &plat->mmc; | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include <common.h> | ||||
| #include <errno.h> | ||||
| #include <malloc.h> | ||||
| #include <part.h> | ||||
| #include <mmc.h> | ||||
|  | @ -172,15 +173,15 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 			    (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT)) { | ||||
| 				debug("%s: command READ timed out\n", | ||||
| 				      DRIVER_NAME); | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 			debug("%s: command READ error\n", DRIVER_NAME); | ||||
| 			return COMM_ERR; | ||||
| 			return -ECOMM; | ||||
| 		} | ||||
| 
 | ||||
| 		if ((get_timer(0) - start) > TIMEOUT_DELAY) { | ||||
| 			debug("%s: command timed out\n", DRIVER_NAME); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|  | @ -232,7 +233,7 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 
 | ||||
| 	if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) & | ||||
| 		(SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT)) | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -211,11 +211,11 @@ static int mxcmci_finish_data(struct mxcmci_host *host, unsigned int stat) | |||
| 		} else if (stat & STATUS_CRC_WRITE_ERR) { | ||||
| 			u32 err_code = (stat >> 9) & 0x3; | ||||
| 			if (err_code == 2) /* No CRC response */ | ||||
| 				data_error = TIMEOUT; | ||||
| 				data_error = -ETIMEDOUT; | ||||
| 			else | ||||
| 				data_error = -EILSEQ; | ||||
| 		} else if (stat & STATUS_TIME_OUT_READ) { | ||||
| 			data_error = TIMEOUT; | ||||
| 			data_error = -ETIMEDOUT; | ||||
| 		} else { | ||||
| 			data_error = -EIO; | ||||
| 		} | ||||
|  | @ -238,7 +238,7 @@ static int mxcmci_read_response(struct mxcmci_host *host, unsigned int stat) | |||
| 
 | ||||
| 	if (stat & STATUS_TIME_OUT_RESP) { | ||||
| 		printf("CMD TIMEOUT\n"); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if (stat & STATUS_RESP_CRC_ERR && cmd->resp_type & MMC_RSP_CRC) { | ||||
| 		printf("cmd crc error\n"); | ||||
| 		return -EILSEQ; | ||||
|  |  | |||
|  | @ -84,7 +84,7 @@ static int mxsmmc_send_cmd_pio(struct mxsmmc_priv *priv, struct mmc_data *data) | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return timeout ? 0 : COMM_ERR; | ||||
| 	return timeout ? 0 : -ECOMM; | ||||
| } | ||||
| 
 | ||||
| static int mxsmmc_send_cmd_dma(struct mxsmmc_priv *priv, struct mmc_data *data) | ||||
|  | @ -120,7 +120,7 @@ static int mxsmmc_send_cmd_dma(struct mxsmmc_priv *priv, struct mmc_data *data) | |||
| 	mxs_dma_desc_append(dmach, priv->desc); | ||||
| 	if (mxs_dma_go(dmach)) { | ||||
| 		bounce_buffer_stop(&bbstate); | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 	} | ||||
| 
 | ||||
| 	bounce_buffer_stop(&bbstate); | ||||
|  | @ -158,13 +158,13 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 	if (!timeout) { | ||||
| 		printf("MMC%d: Bus busy timeout!\n", mmc->block_dev.devnum); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	/* See if card is present */ | ||||
| 	if (!mxsmmc_cd(priv)) { | ||||
| 		printf("MMC%d: No card detected!\n", mmc->block_dev.devnum); | ||||
| 		return NO_CARD_ERR; | ||||
| 		return -ENOMEDIUM; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Start building CTRL0 contents */ | ||||
|  | @ -203,7 +203,7 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 			priv->mmc_is_wp(mmc->block_dev.devnum)) { | ||||
| 			printf("MMC%d: Can not write a locked card!\n", | ||||
| 				mmc->block_dev.devnum); | ||||
| 			return UNUSABLE_ERR; | ||||
| 			return -EOPNOTSUPP; | ||||
| 		} | ||||
| 
 | ||||
| 		ctrl0 |= SSP_CTRL0_DATA_XFER; | ||||
|  | @ -244,21 +244,21 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 	if (!timeout) { | ||||
| 		printf("MMC%d: Command %d busy\n", | ||||
| 			mmc->block_dev.devnum, cmd->cmdidx); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Check command timeout */ | ||||
| 	if (reg & SSP_STATUS_RESP_TIMEOUT) { | ||||
| 		printf("MMC%d: Command %d timeout (status 0x%08x)\n", | ||||
| 			mmc->block_dev.devnum, cmd->cmdidx, reg); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Check command errors */ | ||||
| 	if (reg & (SSP_STATUS_RESP_CRC_ERR | SSP_STATUS_RESP_ERR)) { | ||||
| 		printf("MMC%d: Command %d error (status 0x%08x)!\n", | ||||
| 			mmc->block_dev.devnum, cmd->cmdidx, reg); | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Copy response to response buffer */ | ||||
|  | @ -298,7 +298,7 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 		SSP_STATUS_FIFO_OVRFLW | SSP_STATUS_FIFO_UNDRFLW)) { | ||||
| 		printf("MMC%d: Data error with command %d (status 0x%08x)!\n", | ||||
| 			mmc->block_dev.devnum, cmd->cmdidx, reg); | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| 	} | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
|  | @ -231,7 +231,7 @@ static int omap_hsmmc_init_setup(struct mmc *mmc) | |||
| 	while ((readl(&mmc_base->sysstatus) & RESETDONE) == 0) { | ||||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s: timedout waiting for cc2!\n", __func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 	writel(readl(&mmc_base->sysctl) | SOFTRESETALL, &mmc_base->sysctl); | ||||
|  | @ -240,7 +240,7 @@ static int omap_hsmmc_init_setup(struct mmc *mmc) | |||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s: timedout waiting for softresetall!\n", | ||||
| 				__func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 	writel(DTW_1_BITMODE | SDBP_PWROFF | SDVS_3V0, &mmc_base->hctl); | ||||
|  | @ -262,7 +262,7 @@ static int omap_hsmmc_init_setup(struct mmc *mmc) | |||
| 	while ((readl(&mmc_base->sysctl) & ICS_MASK) == ICS_NOTREADY) { | ||||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s: timedout waiting for ics!\n", __func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 	writel(readl(&mmc_base->sysctl) | CEN_ENABLE, &mmc_base->sysctl); | ||||
|  | @ -337,7 +337,7 @@ static int omap_hsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s: timedout waiting on cmd inhibit to clear\n", | ||||
| 					__func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 	writel(0xFFFFFFFF, &mmc_base->stat); | ||||
|  | @ -346,7 +346,7 @@ static int omap_hsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s: timedout waiting for STAT (%x) to clear\n", | ||||
| 				__func__, readl(&mmc_base->stat)); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} | ||||
| 	/*
 | ||||
|  | @ -410,13 +410,13 @@ static int omap_hsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		mmc_stat = readl(&mmc_base->stat); | ||||
| 		if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 			printf("%s : timeout: No status update\n", __func__); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 	} while (!mmc_stat); | ||||
| 
 | ||||
| 	if ((mmc_stat & IE_CTO) != 0) { | ||||
| 		mmc_reset_controller_fsm(mmc_base, SYSCTL_SRC); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if ((mmc_stat & ERRI_MASK) != 0) | ||||
| 		return -1; | ||||
| 
 | ||||
|  | @ -464,7 +464,7 @@ static int mmc_read_data(struct hsmmc *mmc_base, char *buf, unsigned int size) | |||
| 			if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 				printf("%s: timedout waiting for status!\n", | ||||
| 						__func__); | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 		} while (mmc_stat == 0); | ||||
| 
 | ||||
|  | @ -519,7 +519,7 @@ static int mmc_write_data(struct hsmmc *mmc_base, const char *buf, | |||
| 			if (get_timer(0) - start > MAX_RETRY_MS) { | ||||
| 				printf("%s: timedout waiting for status!\n", | ||||
| 						__func__); | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 		} while (mmc_stat == 0); | ||||
| 
 | ||||
|  |  | |||
|  | @ -33,15 +33,11 @@ static int arasan_sdhci_probe(struct udevice *dev) | |||
| 	struct rockchip_sdhc *prv = dev_get_priv(dev); | ||||
| 	struct sdhci_host *host = &prv->host; | ||||
| 	int ret; | ||||
| 	u32 caps; | ||||
| 
 | ||||
| 	host->version = sdhci_readw(host, SDHCI_HOST_VERSION); | ||||
| 	host->quirks = SDHCI_QUIRK_WAIT_SEND_CMD; | ||||
| 
 | ||||
| 	caps = sdhci_readl(host, SDHCI_CAPABILITIES); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, dev->name, host->bus_width, | ||||
| 			caps, CONFIG_ROCKCHIP_SDHCI_MAX_FREQ, EMMC_MIN_FREQ, | ||||
| 			host->version, host->quirks, 0); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, host, CONFIG_ROCKCHIP_SDHCI_MAX_FREQ, | ||||
| 			EMMC_MIN_FREQ); | ||||
| 
 | ||||
| 	host->mmc = &plat->mmc; | ||||
| 	if (ret) | ||||
|  |  | |||
|  | @ -133,7 +133,7 @@ s3cmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 	if (!timeout) { | ||||
| 		puts("S3C SDI: Command timed out!\n"); | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 		goto error; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -196,7 +196,7 @@ s3cmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) | |||
| 
 | ||||
| 	if (!timeout) { | ||||
| 		puts("S3C SDI: Command timed out!\n"); | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 		goto error; | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -68,7 +68,7 @@ static int s5p_sdhci_core_init(struct sdhci_host *host) | |||
| 	host->name = S5P_NAME; | ||||
| 
 | ||||
| 	host->quirks = SDHCI_QUIRK_NO_HISPD_BIT | SDHCI_QUIRK_BROKEN_VOLTAGE | | ||||
| 		SDHCI_QUIRK_BROKEN_R1B | SDHCI_QUIRK_32BIT_DMA_ADDR | | ||||
| 		SDHCI_QUIRK_32BIT_DMA_ADDR | | ||||
| 		SDHCI_QUIRK_WAIT_SEND_CMD | SDHCI_QUIRK_USE_WIDE8; | ||||
| 	host->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195; | ||||
| 	host->version = sdhci_readw(host, SDHCI_HOST_VERSION); | ||||
|  |  | |||
|  | @ -170,7 +170,7 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 				       cmd_timeout); | ||||
| 			} else { | ||||
| 				puts("timeout.\n"); | ||||
| 				return COMM_ERR; | ||||
| 				return -ECOMM; | ||||
| 			} | ||||
| 		} | ||||
| 		time++; | ||||
|  | @ -184,6 +184,7 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		flags = SDHCI_CMD_RESP_LONG; | ||||
| 	else if (cmd->resp_type & MMC_RSP_BUSY) { | ||||
| 		flags = SDHCI_CMD_RESP_SHORT_BUSY; | ||||
| 		if (data) | ||||
| 			mask |= SDHCI_INT_DATA_END; | ||||
| 	} else | ||||
| 		flags = SDHCI_CMD_RESP_SHORT; | ||||
|  | @ -252,17 +253,17 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		stat = sdhci_readl(host, SDHCI_INT_STATUS); | ||||
| 		if (stat & SDHCI_INT_ERROR) | ||||
| 			break; | ||||
| 	} while (((stat & mask) != mask) && | ||||
| 		 (get_timer(start) < SDHCI_READ_STATUS_TIMEOUT)); | ||||
| 
 | ||||
| 		if (get_timer(start) >= SDHCI_READ_STATUS_TIMEOUT) { | ||||
| 		if (host->quirks & SDHCI_QUIRK_BROKEN_R1B) | ||||
| 			if (host->quirks & SDHCI_QUIRK_BROKEN_R1B) { | ||||
| 				return 0; | ||||
| 		else { | ||||
| 			printf("%s: Timeout for status update!\n", __func__); | ||||
| 			return TIMEOUT; | ||||
| 			} else { | ||||
| 				printf("%s: Timeout for status update!\n", | ||||
| 				       __func__); | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 		} | ||||
| 	} while ((stat & mask) != mask); | ||||
| 
 | ||||
| 	if ((stat & (SDHCI_INT_ERROR | mask)) == mask) { | ||||
| 		sdhci_cmd_done(host, cmd); | ||||
|  | @ -288,9 +289,9 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 	sdhci_reset(host, SDHCI_RESET_CMD); | ||||
| 	sdhci_reset(host, SDHCI_RESET_DATA); | ||||
| 	if (stat & SDHCI_INT_TIMEOUT) | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	else | ||||
| 		return COMM_ERR; | ||||
| 		return -ECOMM; | ||||
| } | ||||
| 
 | ||||
| static int sdhci_set_clock(struct mmc *mmc, unsigned int clock) | ||||
|  | @ -510,18 +511,22 @@ static const struct mmc_ops sdhci_ops = { | |||
| }; | ||||
| #endif | ||||
| 
 | ||||
| int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth, | ||||
| 		    uint caps, u32 max_clk, u32 min_clk, uint version, | ||||
| 		    uint quirks, uint host_caps) | ||||
| int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host, | ||||
| 		u32 max_clk, u32 min_clk) | ||||
| { | ||||
| 	cfg->name = name; | ||||
| 	u32 caps; | ||||
| 
 | ||||
| 	caps = sdhci_readl(host, SDHCI_CAPABILITIES); | ||||
| 	host->version = sdhci_readw(host, SDHCI_HOST_VERSION); | ||||
| 
 | ||||
| 	cfg->name = host->name; | ||||
| #ifndef CONFIG_DM_MMC_OPS | ||||
| 	cfg->ops = &sdhci_ops; | ||||
| #endif | ||||
| 	if (max_clk) | ||||
| 		cfg->f_max = max_clk; | ||||
| 	else { | ||||
| 		if (version >= SDHCI_SPEC_300) | ||||
| 		if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) | ||||
| 			cfg->f_max = (caps & SDHCI_CLOCK_V3_BASE_MASK) >> | ||||
| 				SDHCI_CLOCK_BASE_SHIFT; | ||||
| 		else | ||||
|  | @ -534,7 +539,7 @@ int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth, | |||
| 	if (min_clk) | ||||
| 		cfg->f_min = min_clk; | ||||
| 	else { | ||||
| 		if (version >= SDHCI_SPEC_300) | ||||
| 		if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) | ||||
| 			cfg->f_min = cfg->f_max / SDHCI_MAX_DIV_SPEC_300; | ||||
| 		else | ||||
| 			cfg->f_min = cfg->f_max / SDHCI_MAX_DIV_SPEC_200; | ||||
|  | @ -548,16 +553,13 @@ int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth, | |||
| 		cfg->voltages |= MMC_VDD_165_195; | ||||
| 
 | ||||
| 	cfg->host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT; | ||||
| 	if (version >= SDHCI_SPEC_300) { | ||||
| 	if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) { | ||||
| 		if (caps & SDHCI_CAN_DO_8BIT) | ||||
| 			cfg->host_caps |= MMC_MODE_8BIT; | ||||
| 	} | ||||
| 
 | ||||
| 	if (quirks & SDHCI_QUIRK_NO_HISPD_BIT) | ||||
| 		cfg->host_caps &= ~(MMC_MODE_HS | MMC_MODE_HS_52MHz); | ||||
| 
 | ||||
| 	if (host_caps) | ||||
| 		cfg->host_caps |= host_caps; | ||||
| 	if (host->host_caps) | ||||
| 		cfg->host_caps |= host->host_caps; | ||||
| 
 | ||||
| 
 | ||||
| 	cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT; | ||||
|  | @ -573,10 +575,10 @@ int sdhci_bind(struct udevice *dev, struct mmc *mmc, struct mmc_config *cfg) | |||
| #else | ||||
| int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk) | ||||
| { | ||||
| #ifdef CONFIG_MMC_SDMA | ||||
| 	unsigned int caps; | ||||
| 
 | ||||
| 	caps = sdhci_readl(host, SDHCI_CAPABILITIES); | ||||
| #ifdef CONFIG_MMC_SDMA | ||||
| 	if (!(caps & SDHCI_CAN_DO_SDMA)) { | ||||
| 		printf("%s: Your controller doesn't support SDMA!!\n", | ||||
| 		       __func__); | ||||
|  | @ -584,9 +586,7 @@ int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk) | |||
| 	} | ||||
| #endif | ||||
| 
 | ||||
| 	if (sdhci_setup_cfg(&host->cfg, host->name, host->bus_width, caps, | ||||
| 			    max_clk, min_clk, SDHCI_GET_VERSION(host), | ||||
| 			    host->quirks, host->host_caps)) { | ||||
| 	if (sdhci_setup_cfg(&host->cfg, host, max_clk, min_clk)) { | ||||
| 		printf("%s: Hardware doesn't specify base clock frequency\n", | ||||
| 		       __func__); | ||||
| 		return -EINVAL; | ||||
|  |  | |||
|  | @ -168,7 +168,7 @@ static int sh_mmcif_error_manage(struct sh_mmcif_host *host) | |||
| 	if (state2 & STS2_CRC_ERR) | ||||
| 		ret = -EILSEQ; | ||||
| 	else if (state2 & STS2_TIMEOUT_ERR) | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 	else | ||||
| 		ret = -EILSEQ; | ||||
| 	return ret; | ||||
|  | @ -483,7 +483,7 @@ static int sh_mmcif_start_cmd(struct sh_mmcif_host *host, | |||
| 		case MMC_CMD_ALL_SEND_CID: | ||||
| 		case MMC_CMD_SELECT_CARD: | ||||
| 		case MMC_CMD_APP_CMD: | ||||
| 			ret = TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 			break; | ||||
| 		default: | ||||
| 			printf(DRIVER_NAME": Cmd(d'%d) err\n", cmd->cmdidx); | ||||
|  | @ -520,14 +520,14 @@ static int sh_mmcif_request(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 
 | ||||
| 	switch (cmd->cmdidx) { | ||||
| 	case MMC_CMD_APP_CMD: | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	case MMC_CMD_SEND_EXT_CSD: /* = SD_SEND_IF_COND (8) */ | ||||
| 		if (data) | ||||
| 			/* ext_csd */ | ||||
| 			break; | ||||
| 		else | ||||
| 			/* send_if_cond cmd (not support) */ | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 	default: | ||||
| 		break; | ||||
| 	} | ||||
|  |  | |||
|  | @ -232,7 +232,7 @@ static int sh_sdhi_error_manage(struct sh_sdhi_host *host) | |||
| 	e_state2 = sh_sdhi_readw(host, SDHI_ERR_STS2); | ||||
| 	if (e_state2 & ERR_STS2_SYS_ERROR) { | ||||
| 		if (e_state2 & ERR_STS2_RES_STOP_TIMEOUT) | ||||
| 			ret = TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 		else | ||||
| 			ret = -EILSEQ; | ||||
| 		debug("%s: ERR_STS2 = %04x\n", | ||||
|  | @ -246,7 +246,7 @@ static int sh_sdhi_error_manage(struct sh_sdhi_host *host) | |||
| 	if (e_state1 & ERR_STS1_CRC_ERROR || e_state1 & ERR_STS1_CMD_ERROR) | ||||
| 		ret = -EILSEQ; | ||||
| 	else | ||||
| 		ret = TIMEOUT; | ||||
| 		ret = -ETIMEDOUT; | ||||
| 
 | ||||
| 	debug("%s: ERR_STS1 = %04x\n", | ||||
| 	      DRIVER_NAME, sh_sdhi_readw(host, SDHI_ERR_STS1)); | ||||
|  | @ -566,7 +566,7 @@ static int sh_sdhi_start_cmd(struct sh_sdhi_host *host, | |||
| 		case MMC_CMD_SELECT_CARD: | ||||
| 		case SD_CMD_SEND_IF_COND: | ||||
| 		case MMC_CMD_APP_CMD: | ||||
| 			ret = TIMEOUT; | ||||
| 			ret = -ETIMEDOUT; | ||||
| 			break; | ||||
| 		default: | ||||
| 			debug(DRIVER_NAME": Cmd(d'%d) err\n", opc); | ||||
|  |  | |||
|  | @ -304,7 +304,7 @@ static int mmc_rint_wait(struct mmc *mmc, unsigned int timeout_msecs, | |||
| 		    (status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT)) { | ||||
| 			debug("%s timeout %x\n", what, | ||||
| 			      status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT); | ||||
| 			return TIMEOUT; | ||||
| 			return -ETIMEDOUT; | ||||
| 		} | ||||
| 		udelay(1000); | ||||
| 	} while (!(status & done_bit)); | ||||
|  | @ -375,7 +375,7 @@ static int sunxi_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 		if (ret) { | ||||
| 			error = readl(&mmchost->reg->rint) & \ | ||||
| 				SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT; | ||||
| 			error = TIMEOUT; | ||||
| 			error = -ETIMEDOUT; | ||||
| 			goto out; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -402,7 +402,7 @@ static int sunxi_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 			status = readl(&mmchost->reg->status); | ||||
| 			if (!timeout_msecs--) { | ||||
| 				debug("busy timeout\n"); | ||||
| 				error = TIMEOUT; | ||||
| 				error = -ETIMEDOUT; | ||||
| 				goto out; | ||||
| 			} | ||||
| 			udelay(1000); | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| 
 | ||||
| #include <bouncebuf.h> | ||||
| #include <common.h> | ||||
| #include <errno.h> | ||||
| #include <asm/gpio.h> | ||||
| #include <asm/io.h> | ||||
| #ifndef CONFIG_TEGRA186 | ||||
|  | @ -216,14 +217,14 @@ static int mmc_send_cmd_bounced(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 	if (i == retry) { | ||||
| 		printf("%s: waiting for status update\n", __func__); | ||||
| 		writel(mask, &host->reg->norintsts); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	if (mask & TEGRA_MMC_NORINTSTS_CMD_TIMEOUT) { | ||||
| 		/* Timeout Error */ | ||||
| 		debug("timeout: %08x cmd %d\n", mask, cmd->cmdidx); | ||||
| 		writel(mask, &host->reg->norintsts); | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} else if (mask & TEGRA_MMC_NORINTSTS_ERR_INTERRUPT) { | ||||
| 		/* Error Interrupt */ | ||||
| 		debug("error: %08x cmd %d\n", mask, cmd->cmdidx); | ||||
|  | @ -257,7 +258,7 @@ static int mmc_send_cmd_bounced(struct mmc *mmc, struct mmc_cmd *cmd, | |||
| 			if (i == retry) { | ||||
| 				printf("%s: card is still busy\n", __func__); | ||||
| 				writel(mask, &host->reg->norintsts); | ||||
| 				return TIMEOUT; | ||||
| 				return -ETIMEDOUT; | ||||
| 			} | ||||
| 
 | ||||
| 			cmd->response[0] = readl(&host->reg->rspreg0); | ||||
|  |  | |||
|  | @ -162,7 +162,7 @@ static int uniphier_sd_check_error(struct uniphier_sd_priv *priv) | |||
| 		 * display error log since this might be a part of sequence to | ||||
| 		 * distinguish between SD and MMC. | ||||
| 		 */ | ||||
| 		return TIMEOUT; | ||||
| 		return -ETIMEDOUT; | ||||
| 	} | ||||
| 
 | ||||
| 	if (info2 & UNIPHIER_SD_INFO2_ERR_TO) { | ||||
|  |  | |||
|  | @ -40,10 +40,8 @@ static int arasan_sdhci_probe(struct udevice *dev) | |||
| 	host->version = sdhci_readw(host, SDHCI_HOST_VERSION); | ||||
| 
 | ||||
| 	caps = sdhci_readl(host, SDHCI_CAPABILITIES); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, dev->name, host->bus_width, | ||||
| 			      caps, CONFIG_ZYNQ_SDHCI_MAX_FREQ, | ||||
| 			      CONFIG_ZYNQ_SDHCI_MIN_FREQ, host->version, | ||||
| 			      host->quirks, 0); | ||||
| 	ret = sdhci_setup_cfg(&plat->cfg, host, CONFIG_ZYNQ_SDHCI_MAX_FREQ, | ||||
| 			      CONFIG_ZYNQ_SDHCI_MIN_FREQ); | ||||
| 	host->mmc = &plat->mmc; | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
|  |  | |||
|  | @ -105,7 +105,7 @@ | |||
| 
 | ||||
| /* Status Register */ | ||||
| #define DWMCI_BUSY		(1 << 9) | ||||
| #define DWMCI_FIFO_MASK		0x1ff | ||||
| #define DWMCI_FIFO_MASK		0x1fff | ||||
| #define DWMCI_FIFO_SHIFT	17 | ||||
| 
 | ||||
| /* FIFOTH Register */ | ||||
|  |  | |||
|  | @ -66,12 +66,6 @@ | |||
| #define MMC_DATA_READ		1 | ||||
| #define MMC_DATA_WRITE		2 | ||||
| 
 | ||||
| #define NO_CARD_ERR		-16 /* No SD/MMC card inserted */ | ||||
| #define UNUSABLE_ERR		-17 /* Unusable Card */ | ||||
| #define COMM_ERR		-18 /* Communications Error */ | ||||
| #define TIMEOUT			-19 | ||||
| #define SWITCH_ERR		-20 /* Card reports failure to switch mode */ | ||||
| 
 | ||||
| #define MMC_CMD_GO_IDLE_STATE		0 | ||||
| #define MMC_CMD_SEND_OP_COND		1 | ||||
| #define MMC_CMD_ALL_SEND_CID		2 | ||||
|  |  | |||
|  | @ -367,19 +367,12 @@ static inline u8 sdhci_readb(struct sdhci_host *host, int reg) | |||
|  * See msm_sdhci.c for an example. | ||||
|  * | ||||
|  * @cfg:	Configuration structure to fill in (generally &plat->mmc) | ||||
|  * @name:	Device name (normally dev->name) | ||||
|  * @buswidth:	Bus width (in bits, such as 4 or 8) | ||||
|  * @caps:	Host capabilities (MMC_MODE_...) | ||||
|  * @host:	SDHCI host structure | ||||
|  * @max_clk:	Maximum supported clock speed in HZ (0 for default) | ||||
|  * @min_clk:	Minimum supported clock speed in HZ (0 for default) | ||||
|  * @version:	Host controller version (generally read from the | ||||
|  *		SDHCI_HOST_VERSION register) | ||||
|  * @quirks:	Quick flags (SDHCI_QUIRK_...) | ||||
|  * @host_caps:	Additional host capabilities (0 if none) | ||||
|  */ | ||||
| int sdhci_setup_cfg(struct mmc_config *cfg, const char *name, int buswidth, | ||||
| 		    uint caps, u32 max_clk, u32 min_clk, uint version, | ||||
| 		    uint quirks, uint host_caps); | ||||
| int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host, | ||||
| 		    u32 max_clk, u32 min_clk); | ||||
| 
 | ||||
| /**
 | ||||
|  * sdhci_bind() - Set up a new MMC block device | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue