diff options
-rw-r--r-- | drivers/mmc/core/block.c | 10 | ||||
-rw-r--r-- | drivers/net/wireless/marvell/libertas/if_sdio.c | 4 |
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index a0b9102c4c6e..e201ccb3fda4 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c | |||
@@ -1371,6 +1371,16 @@ static void mmc_blk_data_prep(struct mmc_queue *mq, struct mmc_queue_req *mqrq, | |||
1371 | 1371 | ||
1372 | if (brq->data.blocks > 1) { | 1372 | if (brq->data.blocks > 1) { |
1373 | /* | 1373 | /* |
1374 | * Some SD cards in SPI mode return a CRC error or even lock up | ||
1375 | * completely when trying to read the last block using a | ||
1376 | * multiblock read command. | ||
1377 | */ | ||
1378 | if (mmc_host_is_spi(card->host) && (rq_data_dir(req) == READ) && | ||
1379 | (blk_rq_pos(req) + blk_rq_sectors(req) == | ||
1380 | get_capacity(md->disk))) | ||
1381 | brq->data.blocks--; | ||
1382 | |||
1383 | /* | ||
1374 | * After a read error, we redo the request one sector | 1384 | * After a read error, we redo the request one sector |
1375 | * at a time in order to accurately determine which | 1385 | * at a time in order to accurately determine which |
1376 | * sectors can be read successfully. | 1386 | * sectors can be read successfully. |
diff --git a/drivers/net/wireless/marvell/libertas/if_sdio.c b/drivers/net/wireless/marvell/libertas/if_sdio.c index 43743c26c071..39bf85d0ade0 100644 --- a/drivers/net/wireless/marvell/libertas/if_sdio.c +++ b/drivers/net/wireless/marvell/libertas/if_sdio.c | |||
@@ -1317,6 +1317,10 @@ static int if_sdio_suspend(struct device *dev) | |||
1317 | if (priv->wol_criteria == EHS_REMOVE_WAKEUP) { | 1317 | if (priv->wol_criteria == EHS_REMOVE_WAKEUP) { |
1318 | dev_info(dev, "Suspend without wake params -- powering down card\n"); | 1318 | dev_info(dev, "Suspend without wake params -- powering down card\n"); |
1319 | if (priv->fw_ready) { | 1319 | if (priv->fw_ready) { |
1320 | ret = lbs_suspend(priv); | ||
1321 | if (ret) | ||
1322 | return ret; | ||
1323 | |||
1320 | priv->power_up_on_resume = true; | 1324 | priv->power_up_on_resume = true; |
1321 | if_sdio_power_off(card); | 1325 | if_sdio_power_off(card); |
1322 | } | 1326 | } |