[PATCH v2 1/7] mmc: mxs-mmc: add mmc host driver for i.MX23/28
Shawn Guo
shawn.guo at freescale.com
Tue Feb 15 16:26:11 EST 2011
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 at freescale.com>
>
> 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 at laptop.org> <http://printf.net/>
> One Laptop Per Child
>
More information about the linux-arm-kernel
mailing list