| From 32ecd320db39bcb007679ed42f283740641b81ea Mon Sep 17 00:00:00 2001 |
| From: Matt Gumbel <matthew.k.gumbel@intel.com> |
| Date: Fri, 20 May 2016 10:33:46 +0300 |
| Subject: mmc: longer timeout for long read time quirk |
| |
| From: Matt Gumbel <matthew.k.gumbel@intel.com> |
| |
| commit 32ecd320db39bcb007679ed42f283740641b81ea upstream. |
| |
| 008GE0 Toshiba mmc in some Intel Baytrail tablets responds to |
| MMC_SEND_EXT_CSD in 450-600ms. |
| |
| This patch will... |
| |
| () Increase the long read time quirk timeout from 300ms to 600ms. Original |
| author of that quirk says 300ms was only a guess and that the number |
| may need to be raised in the future. |
| |
| () Add this specific MMC to the quirk |
| |
| Signed-off-by: Matt Gumbel <matthew.k.gumbel@intel.com> |
| Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> |
| Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mmc/card/block.c | 5 +++-- |
| drivers/mmc/core/core.c | 4 ++-- |
| 2 files changed, 5 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/mmc/card/block.c |
| +++ b/drivers/mmc/card/block.c |
| @@ -2494,11 +2494,12 @@ static const struct mmc_fixup blk_fixups |
| MMC_QUIRK_BLK_NO_CMD23), |
| |
| /* |
| - * Some Micron MMC cards needs longer data read timeout than |
| - * indicated in CSD. |
| + * Some MMC cards need longer data read timeout than indicated in CSD. |
| */ |
| MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc, |
| MMC_QUIRK_LONG_READ_TIME), |
| + MMC_FIXUP("008GE0", CID_MANFID_TOSHIBA, CID_OEMID_ANY, add_quirk_mmc, |
| + MMC_QUIRK_LONG_READ_TIME), |
| |
| /* |
| * On these Samsung MoviNAND parts, performing secure erase or |
| --- a/drivers/mmc/core/core.c |
| +++ b/drivers/mmc/core/core.c |
| @@ -868,11 +868,11 @@ void mmc_set_data_timeout(struct mmc_dat |
| /* |
| * Some cards require longer data read timeout than indicated in CSD. |
| * Address this by setting the read timeout to a "reasonably high" |
| - * value. For the cards tested, 300ms has proven enough. If necessary, |
| + * value. For the cards tested, 600ms has proven enough. If necessary, |
| * this value can be increased if other problematic cards require this. |
| */ |
| if (mmc_card_long_read_time(card) && data->flags & MMC_DATA_READ) { |
| - data->timeout_ns = 300000000; |
| + data->timeout_ns = 600000000; |
| data->timeout_clks = 0; |
| } |
| |