Skip to contentSkip to conversation

mmc: dw_mmc: remove the duplicated header file

PATCH New Jaehoon Chung 3 participants 10 messages Jul 19, 2016 – Aug 5, 2016

Subsystems (7)
lore
Share & tools
lore
#0 lore raw

PATCH 1/3 mmc: dw_mmc: remove the duplicated header file

<asm-generic/errno.h> is already included in <errno.h>. It can use <errno.h> instead of <asm-generic/errno.h>

---
 drivers/mmc/dw_mmc.c        | 1 -
 drivers/mmc/exynos_dw_mmc.c | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)
drivers/mmc/dw_mmc.c +0 -1
index 2cf7bae..8687368 100644
@@ -13,7 +13,6 @@
 #include <memalign.h>
 #include <mmc.h>
 #include <dwmmc.h>
-#include <asm-generic/errno.h>
 
 #define PAGE_SIZE 4096
 
drivers/mmc/exynos_dw_mmc.c +1 -1
index 283befc..57271f1 100644
@@ -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
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/3 mmc: dw_mmc: remove the duplicated header file

Quoted 5 lines · Jaehoon Chung

<asm-generic/errno.h> is already included in <errno.h>. It can use <errno.h> instead of <asm-generic/errno.h>

Applied on u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

Quoted 36 lines
---
 drivers/mmc/dw_mmc.c        | 1 -
 drivers/mmc/exynos_dw_mmc.c | 2 +-
 2 files changed, 1 insertion(+), 2 deletions(-)
drivers/mmc/dw_mmc.c +0 -1
index 2cf7bae..8687368 100644
@@ -13,7 +13,6 @@
 #include <memalign.h>
 #include <mmc.h>
 #include <dwmmc.h>
-#include <asm-generic/errno.h>
 
 #define PAGE_SIZE 4096
 
drivers/mmc/exynos_dw_mmc.c +1 -1
index 283befc..57271f1 100644
@@ -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
#2 lore raw

PATCH 2/3 mmc: fsl_esdhc: remove the duplcated header file

In reply to Jaehoon Chung

"mmc.h" is already included. It's duplicated.

---
 drivers/mmc/fsl_esdhc.c | 1 -
 1 file changed, 1 deletion(-)
drivers/mmc/fsl_esdhc.c +0 -1
index a865c7b..86c9a67 100644
@@ -16,7 +16,6 @@
 #include <mmc.h>
 #include <part.h>
 #include <malloc.h>
-#include <mmc.h>
 #include <fsl_esdhc.h>
 #include <fdt_support.h>
 #include <asm/io.h>
Signature · 1 line
1.9.1
#4 lore raw

PATCH 2/3 mmc: fsl_esdhc: remove the duplcated header file

In reply to Jaehoon Chung
Quoted 4 lines · Jaehoon Chung

"mmc.h" is already included. It's duplicated.

Applied on u-boot-mmc. Thanks!

Fixed the typo, when applied.

Best Regards,
Jaehoon Chung

Quoted 17 lines
---
 drivers/mmc/fsl_esdhc.c | 1 -
 1 file changed, 1 deletion(-)
drivers/mmc/fsl_esdhc.c +0 -1
index a865c7b..86c9a67 100644
@@ -16,7 +16,6 @@
 #include <mmc.h>
 #include <part.h>
 #include <malloc.h>
-#include <mmc.h>
 #include <fsl_esdhc.h>
 #include <fdt_support.h>
 #include <asm/io.h>
#6 lore raw

PATCH 3/3 mmc: use the generic error number

In reply to Jaehoon Chung

Use the generic error number instead of specific error number. If use the generic error number, it can debug more easier.

