[patch v4 15/17] MMC: S3C24XX: Update error debugging.
From: Ben Dooks
Date: Mon Jun 30 2008 - 11:30:41 EST
Add better debugging to show where errors are being
generated, as some error codes can come from several
different code paths.
Also fix the error return path from s3cmci_setup_data()
to return the error it returned to the request.
Signed-off-by: Ben Dooks <ben-linux@xxxxxxxxx>
Index: linux-2.6.26-rc8-next20080627/drivers/mmc/host/s3cmci.c
===================================================================
--- linux-2.6.26-rc8-next20080627.orig/drivers/mmc/host/s3cmci.c 2008-06-30 16:08:38.000000000 +0100
+++ linux-2.6.26-rc8-next20080627/drivers/mmc/host/s3cmci.c 2008-06-30 16:08:52.000000000 +0100
@@ -451,6 +451,7 @@ static irqreturn_t s3cmci_irq(int irq, v
}
if (mci_csta & S3C2410_SDICMDSTAT_CMDTIMEOUT) {
+ dbg(host, dbg_err, "CMDSTAT: error CMDTIMEOUT\n");
cmd->error = -ETIMEDOUT;
host->status = "error: command timeout";
goto fail_transfer;
@@ -506,12 +507,14 @@ static irqreturn_t s3cmci_irq(int irq, v
/* Check for FIFO failure */
if (host->is2440) {
if (mci_fsta & S3C2440_SDIFSTA_FIFOFAIL) {
+ dbg(host, dbg_err, "FIFO failure\n");
host->mrq->data->error = -EILSEQ;
host->status = "error: 2440 fifo failure";
goto fail_transfer;
}
} else {
if (mci_dsta & S3C2410_SDIDSTA_FIFOFAIL) {
+ dbg(host, dbg_err, "FIFO failure\n");
cmd->data->error = -EILSEQ;
host->status = "error: fifo failure";
goto fail_transfer;
@@ -519,18 +522,21 @@ static irqreturn_t s3cmci_irq(int irq, v
}
if (mci_dsta & S3C2410_SDIDSTA_RXCRCFAIL) {
+ dbg(host, dbg_err, "bad data crc (outgoing)\n");
cmd->data->error = -EILSEQ;
host->status = "error: bad data crc (outgoing)";
goto fail_transfer;
}
if (mci_dsta & S3C2410_SDIDSTA_CRCFAIL) {
+ dbg(host, dbg_err, "bad data crc (incoming)\n");
cmd->data->error = -EILSEQ;
host->status = "error: bad data crc (incoming)";
goto fail_transfer;
}
if (mci_dsta & S3C2410_SDIDSTA_DATATIMEOUT) {
+ dbg(host, dbg_err, "data timeout\n");
cmd->data->error = -ETIMEDOUT;
host->status = "error: data timeout";
goto fail_transfer;
@@ -957,8 +963,9 @@ static void s3cmci_send_request(struct m
host->dcnt++;
if (res) {
- cmd->error = -EINVAL;
- cmd->data->error = -EINVAL;
+ dbg(host, dbg_err, "setup data error %d\n", res);
+ cmd->error = res;
+ cmd->data->error = res;
mmc_request_done(mmc, mrq);
return;
@@ -970,6 +977,7 @@ static void s3cmci_send_request(struct m
res = s3cmci_prepare_pio(host, cmd->data);
if (res) {
+ dbg(host, dbg_err, "data prepare error %d\n", res);
cmd->error = res;
cmd->data->error = res;
--
Ben (ben@xxxxxxxxx, http://www.fluff.org/)
'a smiley only costs 4 bytes'
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/