From 87a5e5c70fadb26d554b31167bf34138ac2e6941 Mon Sep 17 00:00:00 2001 From: Loic Pallardy Date: Mon, 6 Aug 2012 17:12:30 +0200 Subject: [PATCH] --- yaml --- r: 336287 b: refs/heads/master c: 67c79db8d9c0e5d2e2075c9108f42566ce0f8a6f h: refs/heads/master i: 336285: 15c2df6e9c8a04ca2bc30434e4b78cf4e93ffbe1 336283: 2dc1b8fb4f05e5080678261ab6831310a15904ec 336279: 75c7aa82b7e9eaf7184e18f69539503164c66227 336271: 180817360c75313ffa0bc70f823482ec222ccc59 336255: 0b2052c119b0e26f20eb4b049edc8d626f485bc2 v: v3 --- [refs] | 2 +- trunk/drivers/mmc/core/core.c | 14 ++++++++++++++ trunk/include/linux/mmc/core.h | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9b3d692fd30b..e4a8ebdcb0be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 188cc0424e9bd7733ee3e412da6df2cf42701061 +refs/heads/master: 67c79db8d9c0e5d2e2075c9108f42566ce0f8a6f diff --git a/trunk/drivers/mmc/core/core.c b/trunk/drivers/mmc/core/core.c index bccfd1858b08..aaed7687cf09 100644 --- a/trunk/drivers/mmc/core/core.c +++ b/trunk/drivers/mmc/core/core.c @@ -1958,6 +1958,20 @@ int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen) } EXPORT_SYMBOL(mmc_set_blocklen); +int mmc_set_blockcount(struct mmc_card *card, unsigned int blockcount, + bool is_rel_write) +{ + struct mmc_command cmd = {0}; + + cmd.opcode = MMC_SET_BLOCK_COUNT; + cmd.arg = blockcount & 0x0000FFFF; + if (is_rel_write) + cmd.arg |= 1 << 31; + cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC; + return mmc_wait_for_cmd(card->host, &cmd, 5); +} +EXPORT_SYMBOL(mmc_set_blockcount); + static void mmc_hw_reset_for_init(struct mmc_host *host) { if (!(host->caps & MMC_CAP_HW_RESET) || !host->ops->hw_reset) diff --git a/trunk/include/linux/mmc/core.h b/trunk/include/linux/mmc/core.h index 9b9cdafc7737..5bf7c2274fcb 100644 --- a/trunk/include/linux/mmc/core.h +++ b/trunk/include/linux/mmc/core.h @@ -170,6 +170,8 @@ extern int mmc_erase_group_aligned(struct mmc_card *card, unsigned int from, extern unsigned int mmc_calc_max_discard(struct mmc_card *card); extern int mmc_set_blocklen(struct mmc_card *card, unsigned int blocklen); +extern int mmc_set_blockcount(struct mmc_card *card, unsigned int blockcount, + bool is_rel_write); extern int mmc_hw_reset(struct mmc_host *host); extern int mmc_hw_reset_check(struct mmc_host *host); extern int mmc_can_reset(struct mmc_card *card);