---
 drivers/mmc/arm_pl180_mmci.c |  2 +-
 drivers/mmc/bfin_sdh.c       | 10 +++++-----
 drivers/mmc/davinci_mmc.c    | 11 ++++++-----
 drivers/mmc/dw_mmc.c         |  8 ++++----
 drivers/mmc/fsl_esdhc.c      | 13 +++++++------
 drivers/mmc/ftsdc010_mci.c   | 10 +++++-----
 drivers/mmc/gen_atmel_mci.c  | 10 +++++-----
 drivers/mmc/mmc.c            | 18 +++++++++---------
 drivers/mmc/mmc_spi.c        | 11 ++++++-----
 drivers/mmc/mvebu_mmc.c      |  9 +++++----
 drivers/mmc/mxcmmc.c         |  6 +++---
 drivers/mmc/mxsmmc.c         | 18 +++++++++---------
 drivers/mmc/omap_hsmmc.c     | 18 +++++++++---------
 drivers/mmc/s3c_sdi.c        |  4 ++--
 drivers/mmc/sdhci.c          |  8 ++++----
 drivers/mmc/sh_mmcif.c       |  8 ++++----
 drivers/mmc/sh_sdhi.c        |  6 +++---
 drivers/mmc/sunxi_mmc.c      |  6 +++---
 drivers/mmc/tegra_mmc.c      |  7 ++++---
 drivers/mmc/uniphier-sd.c    |  2 +-
 include/mmc.h                |  6 ------
 21 files changed, 95 insertions(+), 96 deletions(-)
drivers/mmc/arm_pl180_mmci.c +1 -1
index 8f2694f..e64ac3c 100644
@@ -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);
drivers/mmc/bfin_sdh.c +5 -5
index 9bdfbbc..0e493da 100644
@@ -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);
 
drivers/mmc/davinci_mmc.c +6 -5
index aae00e9..b495c75 100644
@@ -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(&regs->mmcst1));
-	return COMM_ERR;
+	return -ECOMM;
 }
 
 /*
drivers/mmc/dw_mmc.c +4 -4
index 8687368..274e644 100644
@@ -158,7 +158,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;
 		}
 	}
@@ -203,7 +203,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;
 		}
 	}
 
@@ -269,7 +269,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) {
@@ -282,7 +282,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;
drivers/mmc/fsl_esdhc.c +7 -6
index 86c9a67..103b32e 100644
@@ -12,6 +12,7 @@
 #include <config.h>
 #include <common.h>
 #include <command.h>
+#include <errno.h>
 #include <hwconfig.h>
 #include <mmc.h>
 #include <part.h>
@@ -252,7 +253,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
 			if ((esdhc_read32(&regs->prsstat) &
 			    PRSSTAT_WPSPL) == 0) {
 				printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
-				return TIMEOUT;
+				return -ETIMEDOUT;
 			}
 		}
 
@@ -410,12 +411,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 	irqstat = esdhc_read32(&regs->irqstat);
 
 	if (irqstat & CMD_ERR) {
-		err = COMM_ERR;
+		err = -ECOMM;
 		goto out;
 	}
 
 	if (irqstat & IRQSTAT_CTOE) {
-		err = TIMEOUT;
+		err = -ETIMEDOUT;
 		goto out;
 	}
 
@@ -441,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;
 		}
 	}
@@ -470,12 +471,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 			irqstat = esdhc_read32(&regs->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);
drivers/mmc/ftsdc010_mci.c +5 -5
index a620678..c02740f 100644
@@ -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(&regs->status) & FTSDC010_STATUS_CARD_DETECT)
-		return NO_CARD_ERR;
+		return -ENOMEDIUM;
 
 	if (readl(&regs->status) & FTSDC010_STATUS_WRITE_PROT) {
 		printf("ftsdc010: write protected\n");
@@ -297,7 +297,7 @@ static int ftsdc010_init(struct mmc *mmc)
 	}
 	if (readl(&regs->cmd) & FTSDC010_CMD_SDC_RST) {
 		printf("ftsdc010: reset failed\n");
-		return UNUSABLE_ERR;
+		return -EOPNOTSUPP;
 	}
 
 	/* 2. enter low speed mode (400k card detection) */
drivers/mmc/gen_atmel_mci.c +5 -5
index 0474a15..69770df 100644
@@ -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);
drivers/mmc/mmc.c +9 -9
index f8e5f7a..3daa748 100644
@@ -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;
 		}
 	}
 
