Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mmc: omap: Add erase capability

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

Signed-off-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Chris Ball <chris@printf.net>

authored by

Jarkko Nikula and committed by
Chris Ball
b13d1f0f a6c668fb

+11 -7
+11 -7
drivers/mmc/host/omap.c
··· 26 26 #include <linux/omap-dma.h> 27 27 #include <linux/mmc/host.h> 28 28 #include <linux/mmc/card.h> 29 + #include <linux/mmc/mmc.h> 29 30 #include <linux/clk.h> 30 31 #include <linux/scatterlist.h> 31 32 #include <linux/slab.h> ··· 337 336 u32 cmdreg; 338 337 u32 resptype; 339 338 u32 cmdtype; 339 + u16 irq_mask; 340 340 341 341 host->cmd = cmd; 342 342 ··· 390 388 OMAP_MMC_WRITE(host, CTO, 200); 391 389 OMAP_MMC_WRITE(host, ARGL, cmd->arg & 0xffff); 392 390 OMAP_MMC_WRITE(host, ARGH, cmd->arg >> 16); 393 - OMAP_MMC_WRITE(host, IE, 394 - OMAP_MMC_STAT_A_EMPTY | OMAP_MMC_STAT_A_FULL | 395 - OMAP_MMC_STAT_CMD_CRC | OMAP_MMC_STAT_CMD_TOUT | 396 - OMAP_MMC_STAT_DATA_CRC | OMAP_MMC_STAT_DATA_TOUT | 397 - OMAP_MMC_STAT_END_OF_CMD | OMAP_MMC_STAT_CARD_ERR | 398 - OMAP_MMC_STAT_END_OF_DATA); 391 + irq_mask = OMAP_MMC_STAT_A_EMPTY | OMAP_MMC_STAT_A_FULL | 392 + OMAP_MMC_STAT_CMD_CRC | OMAP_MMC_STAT_CMD_TOUT | 393 + OMAP_MMC_STAT_DATA_CRC | OMAP_MMC_STAT_DATA_TOUT | 394 + OMAP_MMC_STAT_END_OF_CMD | OMAP_MMC_STAT_CARD_ERR | 395 + OMAP_MMC_STAT_END_OF_DATA; 396 + if (cmd->opcode == MMC_ERASE) 397 + irq_mask &= ~OMAP_MMC_STAT_DATA_TOUT; 398 + OMAP_MMC_WRITE(host, IE, irq_mask); 399 399 OMAP_MMC_WRITE(host, CMD, cmdreg); 400 400 } 401 401 ··· 1238 1234 1239 1235 mmc->caps = 0; 1240 1236 if (host->pdata->slots[id].wires >= 4) 1241 - mmc->caps |= MMC_CAP_4_BIT_DATA; 1237 + mmc->caps |= MMC_CAP_4_BIT_DATA | MMC_CAP_ERASE; 1242 1238 1243 1239 mmc->ops = &mmc_omap_ops; 1244 1240 mmc->f_min = 400000;