Commit 915ffa52 authored by Jaehoon Chung's avatar Jaehoon Chung

mmc: use the generic error number

Use the generic error number instead of specific error number.
If use the generic error number, it can debug more easier.
Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
Reviewed-by: default avatarMinkyu Kang <mk7.kang@samsung.com>
parent 70f86280
...@@ -37,7 +37,7 @@ static int wait_for_command_end(struct mmc *dev, struct mmc_cmd *cmd) ...@@ -37,7 +37,7 @@ static int wait_for_command_end(struct mmc *dev, struct mmc_cmd *cmd)
writel(statusmask, &host->base->status_clear); writel(statusmask, &host->base->status_clear);
if (hoststatus & SDI_STA_CTIMEOUT) { if (hoststatus & SDI_STA_CTIMEOUT) {
debug("CMD%d time out\n", cmd->cmdidx); debug("CMD%d time out\n", cmd->cmdidx);
return TIMEOUT; return -ETIMEDOUT;
} else if ((hoststatus & SDI_STA_CCRCFAIL) && } else if ((hoststatus & SDI_STA_CCRCFAIL) &&
(cmd->resp_type & MMC_RSP_CRC)) { (cmd->resp_type & MMC_RSP_CRC)) {
printf("CMD%d CRC error\n", cmd->cmdidx); printf("CMD%d CRC error\n", cmd->cmdidx);
......
...@@ -109,9 +109,9 @@ sdh_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd) ...@@ -109,9 +109,9 @@ sdh_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd)
} }
if (status & CMD_TIME_OUT) if (status & CMD_TIME_OUT)
ret = TIMEOUT; ret = -ETIMEDOUT;
else if (status & CMD_CRC_FAIL && flags & MMC_RSP_CRC) else if (status & CMD_CRC_FAIL && flags & MMC_RSP_CRC)
ret = COMM_ERR; ret = -ECOMM;
else else
ret = 0; ret = 0;
...@@ -136,7 +136,7 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data) ...@@ -136,7 +136,7 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
/* Don't support write yet. */ /* Don't support write yet. */
if (data->flags & MMC_DATA_WRITE) if (data->flags & MMC_DATA_WRITE)
return UNUSABLE_ERR; return -EOPNOTSUPP;
#ifndef RSI_BLKSZ #ifndef RSI_BLKSZ
data_ctl |= ((ffs(data->blocksize) - 1) << 4); data_ctl |= ((ffs(data->blocksize) - 1) << 4);
#else #else
...@@ -194,10 +194,10 @@ static int bfin_sdh_request(struct mmc *mmc, struct mmc_cmd *cmd, ...@@ -194,10 +194,10 @@ static int bfin_sdh_request(struct mmc *mmc, struct mmc_cmd *cmd,
if (status & DAT_TIME_OUT) { if (status & DAT_TIME_OUT) {
bfin_write_SDH_STATUS_CLR(DAT_TIMEOUT_STAT); bfin_write_SDH_STATUS_CLR(DAT_TIMEOUT_STAT);
ret |= TIMEOUT; ret = -ETIMEDOUT;
} else if (status & (DAT_CRC_FAIL | RX_OVERRUN)) { } else if (status & (DAT_CRC_FAIL | RX_OVERRUN)) {
bfin_write_SDH_STATUS_CLR(DAT_CRC_FAIL_STAT | RX_OVERRUN_STAT); bfin_write_SDH_STATUS_CLR(DAT_CRC_FAIL_STAT | RX_OVERRUN_STAT);
ret |= COMM_ERR; ret = -ECOMM;
} else } else
bfin_write_SDH_STATUS_CLR(DAT_BLK_END_STAT | DAT_END_STAT); bfin_write_SDH_STATUS_CLR(DAT_BLK_END_STAT | DAT_END_STAT);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <config.h> #include <config.h>
#include <common.h> #include <common.h>
#include <command.h> #include <command.h>
#include <errno.h>
#include <mmc.h> #include <mmc.h>
#include <part.h> #include <part.h>
#include <malloc.h> #include <malloc.h>
...@@ -66,7 +67,7 @@ dmmc_wait_fifo_status(volatile struct davinci_mmc_regs *regs, uint status) ...@@ -66,7 +67,7 @@ dmmc_wait_fifo_status(volatile struct davinci_mmc_regs *regs, uint status)
udelay(100); udelay(100);
if (wdog == 0) if (wdog == 0)
return COMM_ERR; return -ECOMM;
return 0; return 0;
} }
...@@ -80,7 +81,7 @@ static int dmmc_busy_wait(volatile struct davinci_mmc_regs *regs) ...@@ -80,7 +81,7 @@ static int dmmc_busy_wait(volatile struct davinci_mmc_regs *regs)
udelay(10); udelay(10);
if (wdog == 0) if (wdog == 0)
return COMM_ERR; return -ECOMM;
return 0; return 0;
} }
...@@ -99,7 +100,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, ...@@ -99,7 +100,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs,
return 0; return 0;
} else if (mmcstatus & st_error) { } else if (mmcstatus & st_error) {
if (mmcstatus & MMCST0_TOUTRS) if (mmcstatus & MMCST0_TOUTRS)
return TIMEOUT; return -ETIMEDOUT;
printf("[ ST0 ERROR %x]\n", mmcstatus); printf("[ ST0 ERROR %x]\n", mmcstatus);
/* /*
* Ignore CRC errors as some MMC cards fail to * Ignore CRC errors as some MMC cards fail to
...@@ -107,7 +108,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, ...@@ -107,7 +108,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs,
*/ */
if (mmcstatus & MMCST0_CRCRS) if (mmcstatus & MMCST0_CRCRS)
return 0; return 0;
return COMM_ERR; return -ECOMM;
} }
udelay(10); udelay(10);
...@@ -116,7 +117,7 @@ static int dmmc_check_status(volatile struct davinci_mmc_regs *regs, ...@@ -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, printf("Status %x Timeout ST0:%x ST1:%x\n", st_ready, mmcstatus,
get_val(&regs->mmcst1)); get_val(&regs->mmcst1));
return COMM_ERR; return -ECOMM;
} }
/* /*
......
...@@ -158,7 +158,7 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data) ...@@ -158,7 +158,7 @@ static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
if (get_timer(start) > timeout) { if (get_timer(start) > timeout) {
debug("%s: Timeout waiting for data!\n", debug("%s: Timeout waiting for data!\n",
__func__); __func__);
ret = TIMEOUT; ret = -ETIMEDOUT;
break; break;
} }
} }
...@@ -203,7 +203,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, ...@@ -203,7 +203,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
while (dwmci_readl(host, DWMCI_STATUS) & DWMCI_BUSY) { while (dwmci_readl(host, DWMCI_STATUS) & DWMCI_BUSY) {
if (get_timer(start) > timeout) { if (get_timer(start) > timeout) {
debug("%s: Timeout on data busy\n", __func__); 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, ...@@ -269,7 +269,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
if (i == retry) { if (i == retry) {
debug("%s: Timeout.\n", __func__); debug("%s: Timeout.\n", __func__);
return TIMEOUT; return -ETIMEDOUT;
} }
if (mask & DWMCI_INTMSK_RTO) { if (mask & DWMCI_INTMSK_RTO) {
...@@ -282,7 +282,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, ...@@ -282,7 +282,7 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
* CMD8, please keep that in mind. * CMD8, please keep that in mind.
*/ */
debug("%s: Response Timeout.\n", __func__); debug("%s: Response Timeout.\n", __func__);
return TIMEOUT; return -ETIMEDOUT;
} else if (mask & DWMCI_INTMSK_RE) { } else if (mask & DWMCI_INTMSK_RE) {
debug("%s: Response Error.\n", __func__); debug("%s: Response Error.\n", __func__);
return -EIO; return -EIO;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <config.h> #include <config.h>
#include <common.h> #include <common.h>
#include <command.h> #include <command.h>
#include <errno.h>
#include <hwconfig.h> #include <hwconfig.h>
#include <mmc.h> #include <mmc.h>
#include <part.h> #include <part.h>
...@@ -252,7 +253,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data) ...@@ -252,7 +253,7 @@ static int esdhc_setup_data(struct mmc *mmc, struct mmc_data *data)
if ((esdhc_read32(&regs->prsstat) & if ((esdhc_read32(&regs->prsstat) &
PRSSTAT_WPSPL) == 0) { PRSSTAT_WPSPL) == 0) {
printf("\nThe SD card is locked. Can not write to a locked card.\n\n"); 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) ...@@ -410,12 +411,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
irqstat = esdhc_read32(&regs->irqstat); irqstat = esdhc_read32(&regs->irqstat);
if (irqstat & CMD_ERR) { if (irqstat & CMD_ERR) {
err = COMM_ERR; err = -ECOMM;
goto out; goto out;
} }
if (irqstat & IRQSTAT_CTOE) { if (irqstat & IRQSTAT_CTOE) {
err = TIMEOUT; err = -ETIMEDOUT;
goto out; goto out;
} }
...@@ -441,7 +442,7 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -441,7 +442,7 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (timeout <= 0) { if (timeout <= 0) {
printf("Timeout waiting for DAT0 to go high!\n"); printf("Timeout waiting for DAT0 to go high!\n");
err = TIMEOUT; err = -ETIMEDOUT;
goto out; goto out;
} }
} }
...@@ -470,12 +471,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -470,12 +471,12 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
irqstat = esdhc_read32(&regs->irqstat); irqstat = esdhc_read32(&regs->irqstat);
if (irqstat & IRQSTAT_DTOE) { if (irqstat & IRQSTAT_DTOE) {
err = TIMEOUT; err = -ETIMEDOUT;
goto out; goto out;
} }
if (irqstat & DATA_ERR) { if (irqstat & DATA_ERR) {
err = COMM_ERR; err = -ECOMM;
goto out; goto out;
} }
} while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE); } while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE);
......
...@@ -34,7 +34,7 @@ static inline int ftsdc010_send_cmd(struct mmc *mmc, struct mmc_cmd *mmc_cmd) ...@@ -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_chip *chip = mmc->priv;
struct ftsdc010_mmc __iomem *regs = chip->regs; struct ftsdc010_mmc __iomem *regs = chip->regs;
int ret = TIMEOUT; int ret = -ETIMEDOUT;
uint32_t ts, st; uint32_t ts, st;
uint32_t cmd = FTSDC010_CMD_IDX(mmc_cmd->cmdidx); uint32_t cmd = FTSDC010_CMD_IDX(mmc_cmd->cmdidx);
uint32_t arg = mmc_cmd->cmdarg; uint32_t arg = mmc_cmd->cmdarg;
...@@ -126,7 +126,7 @@ static void ftsdc010_clkset(struct mmc *mmc, uint32_t rate) ...@@ -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) static int ftsdc010_wait(struct ftsdc010_mmc __iomem *regs, uint32_t mask)
{ {
int ret = TIMEOUT; int ret = -ETIMEDOUT;
uint32_t st, ts; uint32_t st, ts;
for (ts = get_timer(0); get_timer(ts) < CFG_CMD_TIMEOUT; ) { 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) ...@@ -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, static int ftsdc010_request(struct mmc *mmc, struct mmc_cmd *cmd,
struct mmc_data *data) struct mmc_data *data)
{ {
int ret = UNUSABLE_ERR; int ret = -EOPNOTSUPP;
uint32_t len = 0; uint32_t len = 0;
struct ftsdc010_chip *chip = mmc->priv; struct ftsdc010_chip *chip = mmc->priv;
struct ftsdc010_mmc __iomem *regs = chip->regs; struct ftsdc010_mmc __iomem *regs = chip->regs;
...@@ -279,7 +279,7 @@ static int ftsdc010_init(struct mmc *mmc) ...@@ -279,7 +279,7 @@ static int ftsdc010_init(struct mmc *mmc)
uint32_t ts; uint32_t ts;
if (readl(&regs->status) & FTSDC010_STATUS_CARD_DETECT) if (readl(&regs->status) & FTSDC010_STATUS_CARD_DETECT)
return NO_CARD_ERR; return -ENOMEDIUM;
if (readl(&regs->status) & FTSDC010_STATUS_WRITE_PROT) { if (readl(&regs->status) & FTSDC010_STATUS_WRITE_PROT) {
printf("ftsdc010: write protected\n"); printf("ftsdc010: write protected\n");
...@@ -297,7 +297,7 @@ static int ftsdc010_init(struct mmc *mmc) ...@@ -297,7 +297,7 @@ static int ftsdc010_init(struct mmc *mmc)
} }
if (readl(&regs->cmd) & FTSDC010_CMD_SDC_RST) { if (readl(&regs->cmd) & FTSDC010_CMD_SDC_RST) {
printf("ftsdc010: reset failed\n"); printf("ftsdc010: reset failed\n");
return UNUSABLE_ERR; return -EOPNOTSUPP;
} }
/* 2. enter low speed mode (400k card detection) */ /* 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) ...@@ -213,7 +213,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (!priv->initialized) { if (!priv->initialized) {
puts ("MCI not initialized!\n"); puts ("MCI not initialized!\n");
return COMM_ERR; return -ECOMM;
} }
/* Figure out the transfer arguments */ /* Figure out the transfer arguments */
...@@ -238,10 +238,10 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -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)) { if ((status & error_flags) & MMCI_BIT(RTOE)) {
dump_cmd(cmdr, cmd->cmdarg, status, "Command Time Out"); dump_cmd(cmdr, cmd->cmdarg, status, "Command Time Out");
return TIMEOUT; return -ETIMEDOUT;
} else if (status & error_flags) { } else if (status & error_flags) {
dump_cmd(cmdr, cmd->cmdarg, status, "Command Failed"); dump_cmd(cmdr, cmd->cmdarg, status, "Command Failed");
return COMM_ERR; return -ECOMM;
} }
/* Copy the response to the response buffer */ /* 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) ...@@ -303,7 +303,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (status) { if (status) {
dump_cmd(cmdr, cmd->cmdarg, status, dump_cmd(cmdr, cmd->cmdarg, status,
"Data Transfer Failed"); "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) ...@@ -315,7 +315,7 @@ mci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (status & error_flags) { if (status & error_flags) {
dump_cmd(cmdr, cmd->cmdarg, status, dump_cmd(cmdr, cmd->cmdarg, status,
"DTIP Wait Failed"); "DTIP Wait Failed");
return COMM_ERR; return -ECOMM;
} }
i++; i++;
} while ((status & MMCI_BIT(DTIP)) && i < 10000); } while ((status & MMCI_BIT(DTIP)) && i < 10000);
......
...@@ -152,7 +152,7 @@ int mmc_send_status(struct mmc *mmc, int timeout) ...@@ -152,7 +152,7 @@ int mmc_send_status(struct mmc *mmc, int timeout)
printf("Status Error: 0x%08X\n", printf("Status Error: 0x%08X\n",
cmd.response[0]); cmd.response[0]);
#endif #endif
return COMM_ERR; return -ECOMM;
} }
} else if (--retries < 0) } else if (--retries < 0)
return err; return err;
...@@ -168,7 +168,7 @@ int mmc_send_status(struct mmc *mmc, int timeout) ...@@ -168,7 +168,7 @@ int mmc_send_status(struct mmc *mmc, int timeout)
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
printf("Timeout waiting card ready\n"); printf("Timeout waiting card ready\n");
#endif #endif
return TIMEOUT; return -ETIMEDOUT;
} }
return 0; return 0;
...@@ -344,7 +344,7 @@ static int sd_send_op_cond(struct mmc *mmc) ...@@ -344,7 +344,7 @@ static int sd_send_op_cond(struct mmc *mmc)
break; break;
if (timeout-- <= 0) if (timeout-- <= 0)
return UNUSABLE_ERR; return -EOPNOTSUPP;
udelay(1000); udelay(1000);
} }
...@@ -430,7 +430,7 @@ static int mmc_complete_op_cond(struct mmc *mmc) ...@@ -430,7 +430,7 @@ static int mmc_complete_op_cond(struct mmc *mmc)
if (mmc->ocr & OCR_BUSY) if (mmc->ocr & OCR_BUSY)
break; break;
if (get_timer(start) > timeout) if (get_timer(start) > timeout)
return UNUSABLE_ERR; return -EOPNOTSUPP;
udelay(100); udelay(100);
} }
} }
...@@ -1429,7 +1429,7 @@ static int mmc_startup(struct mmc *mmc) ...@@ -1429,7 +1429,7 @@ static int mmc_startup(struct mmc *mmc)
&test_csd[EXT_CSD_SEC_CNT], 4) == 0) &test_csd[EXT_CSD_SEC_CNT], 4) == 0)
break; break;
else else
err = SWITCH_ERR; err = -EBADMSG;
} }
if (err) if (err)
...@@ -1499,7 +1499,7 @@ static int mmc_send_if_cond(struct mmc *mmc) ...@@ -1499,7 +1499,7 @@ static int mmc_send_if_cond(struct mmc *mmc)
return err; return err;
if ((cmd.response[0] & 0xff) != 0xaa) if ((cmd.response[0] & 0xff) != 0xaa)
return UNUSABLE_ERR; return -EOPNOTSUPP;
else else
mmc->version = SD_VERSION_2; mmc->version = SD_VERSION_2;
...@@ -1526,7 +1526,7 @@ int mmc_start_init(struct mmc *mmc) ...@@ -1526,7 +1526,7 @@ int mmc_start_init(struct mmc *mmc)
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
printf("MMC: no card present\n"); printf("MMC: no card present\n");
#endif #endif
return NO_CARD_ERR; return -ENOMEDIUM;
} }
if (mmc->has_init) if (mmc->has_init)
...@@ -1565,14 +1565,14 @@ int mmc_start_init(struct mmc *mmc) ...@@ -1565,14 +1565,14 @@ int mmc_start_init(struct mmc *mmc)
err = sd_send_op_cond(mmc); err = sd_send_op_cond(mmc);
/* If the command timed out, we check for an MMC card */ /* If the command timed out, we check for an MMC card */
if (err == TIMEOUT) { if (err == -ETIMEDOUT) {
err = mmc_send_op_cond(mmc); err = mmc_send_op_cond(mmc);
if (err) { if (err) {
#if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT) #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_LIBCOMMON_SUPPORT)
printf("Card did not respond to voltage select!\n"); printf("Card did not respond to voltage select!\n");
#endif #endif
return UNUSABLE_ERR; return -EOPNOTSUPP;
} }
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* Licensed under the GPL-2 or later. * Licensed under the GPL-2 or later.
*/ */
#include <common.h> #include <common.h>
#include <errno.h>
#include <malloc.h> #include <malloc.h>
#include <part.h> #include <part.h>
#include <mmc.h> #include <mmc.h>
...@@ -182,13 +183,13 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd, ...@@ -182,13 +183,13 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd,
spi_cs_activate(spi); spi_cs_activate(spi);
r1 = mmc_spi_sendcmd(mmc, cmd->cmdidx, cmd->cmdarg); r1 = mmc_spi_sendcmd(mmc, cmd->cmdidx, cmd->cmdarg);
if (r1 == 0xff) { /* no response */ if (r1 == 0xff) { /* no response */
ret = NO_CARD_ERR; ret = -ENOMEDIUM;
goto done; goto done;
} else if (r1 & R1_SPI_COM_CRC) { } else if (r1 & R1_SPI_COM_CRC) {
ret = COMM_ERR; ret = -ECOMM;
goto done; goto done;
} else if (r1 & ~R1_SPI_IDLE) { /* other errors */ } else if (r1 & ~R1_SPI_IDLE) { /* other errors */
ret = TIMEOUT; ret = -ETIMEDOUT;
goto done; goto done;
} else if (cmd->resp_type == MMC_RSP_R2) { } else if (cmd->resp_type == MMC_RSP_R2) {
r1 = mmc_spi_readdata(mmc, cmd->response, 1, 16); 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, ...@@ -225,9 +226,9 @@ static int mmc_spi_request(struct mmc *mmc, struct mmc_cmd *cmd,
data->blocks, data->blocksize, data->blocks, data->blocksize,
(cmd->cmdidx == MMC_CMD_WRITE_MULTIPLE_BLOCK)); (cmd->cmdidx == MMC_CMD_WRITE_MULTIPLE_BLOCK));
if (r1 & R1_SPI_COM_CRC) if (r1 & R1_SPI_COM_CRC)
ret = COMM_ERR; ret = -ECOMM;
else if (r1) /* other errors */ else if (r1) /* other errors */
ret = TIMEOUT; ret = -ETIMEDOUT;
} }
done: done:
spi_cs_deactivate(spi); spi_cs_deactivate(spi);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <common.h> #include <common.h>
#include <errno.h>
#include <malloc.h> #include <malloc.h>
#include <part.h> #include <part.h>
#include <mmc.h> #include <mmc.h>
...@@ -172,15 +173,15 @@ static int mvebu_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, ...@@ -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)) { (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT)) {
debug("%s: command READ timed out\n", debug("%s: command READ timed out\n",
DRIVER_NAME); DRIVER_NAME);
return TIMEOUT; return -ETIMEDOUT;
} }
debug("%s: command READ error\n", DRIVER_NAME); debug("%s: command READ error\n", DRIVER_NAME);
return COMM_ERR; return -ECOMM;
} }
if ((get_timer(0) - start) > TIMEOUT_DELAY) { if ((get_timer(0) - start) > TIMEOUT_DELAY) {
debug("%s: command timed out\n", DRIVER_NAME); 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, ...@@ -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) & if (mvebu_mmc_read(SDIO_ERR_INTR_STATUS) &
(SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT)) (SDIO_ERR_CMD_TIMEOUT | SDIO_ERR_DATA_TIMEOUT))
return TIMEOUT; return -ETIMEDOUT;
return 0; return 0;
} }
......
...@@ -211,11 +211,11 @@ static int mxcmci_finish_data(struct mxcmci_host *host, unsigned int stat) ...@@ -211,11 +211,11 @@ static int mxcmci_finish_data(struct mxcmci_host *host, unsigned int stat)
} else if (stat & STATUS_CRC_WRITE_ERR) { } else if (stat & STATUS_CRC_WRITE_ERR) {
u32 err_code = (stat >> 9) & 0x3; u32 err_code = (stat >> 9) & 0x3;
if (err_code == 2) /* No CRC response */ if (err_code == 2) /* No CRC response */
data_error = TIMEOUT; data_error = -ETIMEDOUT;
else else
data_error = -EILSEQ; data_error = -EILSEQ;
} else if (stat & STATUS_TIME_OUT_READ) { } else if (stat & STATUS_TIME_OUT_READ) {
data_error = TIMEOUT; data_error = -ETIMEDOUT;
} else { } else {
data_error = -EIO; data_error = -EIO;
} }
...@@ -238,7 +238,7 @@ static int mxcmci_read_response(struct mxcmci_host *host, unsigned int stat) ...@@ -238,7 +238,7 @@ static int mxcmci_read_response(struct mxcmci_host *host, unsigned int stat)
if (stat & STATUS_TIME_OUT_RESP) { if (stat & STATUS_TIME_OUT_RESP) {
printf("CMD TIMEOUT\n"); printf("CMD TIMEOUT\n");
return TIMEOUT; return -ETIMEDOUT;
} else if (stat & STATUS_RESP_CRC_ERR && cmd->resp_type & MMC_RSP_CRC) { } else if (stat & STATUS_RESP_CRC_ERR && cmd->resp_type & MMC_RSP_CRC) {
printf("cmd crc error\n"); printf("cmd crc error\n");
return -EILSEQ; return -EILSEQ;
......
...@@ -84,7 +84,7 @@ static int mxsmmc_send_cmd_pio(struct mxsmmc_priv *priv, struct mmc_data *data) ...@@ -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) 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) ...@@ -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); mxs_dma_desc_append(dmach, priv->desc);
if (mxs_dma_go(dmach)) { if (mxs_dma_go(dmach)) {
bounce_buffer_stop(&bbstate); bounce_buffer_stop(&bbstate);
return COMM_ERR; return -ECOMM;
} }
bounce_buffer_stop(&bbstate); bounce_buffer_stop(&bbstate);
...@@ -158,13 +158,13 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -158,13 +158,13 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (!timeout) { if (!timeout) {
printf("MMC%d: Bus busy timeout!\n", mmc->block_dev.devnum); printf("MMC%d: Bus busy timeout!\n", mmc->block_dev.devnum);
return TIMEOUT; return -ETIMEDOUT;
} }
/* See if card is present */ /* See if card is present */
if (!mxsmmc_cd(priv)) { if (!mxsmmc_cd(priv)) {
printf("MMC%d: No card detected!\n", mmc->block_dev.devnum); printf("MMC%d: No card detected!\n", mmc->block_dev.devnum);
return NO_CARD_ERR; return -ENOMEDIUM;
} }
/* Start building CTRL0 contents */ /* Start building CTRL0 contents */
...@@ -203,7 +203,7 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -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)) { priv->mmc_is_wp(mmc->block_dev.devnum)) {
printf("MMC%d: Can not write a locked card!\n", printf("MMC%d: Can not write a locked card!\n",
mmc->block_dev.devnum); mmc->block_dev.devnum);
return UNUSABLE_ERR; return -EOPNOTSUPP;
} }
ctrl0 |= SSP_CTRL0_DATA_XFER; ctrl0 |= SSP_CTRL0_DATA_XFER;
...@@ -244,21 +244,21 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) ...@@ -244,21 +244,21 @@ mxsmmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
if (!timeout) { if (!timeout) {
printf("MMC%d: Command %d busy\n", printf("MMC%d: Command %d busy\n",
mmc->block_dev.devnum, cmd->cmdidx); mmc->block_dev.devnum, cmd->cmdidx);
return TIMEOUT; return -ETIMEDOUT;
} }