aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/core/block.c6
-rw-r--r--drivers/mmc/core/queue.c9
2 files changed, 8 insertions, 7 deletions
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 14f3fdb8c6bb..9ce8eb51a60f 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -2380,12 +2380,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
2380 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name), 2380 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
2381 "mmcblk%u%s", card->host->index, subname ? subname : ""); 2381 "mmcblk%u%s", card->host->index, subname ? subname : "");
2382 2382
2383 if (mmc_card_mmc(card))
2384 blk_queue_logical_block_size(md->queue.queue,
2385 card->ext_csd.data_sector_size);
2386 else
2387 blk_queue_logical_block_size(md->queue.queue, 512);
2388
2389 set_capacity(md->disk, size); 2383 set_capacity(md->disk, size);
2390 2384
2391 if (mmc_host_cmd23(card->host)) { 2385 if (mmc_host_cmd23(card->host)) {
diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
index 35cc138b096d..15a45ec6518d 100644
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
@@ -355,6 +355,7 @@ static void mmc_setup_queue(struct mmc_queue *mq, struct mmc_card *card)
355{ 355{
356 struct mmc_host *host = card->host; 356 struct mmc_host *host = card->host;
357 u64 limit = BLK_BOUNCE_HIGH; 357 u64 limit = BLK_BOUNCE_HIGH;
358 unsigned block_size = 512;
358 359
359 if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask) 360 if (mmc_dev(host)->dma_mask && *mmc_dev(host)->dma_mask)
360 limit = (u64)dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT; 361 limit = (u64)dma_max_pfn(mmc_dev(host)) << PAGE_SHIFT;
@@ -368,7 +369,13 @@ static void mmc_setup_queue(struct mmc_queue *mq, struct mmc_card *card)
368 blk_queue_max_hw_sectors(mq->queue, 369 blk_queue_max_hw_sectors(mq->queue,
369 min(host->max_blk_count, host->max_req_size / 512)); 370 min(host->max_blk_count, host->max_req_size / 512));
370 blk_queue_max_segments(mq->queue, host->max_segs); 371 blk_queue_max_segments(mq->queue, host->max_segs);
371 blk_queue_max_segment_size(mq->queue, host->max_seg_size); 372
373 if (mmc_card_mmc(card))
374 block_size = card->ext_csd.data_sector_size;
375
376 blk_queue_logical_block_size(mq->queue, block_size);
377 blk_queue_max_segment_size(mq->queue,
378 round_down(host->max_seg_size, block_size));
372 379
373 INIT_WORK(&mq->recovery_work, mmc_mq_recovery_handler); 380 INIT_WORK(&mq->recovery_work, mmc_mq_recovery_handler);
374 INIT_WORK(&mq->complete_work, mmc_blk_mq_complete_work); 381 INIT_WORK(&mq->complete_work, mmc_blk_mq_complete_work);