drivers/mmc/mmc_spi.c +6 -5
index 7547e1a..2510117 100644
@@ -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);
drivers/mmc/mvebu_mmc.c +5 -4
index 056aef5..a2792ac 100644
@@ -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;
 }
drivers/mmc/mxcmmc.c +3 -3
index 561b204..8038f90 100644
@@ -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;
drivers/mmc/mxsmmc.c +9 -9
index 9fa87d5..40f3eaa 100644
@@ -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;
drivers/mmc/omap_hsmmc.c +9 -9
index d007b56..e80ac3d 100644
@@ -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);
 
drivers/mmc/s3c_sdi.c +2 -2
index 02d1138..1b8358a 100644
@@ -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;
 	}
 
drivers/mmc/sdhci.c +4 -4
index de8d8ea..4931e68 100644
@@ -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++;
@@ -260,7 +260,7 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
 			return 0;
 		else {
 			printf("%s: Timeout for status update!\n", __func__);
-			return TIMEOUT;
+			return -ETIMEDOUT;
 		}
 	}
 
@@ -288,9 +288,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)
drivers/mmc/sh_mmcif.c +4 -4
index 001bf18..bc4b344 100644
@@ -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;
 	}
drivers/mmc/sh_sdhi.c +3 -3
index 30e538c..be6aeb1 100644
@@ -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);
drivers/mmc/sunxi_mmc.c +3 -3
index 5d8abdc..6953acc 100644
@@ -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);
drivers/mmc/tegra_mmc.c +4 -3
index c9d9432..023ba3c 100644
@@ -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);
drivers/mmc/uniphier-sd.c +1 -1
index 152e987..3c2fa6a 100644
@@ -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) {
include/mmc.h +0 -6
index 8f309f1..c59282e 100644
@@ -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
Signature · 1 line
1.9.1
#7 lore raw

PATCH 3/3 mmc: use the generic error number

Quoted 19 lines · Jaehoon Chung

Use the generic error number instead of specific error number. If use the generic error number, it can debug more easier.

---
 drivers/mmc/arm_pl180_mmci.c |  2 +-
 drivers/mmc/bfin_sdh.c       | 10 +++++-----
 drivers/mmc/davinci_mmc.c    | 11 ++++++-----
 drivers/mmc/dw_mmc.c         |  8 ++++----
 drivers/mmc/fsl_esdhc.c      | 13 +++++++------
 drivers/mmc/ftsdc010_mci.c   | 10 +++++-----
 drivers/mmc/gen_atmel_mci.c  | 10 +++++-----
 drivers/mmc/mmc.c            | 18 +++++++++---------
 drivers/mmc/mmc_spi.c        | 11 ++++++-----
 drivers/mmc/mvebu_mmc.c      |  9 +++++----
 drivers/mmc/mxcmmc.c         |  6 +++---
 drivers/mmc/mxsmmc.c         | 18 +++++++++---------
 drivers/mmc/omap_hsmmc.c     | 18 +++++++++---------
 drivers/mmc/s3c_sdi.c        |  4 ++--
Quoted 8 lines
 drivers/mmc/sdhci.c          |  8 ++++----
 drivers/mmc/sh_mmcif.c       |  8 ++++----
 drivers/mmc/sh_sdhi.c        |  6 +++---
 drivers/mmc/sunxi_mmc.c      |  6 +++---
 drivers/mmc/tegra_mmc.c      |  7 ++++---
 drivers/mmc/uniphier-sd.c    |  2 +-
 include/mmc.h                |  6 ------
 21 files changed, 95 insertions(+), 96 deletions(-)

That's great!

#8 lore raw

PATCH 3/3 mmc: use the generic error number

Quoted 29 lines · Simon Glass
Quoted 19 lines · Jaehoon Chung

Use the generic error number instead of specific error number. If use the generic error number, it can debug more easier.

---
 drivers/mmc/arm_pl180_mmci.c |  2 +-
 drivers/mmc/bfin_sdh.c       | 10 +++++-----
 drivers/mmc/davinci_mmc.c    | 11 ++++++-----
 drivers/mmc/dw_mmc.c         |  8 ++++----
 drivers/mmc/fsl_esdhc.c      | 13 +++++++------
 drivers/mmc/ftsdc010_mci.c   | 10 +++++-----
 drivers/mmc/gen_atmel_mci.c  | 10 +++++-----
 drivers/mmc/mmc.c            | 18 +++++++++---------
 drivers/mmc/mmc_spi.c        | 11 ++++++-----
 drivers/mmc/mvebu_mmc.c      |  9 +++++----
 drivers/mmc/mxcmmc.c         |  6 +++---
 drivers/mmc/mxsmmc.c         | 18 +++++++++---------
 drivers/mmc/omap_hsmmc.c     | 18 +++++++++---------
 drivers/mmc/s3c_sdi.c        |  4 ++--
Quoted 8 lines
 drivers/mmc/sdhci.c          |  8 ++++----
 drivers/mmc/sh_mmcif.c       |  8 ++++----
 drivers/mmc/sh_sdhi.c        |  6 +++---
 drivers/mmc/sunxi_mmc.c      |  6 +++---
 drivers/mmc/tegra_mmc.c      |  7 ++++---
 drivers/mmc/uniphier-sd.c    |  2 +-
 include/mmc.h                |  6 ------
 21 files changed, 95 insertions(+), 96 deletions(-)
Quoted 3 lines

That's great!

looks good to me.

#9 lore raw

PATCH 3/3 mmc: use the generic error number

In reply to Jaehoon Chung
Quoted 6 lines · Jaehoon Chung

Use the generic error number instead of specific error number. If use the generic error number, it can debug more easier.

Applied on u-boot-mmc. Thanks!

Best Regards,
Jaehoon Chung

Quoted 907 lines
---
 drivers/mmc/arm_pl180_mmci.c |  2 +-
 drivers/mmc/bfin_sdh.c       | 10 +++++-----
 drivers/mmc/davinci_mmc.c    | 11 ++++++-----
 drivers/mmc/dw_mmc.c         |  8 ++++----
 drivers/mmc/fsl_esdhc.c      | 13 +++++++------
 drivers/mmc/ftsdc010_mci.c   | 10 +++++-----
 drivers/mmc/gen_atmel_mci.c  | 10 +++++-----
 drivers/mmc/mmc.c            | 18 +++++++++---------
 drivers/mmc/mmc_spi.c        | 11 ++++++-----
 drivers/mmc/mvebu_mmc.c      |  9 +++++----
 drivers/mmc/mxcmmc.c         |  6 +++---
 drivers/mmc/mxsmmc.c         | 18 +++++++++---------
 drivers/mmc/omap_hsmmc.c     | 18 +++++++++---------
 drivers/mmc/s3c_sdi.c        |  4 ++--
 drivers/mmc/sdhci.c          |  8 ++++----
 drivers/mmc/sh_mmcif.c       |  8 ++++----
 drivers/mmc/sh_sdhi.c        |  6 +++---
 drivers/mmc/sunxi_mmc.c      |  6 +++---
 drivers/mmc/tegra_mmc.c      |  7 ++++---
 drivers/mmc/uniphier-sd.c    |  2 +-
 include/mmc.h                |  6 ------
 21 files changed, 95 insertions(+), 96 deletions(-)
drivers/mmc/arm_pl180_mmci.c +1 -1
index 8f2694f..e64ac3c 100644
@@ -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);
drivers/mmc/bfin_sdh.c +5 -5
index 9bdfbbc..0e493da 100644
@@ -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);
 
