Hi Chris, On Sun, Feb 13, 2011 at 07:26:09PM +0000, Chris Ball wrote: > Hi Shawn, > > On Mon, Feb 14, 2011 at 10:32:20AM +0800, Shawn Guo wrote: > > This adds the mmc host driver for Freescale MXS-based SoC i.MX23/28. > > The driver calls into mxs-dma via generic dmaengine api for both pio > > and data transfer. > > > > Signed-off-by: Shawn Guo <shawn.guo@xxxxxxxxxxxxx> > > Please add a Reviewed-by: from Arnd and a Tested-by: from Lothar. > Could you add a MODULE_AUTHOR() field, too? > OK. It will be - MODULE_AUTHOR("Freescale Semiconductor"); > I could take the drivers/mmc files through the MMC tree and have you > submit the architecture patches separately, or you can send everything > through an ARM tree with my ACK -- whichever you prefer. > I will send this single patch in v3 with new comments/concerns addressed for you to pick up on MMC tree, and follow up others with Sascha. > Here's an indentation patch: > Thanks. Regards, Shawn > diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c > index f359093..3a609f9 100644 > --- a/drivers/mmc/host/mxs-mmc.c > +++ b/drivers/mmc/host/mxs-mmc.c > @@ -127,13 +127,13 @@ > #define BF_SSP(value, field) (((value) << BP_SSP_##field) & BM_SSP_##field) > > #define MXS_MMC_IRQ_BITS (BM_SSP_CTRL1_SDIO_IRQ | \ > - BM_SSP_CTRL1_RESP_ERR_IRQ | \ > - BM_SSP_CTRL1_RESP_TIMEOUT_IRQ | \ > - BM_SSP_CTRL1_DATA_TIMEOUT_IRQ | \ > - BM_SSP_CTRL1_DATA_CRC_IRQ | \ > - BM_SSP_CTRL1_FIFO_UNDERRUN_IRQ | \ > - BM_SSP_CTRL1_RECV_TIMEOUT_IRQ | \ > - BM_SSP_CTRL1_FIFO_OVERRUN_IRQ) > + BM_SSP_CTRL1_RESP_ERR_IRQ | \ > + BM_SSP_CTRL1_RESP_TIMEOUT_IRQ | \ > + BM_SSP_CTRL1_DATA_TIMEOUT_IRQ | \ > + BM_SSP_CTRL1_DATA_CRC_IRQ | \ > + BM_SSP_CTRL1_FIFO_UNDERRUN_IRQ | \ > + BM_SSP_CTRL1_RECV_TIMEOUT_IRQ | \ > + BM_SSP_CTRL1_FIFO_OVERRUN_IRQ) > > #define SSP_PIO_NUM 3 > > @@ -165,7 +165,7 @@ static int mxs_mmc_get_ro(struct mmc_host *mmc) > { > struct mxs_mmc_host *host = mmc_priv(mmc); > struct mxs_mmc_platform_data *pdata = > - mmc_dev(host->mmc)->platform_data; > + mmc_dev(host->mmc)->platform_data; > > if (!pdata) > return -EFAULT; > @@ -181,7 +181,7 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc) > struct mxs_mmc_host *host = mmc_priv(mmc); > > return !(readl(host->base + HW_SSP_STATUS) & > - BM_SSP_STATUS_CARD_DETECT); > + BM_SSP_STATUS_CARD_DETECT); > } > > static void mxs_mmc_reset(struct mxs_mmc_host *host) > @@ -202,21 +202,21 @@ static void mxs_mmc_reset(struct mxs_mmc_host *host) > BM_SSP_CTRL1_RESP_ERR_IRQ_EN; > > writel(BF_SSP(0xffff, TIMING_TIMEOUT) | > - BF_SSP(2, TIMING_CLOCK_DIVIDE) | > - BF_SSP(0, TIMING_CLOCK_RATE), > - host->base + HW_SSP_TIMING); > + BF_SSP(2, TIMING_CLOCK_DIVIDE) | > + BF_SSP(0, TIMING_CLOCK_RATE), > + host->base + HW_SSP_TIMING); > > if (host->sdio_irq_en) { > ctrl0 |= BM_SSP_CTRL0_SDIO_IRQ_CHECK; > ctrl1 |= BM_SSP_CTRL1_SDIO_IRQ_EN; > - } > + } > > writel(ctrl0, host->base + HW_SSP_CTRL0); > writel(ctrl1, host->base + HW_SSP_CTRL1); > } > > static void mxs_mmc_start_cmd(struct mxs_mmc_host *host, > - struct mmc_command *cmd); > + struct mmc_command *cmd); > > static void mxs_mmc_request_done(struct mxs_mmc_host *host) > { > @@ -240,13 +240,13 @@ static void mxs_mmc_request_done(struct mxs_mmc_host *host) > break; > default: > dev_warn(mmc_dev(host->mmc), > - "%s: unsupported response type 0x%x\n", > - __func__, mmc_resp_type(cmd)); > + "%s: unsupported response type 0x%x\n", > + __func__, mmc_resp_type(cmd)); > } > > if (data) { > dma_unmap_sg(mmc_dev(host->mmc), data->sg, > - data->sg_len, host->dma_dir); > + data->sg_len, host->dma_dir); > /* > * If there was an error on any block, we mark all > * data blocks as being in error. > @@ -285,7 +285,7 @@ static irqreturn_t mxs_mmc_irq_handler(int irq, void *dev_id) > > stat = readl(host->base + HW_SSP_CTRL1); > writel(stat & MXS_MMC_IRQ_BITS, > - host->base + HW_SSP_CTRL1 + MXS_CLR_ADDR); > + host->base + HW_SSP_CTRL1 + MXS_CLR_ADDR); > > if ((stat & BM_SSP_CTRL1_SDIO_IRQ) && (stat & BM_SSP_CTRL1_SDIO_IRQ_EN)) > mmc_signal_sdio_irq(host->mmc); > @@ -299,7 +299,7 @@ static irqreturn_t mxs_mmc_irq_handler(int irq, void *dev_id) > > if (data) { > if (stat & (BM_SSP_CTRL1_DATA_TIMEOUT_IRQ | > - BM_SSP_CTRL1_RECV_TIMEOUT_IRQ)) > + BM_SSP_CTRL1_RECV_TIMEOUT_IRQ)) > data->error = -ETIMEDOUT; > else if (stat & BM_SSP_CTRL1_DATA_CRC_IRQ) > data->error = -EILSEQ; > @@ -313,7 +313,7 @@ static irqreturn_t mxs_mmc_irq_handler(int irq, void *dev_id) > } > > static struct dma_async_tx_descriptor *mxs_mmc_prep_dma( > - struct mxs_mmc_host *host, unsigned int append) > + struct mxs_mmc_host *host, unsigned int append) > { > struct dma_async_tx_descriptor *desc; > struct mmc_data *data = host->data; > @@ -323,7 +323,7 @@ static struct dma_async_tx_descriptor *mxs_mmc_prep_dma( > if (data) { > /* data */ > dma_map_sg(mmc_dev(host->mmc), data->sg, > - data->sg_len, host->dma_dir); > + data->sg_len, host->dma_dir); > sgl = data->sg; > sg_len = data->sg_len; > } else { > @@ -340,7 +340,7 @@ static struct dma_async_tx_descriptor *mxs_mmc_prep_dma( > } else { > if (data) > dma_unmap_sg(mmc_dev(host->mmc), data->sg, > - data->sg_len, host->dma_dir); > + data->sg_len, host->dma_dir); > } > > return desc; > @@ -374,7 +374,7 @@ static void mxs_mmc_bc(struct mxs_mmc_host *host) > > out: > dev_warn(mmc_dev(host->mmc), > - "%s: failed to prep dma\n", __func__); > + "%s: failed to prep dma\n", __func__); > } > > static void mxs_mmc_ac(struct mxs_mmc_host *host) > @@ -413,7 +413,7 @@ static void mxs_mmc_ac(struct mxs_mmc_host *host) > > out: > dev_warn(mmc_dev(host->mmc), > - "%s: failed to prep dma\n", __func__); > + "%s: failed to prep dma\n", __func__); > } > > static unsigned short mxs_ns_to_ssp_ticks(unsigned clock_rate, unsigned ns) > @@ -492,12 +492,12 @@ static void mxs_mmc_adtc(struct mxs_mmc_host *host) > } else { > writel(data_size, host->base + HW_SSP_XFER_SIZE); > writel(BF_SSP(log2_blksz, BLOCK_SIZE_BLOCK_SIZE) | > - BF_SSP(blocks - 1, BLOCK_SIZE_BLOCK_COUNT), > - host->base + HW_SSP_BLOCK_SIZE); > + BF_SSP(blocks - 1, BLOCK_SIZE_BLOCK_COUNT), > + host->base + HW_SSP_BLOCK_SIZE); > } > > if ((cmd->opcode == MMC_STOP_TRANSMISSION) || > - (cmd->opcode == SD_IO_RW_EXTENDED)) > + (cmd->opcode == SD_IO_RW_EXTENDED)) > cmd0 |= BM_SSP_CMD0_APPEND_8CYC; > > cmd1 = cmd->arg; > @@ -535,11 +535,11 @@ static void mxs_mmc_adtc(struct mxs_mmc_host *host) > return; > out: > dev_warn(mmc_dev(host->mmc), > - "%s: failed to prep dma\n", __func__); > + "%s: failed to prep dma\n", __func__); > } > > static void mxs_mmc_start_cmd(struct mxs_mmc_host *host, > - struct mmc_command *cmd) > + struct mmc_command *cmd) > { > host->cmd = cmd; > > @@ -558,7 +558,7 @@ static void mxs_mmc_start_cmd(struct mxs_mmc_host *host, > break; > default: > dev_warn(mmc_dev(host->mmc), > - "%s: unknown MMC command\n", __func__); > + "%s: unknown MMC command\n", __func__); > break; > } > } > @@ -636,18 +636,18 @@ static void mxs_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable) > > if (enable) { > writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, > - host->base + HW_SSP_CTRL0 + MXS_SET_ADDR); > + host->base + HW_SSP_CTRL0 + MXS_SET_ADDR); > writel(BM_SSP_CTRL1_SDIO_IRQ_EN, > - host->base + HW_SSP_CTRL1 + MXS_SET_ADDR); > + host->base + HW_SSP_CTRL1 + MXS_SET_ADDR); > > if (readl(host->base + HW_SSP_STATUS) & BM_SSP_STATUS_SDIO_IRQ) > mmc_signal_sdio_irq(host->mmc); > > } else { > writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, > - host->base + HW_SSP_CTRL0 + MXS_CLR_ADDR); > + host->base + HW_SSP_CTRL0 + MXS_CLR_ADDR); > writel(BM_SSP_CTRL1_SDIO_IRQ_EN, > - host->base + HW_SSP_CTRL1 + MXS_CLR_ADDR); > + host->base + HW_SSP_CTRL1 + MXS_CLR_ADDR); > } > > spin_unlock_irqrestore(&host->lock, flags); > @@ -710,7 +710,7 @@ static int mxs_mmc_probe(struct platform_device *pdev) > > /* only major verion does matter */ > host->version = readl(host->base + HW_SSP_VERSION) >> > - BP_SSP_VERSION_MAJOR; > + BP_SSP_VERSION_MAJOR; > > host->mmc = mmc; > host->res = r; > @@ -755,8 +755,7 @@ static int mxs_mmc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, mmc); > > - ret = request_irq(host->irq, mxs_mmc_irq_handler, 0, > - DRIVER_NAME, host); > + ret = request_irq(host->irq, mxs_mmc_irq_handler, 0, DRIVER_NAME, host); > if (ret) > goto out_free_dma; > > -- > Chris Ball <cjb@xxxxxxxxxx> <http://printf.net/> > One Laptop Per Child > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html