[PATCH v2 1/7] mmc: mxs-mmc: add mmc host driver for i.MX23/28
From: Russell King - ARM Linux <hidden>
Date: 2011-02-14 16:59:59
Also in:
linux-mmc
From: Russell King - ARM Linux <hidden>
Date: 2011-02-14 16:59:59
Also in:
linux-mmc
On Mon, Feb 14, 2011 at 10:32:20AM +0800, Shawn Guo wrote:
+ switch (mmc_resp_type(cmd)) {
+ case MMC_RSP_NONE:
+ break;
+ case MMC_RSP_R1:
+ case MMC_RSP_R1B:
+ case MMC_RSP_R3:
+ cmd->resp[0] = readl(host->base + HW_SSP_SDRESP0);
+ break;
+ case MMC_RSP_R2:
+ cmd->resp[3] = readl(host->base + HW_SSP_SDRESP0);
+ cmd->resp[2] = readl(host->base + HW_SSP_SDRESP1);
+ cmd->resp[1] = readl(host->base + HW_SSP_SDRESP2);
+ cmd->resp[0] = readl(host->base + HW_SSP_SDRESP3);You really should be testing for MMC_RSP_PRESENT and MMC_RSP_136 here. The response types are made up of a bitfield which allows you to detect what's required rather than having to decode the response type itself.
+ else if (stat & BM_SSP_CTRL1_FIFO_UNDERRUN_IRQ) + data->error = -ENODATA; + else if (stat & BM_SSP_CTRL1_FIFO_OVERRUN_IRQ) + data->error = -EOVERFLOW;
Both of these have a common error code - -EIO.