drivers/mmc/davinci_mmc.c +6 -5
index aae00e9..b495c75 100644
@@ -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(&regs->mmcst1));
-	return COMM_ERR;
+	return -ECOMM;
 }
 
 /*
drivers/mmc/dw_mmc.c +4 -4
index 8687368..274e644 100644
@@ -158,7 +158,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;
 		}
 	}
@@ -203,7 +203,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;
 		}
 	}
 
@@ -269,7 +269,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) {
@@ -282,7 +282,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;
drivers/mmc/fsl_esdhc.c +7 -6
index 86c9a67..103b32e 100644
@@ -12,6 +12,7 @@
 #include <config.h>
 #include <common.h>
 #include <command.h>
+#include <errno.h>
 #include <hwconfig.h>
 #include <mmc.h>
 #include <part.h>
@@ -252,7 +253,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
 			if ((esdhc_read32(&regs->prsstat) &
 			    PRSSTAT_WPSPL) == 0) {
 				printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
-				return TIMEOUT;
+				return -ETIMEDOUT;
 			}
 		}
 
@@ -410,12 +411,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 	irqstat = esdhc_read32(&regs->irqstat);
 
 	if (irqstat & CMD_ERR) {
-		err = COMM_ERR;
+		err = -ECOMM;
 		goto out;
 	}
 
 	if (irqstat & IRQSTAT_CTOE) {
-		err = TIMEOUT;
+		err = -ETIMEDOUT;
 		goto out;
 	}
 
@@ -441,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;
 		}
 	}
@@ -470,12 +471,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
 			irqstat = esdhc_read32(&regs->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);
drivers/mmc/ftsdc010_mci.c +5 -5
index a620678..c02740f 100644
@@ -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(&regs->status) & FTSDC010_STATUS_CARD_DETECT)
-		return NO_CARD_ERR;
+		return -ENOMEDIUM;
 
 	if (readl(&regs->status) & FTSDC010_STATUS_WRITE_PROT) {
 		printf("ftsdc010: write protected\n");
@@ -297,7 +297,7 @@ static int ftsdc010_init(struct mmc *mmc)
 	}
 	if (readl(&regs->cmd) & FTSDC010_CMD_SDC_RST) {
 		printf("ftsdc010: reset failed\n");
-		return UNUSABLE_ERR;
+		return -EOPNOTSUPP;
 	}
 
 	/* 2. enter low speed mode (400k card detection) */
