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

Commit b13d1f0f authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Chris Ball
Browse files

mmc: omap: Add erase capability



This patch adds the erase capability to OMAP1/OMAP2420 MMC driver. Idea is
the same than in commit 93caf8e6 ("omap_hsmmc: add erase capability") that we
disable the data timeout interrupt for erases.

Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@bitmer.com>
Acked-by: default avatarTony Lindgren <tony@atomide.com>
Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarChris Ball <chris@printf.net>
parent a6c668fb
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/omap-dma.h>
#include <linux/mmc/host.h>
#include <linux/mmc/card.h>
#include <linux/mmc/mmc.h>
#include <linux/clk.h>
#include <linux/scatterlist.h>
#include <linux/slab.h>
@@ -336,6 +337,7 @@ mmc_omap_start_command(struct mmc_omap_host *host, struct mmc_command *cmd)
	u32 cmdreg;
	u32 resptype;
	u32 cmdtype;
	u16 irq_mask;

	host->cmd = cmd;

@@ -388,12 +390,14 @@ mmc_omap_start_command(struct mmc_omap_host *host, struct mmc_command *cmd)
	OMAP_MMC_WRITE(host, CTO, 200);
	OMAP_MMC_WRITE(host, ARGL, cmd->arg & 0xffff);
	OMAP_MMC_WRITE(host, ARGH, cmd->arg >> 16);
	OMAP_MMC_WRITE(host, IE,
		       OMAP_MMC_STAT_A_EMPTY    | OMAP_MMC_STAT_A_FULL    |
	irq_mask = OMAP_MMC_STAT_A_EMPTY    | OMAP_MMC_STAT_A_FULL    |
		   OMAP_MMC_STAT_CMD_CRC    | OMAP_MMC_STAT_CMD_TOUT  |
		   OMAP_MMC_STAT_DATA_CRC   | OMAP_MMC_STAT_DATA_TOUT |
		   OMAP_MMC_STAT_END_OF_CMD | OMAP_MMC_STAT_CARD_ERR  |
		       OMAP_MMC_STAT_END_OF_DATA);
		   OMAP_MMC_STAT_END_OF_DATA;
	if (cmd->opcode == MMC_ERASE)
		irq_mask &= ~OMAP_MMC_STAT_DATA_TOUT;
	OMAP_MMC_WRITE(host, IE, irq_mask);
	OMAP_MMC_WRITE(host, CMD, cmdreg);
}

@@ -1234,7 +1238,7 @@ static int mmc_omap_new_slot(struct mmc_omap_host *host, int id)

	mmc->caps = 0;
	if (host->pdata->slots[id].wires >= 4)
		mmc->caps |= MMC_CAP_4_BIT_DATA;
		mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_ERASE;

	mmc->ops = &mmc_omap_ops;
	mmc->f_min = 400000;