diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-11 11:04:13 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-12-14 15:29:32 +0100 |
commit | 4b9a26cc0c435d4433a53feb19cf37dfbc2ef79a (patch) | |
tree | 099179d4725bc460eec4994ed273c25077201b9d /drivers/mci | |
parent | 1e85c6d5d36af236402b0140bd932cb575165ce0 (diff) | |
download | barebox-4b9a26cc0c435d4433a53feb19cf37dfbc2ef79a.tar.gz barebox-4b9a26cc0c435d4433a53feb19cf37dfbc2ef79a.tar.xz |
mci: omap: Improve error handling
Return proper error code from read/write functions rather than '1'. Also
add messages printing the status register to give a glue what went
wrong.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci')
-rw-r--r-- | drivers/mci/omap_hsmmc.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/mci/omap_hsmmc.c b/drivers/mci/omap_hsmmc.c index cbc69e4083..9e7ecabf85 100644 --- a/drivers/mci/omap_hsmmc.c +++ b/drivers/mci/omap_hsmmc.c @@ -316,13 +316,16 @@ static int mmc_read_data(struct omap_hsmmc *hsmmc, char *buf, unsigned int size) do { mmc_stat = readl(&mmc_base->stat); if (is_timeout(start, SECOND)) { - dev_dbg(hsmmc->dev, "timedout waiting for status!\n"); + dev_err(hsmmc->dev, "timedout waiting for status!\n"); return -ETIMEDOUT; } } while (mmc_stat == 0); - if ((mmc_stat & ERRI_MASK) != 0) - return 1; + if ((mmc_stat & ERRI_MASK) != 0) { + dev_err(hsmmc->dev, "Error while reading data. status: 0x%08x\n", + mmc_stat); + return -EIO; + } if (mmc_stat & BRR_MASK) { unsigned int k; @@ -373,8 +376,11 @@ static int mmc_write_data(struct omap_hsmmc *hsmmc, const char *buf, unsigned in } } while (mmc_stat == 0); - if ((mmc_stat & ERRI_MASK) != 0) - return 1; + if ((mmc_stat & ERRI_MASK) != 0) { + dev_err(hsmmc->dev, "Error while reading data. status: 0x%08x\n", + mmc_stat); + return -EIO; + } if (mmc_stat & BWR_MASK) { unsigned int k; |