drivers/mmc/gen_atmel_mci.c +5 -5
index 0474a15..69770df 100644
@@ -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);
drivers/mmc/mmc.c +9 -9
index f8e5f7a..3daa748 100644
@@ -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;
 		}
 	}
 
drivers/mmc/mmc_spi.c +6 -5
index 7547e1a..2510117 100644
@@ -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);
drivers/mmc/mvebu_mmc.c +5 -4
index 056aef5..a2792ac 100644
@@ -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;
 }
drivers/mmc/mxcmmc.c +3 -3
index 561b204..8038f90 100644
@@ -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;
drivers/mmc/mxsmmc.c +9 -9
index 9fa87d5..40f3eaa 100644
@@ -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;
drivers/mmc/omap_hsmmc.c +9 -9
index d007b56..e80ac3d 100644
@@ -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);
 
drivers/mmc/s3c_sdi.c +2 -2
index 02d1138..1b8358a 100644
@@ -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;
 	}
 
drivers/mmc/sdhci.c +4 -4
index de8d8ea..4931e68 100644
@@ -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++;
@@ -260,7 +260,7 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
 			return 0;
 		else {
 			printf("%s: Timeout for status update!\n", __func__);
-			return TIMEOUT;
+			return -ETIMEDOUT;
 		}
 	}
 
@@ -288,9 +288,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)
drivers/mmc/sh_mmcif.c +4 -4
index 001bf18..bc4b344 100644
@@ -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;
 	}
drivers/mmc/sh_sdhi.c +3 -3
index 30e538c..be6aeb1 100644
@@ -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);
drivers/mmc/sunxi_mmc.c +3 -3
index 5d8abdc..6953acc 100644
@@ -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);
drivers/mmc/tegra_mmc.c +4 -3
index c9d9432..023ba3c 100644
@@ -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);
drivers/mmc/uniphier-sd.c +1 -1
index 152e987..3c2fa6a 100644
@@ -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) {
include/mmc.h +0 -6
index 8f309f1..c59282e 100644
@@ -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