diff options
author | Andrei Warkentin <andreiw@motorola.com> | 2011-03-31 19:40:00 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2011-05-24 20:59:38 -0400 |
commit | f4c5522b0a8827f39f83f928961d87e081bfe71c (patch) | |
tree | 3c2126f0adb2a3444b2fd152cc1a880c192c9d77 /drivers/mmc/core | |
parent | 766a6bf6e987ff5f5085c614b5a62a55006b6a7e (diff) |
mmc: Reliable write support.
Allows reliable writes to be used for MMC writes. Reliable writes are used
to service write REQ_FUA/REQ_META requests. Handles both the legacy and
the enhanced reliable write support in MMC cards.
Signed-off-by: Andrei Warkentin <andreiw@motorola.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc/core')
-rw-r--r-- | drivers/mmc/core/mmc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 5c611a6e008..ae6b8fd3880 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -300,6 +300,8 @@ static int mmc_read_ext_csd(struct mmc_card *card) | |||
300 | ext_csd[EXT_CSD_ERASE_TIMEOUT_MULT]; | 300 | ext_csd[EXT_CSD_ERASE_TIMEOUT_MULT]; |
301 | card->ext_csd.hc_erase_size = | 301 | card->ext_csd.hc_erase_size = |
302 | ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] << 10; | 302 | ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] << 10; |
303 | |||
304 | card->ext_csd.rel_sectors = ext_csd[EXT_CSD_REL_WR_SEC_C]; | ||
303 | } | 305 | } |
304 | 306 | ||
305 | if (card->ext_csd.rev >= 4) { | 307 | if (card->ext_csd.rev >= 4) { |
@@ -351,6 +353,9 @@ static int mmc_read_ext_csd(struct mmc_card *card) | |||
351 | ext_csd[EXT_CSD_TRIM_MULT]; | 353 | ext_csd[EXT_CSD_TRIM_MULT]; |
352 | } | 354 | } |
353 | 355 | ||
356 | if (card->ext_csd.rev >= 5) | ||
357 | card->ext_csd.rel_param = ext_csd[EXT_CSD_WR_REL_PARAM]; | ||
358 | |||
354 | if (ext_csd[EXT_CSD_ERASED_MEM_CONT]) | 359 | if (ext_csd[EXT_CSD_ERASED_MEM_CONT]) |
355 | card->erased_byte = 0xFF; | 360 | card->erased_byte = 0xFF; |
356 | else | 361 | else |