Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73a85069 authored by Stefan Wahren's avatar Stefan Wahren Committed by Ulf Hansson
Browse files

mmc: mxs-mmc: Implement CMD23 support



This patch implements support for multiblock transfers bounded
by SET_BLOCK_COUNT (CMD23) on the MXS MMC host driver.

Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent e81c022a
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -153,7 +153,11 @@ static void mxs_mmc_request_done(struct mxs_mmc_host *host)
		}
	}

	if (data) {
	if (cmd == mrq->sbc) {
		/* Finished CMD23, now send actual command. */
		mxs_mmc_start_cmd(host, mrq->cmd);
		return;
	} else if (data) {
		dma_unmap_sg(mmc_dev(host->mmc), data->sg,
			     data->sg_len, ssp->dma_dir);
		/*
@@ -166,7 +170,7 @@ static void mxs_mmc_request_done(struct mxs_mmc_host *host)
			data->bytes_xfered = 0;

		host->data = NULL;
		if (mrq->stop) {
		if (data->stop && (data->error || !mrq->sbc)) {
			mxs_mmc_start_cmd(host, mrq->stop);
			return;
		}
@@ -495,6 +499,10 @@ static void mxs_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq)

	WARN_ON(host->mrq != NULL);
	host->mrq = mrq;

	if (mrq->sbc)
		mxs_mmc_start_cmd(host, mrq->sbc);
	else
		mxs_mmc_start_cmd(host, mrq->cmd);
}

@@ -642,7 +650,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
	/* set mmc core parameters */
	mmc->ops = &mxs_mmc_ops;
	mmc->caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED |
		    MMC_CAP_SDIO_IRQ | MMC_CAP_NEEDS_POLL;
		    MMC_CAP_SDIO_IRQ | MMC_CAP_NEEDS_POLL | MMC_CAP_CMD23;

	host->broken_cd = of_property_read_bool(np, "broken-cd");