aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-04-15 18:10:32 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-04-15 18:10:32 -0400
commit2fffad128730526799eb9f37329e8b598f0fc8d8 (patch)
treeef88291c5229351a542d518426f74b3661e942e4
parentab5f9ebac1fcdf7feaf41a55e463e181ea0b4ea2 (diff)
parent70ad7f7e40af31e7ab4a1719602542856b7ea856 (diff)
Merge tag 'mmc-v4.6-rc3' of git://git.linaro.org/people/ulf.hansson/mmc
Pull MMC fixes from Ulf Hansson: "Here are a couple of mmc fixes intended for v4.6 rc4. Regarding the fix for the regression about mmcblk device indexes. The approach taken to solve the problem seems to be good enough. There were some discussions around the solution, but it seems like people were happy about it in the end. MMC core: - Restore similar old behaviour when assigning mmcblk device indexes MMC host: - tegra: Disable UHS-I modes for Tegra124 to fix regression" * tag 'mmc-v4.6-rc3' of git://git.linaro.org/people/ulf.hansson/mmc: mmc: tegra: Disable UHS-I modes for Tegra124 mmc: block: Use the mmc host device index as the mmcblk device index
-rw-r--r--drivers/mmc/card/block.c18
-rw-r--r--drivers/mmc/host/sdhci-tegra.c10
2 files changed, 2 insertions, 26 deletions
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 3bdbe50a363f..8a0147dfed27 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -86,7 +86,6 @@ static int max_devices;
86 86
87/* TODO: Replace these with struct ida */ 87/* TODO: Replace these with struct ida */
88static DECLARE_BITMAP(dev_use, MAX_DEVICES); 88static DECLARE_BITMAP(dev_use, MAX_DEVICES);
89static DECLARE_BITMAP(name_use, MAX_DEVICES);
90 89
91/* 90/*
92 * There is one mmc_blk_data per slot. 91 * There is one mmc_blk_data per slot.
@@ -105,7 +104,6 @@ struct mmc_blk_data {
105 unsigned int usage; 104 unsigned int usage;
106 unsigned int read_only; 105 unsigned int read_only;
107 unsigned int part_type; 106 unsigned int part_type;
108 unsigned int name_idx;
109 unsigned int reset_done; 107 unsigned int reset_done;
110#define MMC_BLK_READ BIT(0) 108#define MMC_BLK_READ BIT(0)
111#define MMC_BLK_WRITE BIT(1) 109#define MMC_BLK_WRITE BIT(1)
@@ -2202,19 +2200,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
2202 goto out; 2200 goto out;
2203 } 2201 }
2204 2202
2205 /*
2206 * !subname implies we are creating main mmc_blk_data that will be
2207 * associated with mmc_card with dev_set_drvdata. Due to device
2208 * partitions, devidx will not coincide with a per-physical card
2209 * index anymore so we keep track of a name index.
2210 */
2211 if (!subname) {
2212 md->name_idx = find_first_zero_bit(name_use, max_devices);
2213 __set_bit(md->name_idx, name_use);
2214 } else
2215 md->name_idx = ((struct mmc_blk_data *)
2216 dev_to_disk(parent)->private_data)->name_idx;
2217
2218 md->area_type = area_type; 2203 md->area_type = area_type;
2219 2204
2220 /* 2205 /*
@@ -2264,7 +2249,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
2264 */ 2249 */
2265 2250
2266 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name), 2251 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
2267 "mmcblk%u%s", md->name_idx, subname ? subname : ""); 2252 "mmcblk%u%s", card->host->index, subname ? subname : "");
2268 2253
2269 if (mmc_card_mmc(card)) 2254 if (mmc_card_mmc(card))
2270 blk_queue_logical_block_size(md->queue.queue, 2255 blk_queue_logical_block_size(md->queue.queue,
@@ -2418,7 +2403,6 @@ static void mmc_blk_remove_parts(struct mmc_card *card,
2418 struct list_head *pos, *q; 2403 struct list_head *pos, *q;
2419 struct mmc_blk_data *part_md; 2404 struct mmc_blk_data *part_md;
2420 2405
2421 __clear_bit(md->name_idx, name_use);
2422 list_for_each_safe(pos, q, &md->part) { 2406 list_for_each_safe(pos, q, &md->part) {
2423 part_md = list_entry(pos, struct mmc_blk_data, part); 2407 part_md = list_entry(pos, struct mmc_blk_data, part);
2424 list_del(pos); 2408 list_del(pos);
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index f8c4762bb48d..bcc0de47fe7e 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -382,14 +382,6 @@ static const struct sdhci_tegra_soc_data soc_data_tegra114 = {
382 .pdata = &sdhci_tegra114_pdata, 382 .pdata = &sdhci_tegra114_pdata,
383}; 383};
384 384
385static const struct sdhci_tegra_soc_data soc_data_tegra124 = {
386 .pdata = &sdhci_tegra114_pdata,
387 .nvquirks = NVQUIRK_ENABLE_SDR50 |
388 NVQUIRK_ENABLE_DDR50 |
389 NVQUIRK_ENABLE_SDR104 |
390 NVQUIRK_HAS_PADCALIB,
391};
392
393static const struct sdhci_pltfm_data sdhci_tegra210_pdata = { 385static const struct sdhci_pltfm_data sdhci_tegra210_pdata = {
394 .quirks = SDHCI_QUIRK_BROKEN_TIMEOUT_VAL | 386 .quirks = SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
395 SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | 387 SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
@@ -407,7 +399,7 @@ static const struct sdhci_tegra_soc_data soc_data_tegra210 = {
407 399
408static const struct of_device_id sdhci_tegra_dt_match[] = { 400static const struct of_device_id sdhci_tegra_dt_match[] = {
409 { .compatible = "nvidia,tegra210-sdhci", .data = &soc_data_tegra210 }, 401 { .compatible = "nvidia,tegra210-sdhci", .data = &soc_data_tegra210 },
410 { .compatible = "nvidia,tegra124-sdhci", .data = &soc_data_tegra124 }, 402 { .compatible = "nvidia,tegra124-sdhci", .data = &soc_data_tegra114 },
411 { .compatible = "nvidia,tegra114-sdhci", .data = &soc_data_tegra114 }, 403 { .compatible = "nvidia,tegra114-sdhci", .data = &soc_data_tegra114 },
412 { .compatible = "nvidia,tegra30-sdhci", .data = &soc_data_tegra30 }, 404 { .compatible = "nvidia,tegra30-sdhci", .data = &soc_data_tegra30 },
413 { .compatible = "nvidia,tegra20-sdhci", .data = &soc_data_tegra20 }, 405 { .compatible = "nvidia,tegra20-sdhci", .data = &soc_data_tegra20 },