diff options
author | Philip Rakity <prakity@marvell.com> | 2012-06-28 00:49:27 -0400 |
---|---|---|
committer | Chris Ball <cjb@laptop.org> | 2012-07-22 15:25:44 -0400 |
commit | bd6a8c30faf19b4e7abace93fb89efd6d72607ec (patch) | |
tree | f527fbf080402c10f09076859156862fd49bf52a /drivers/mmc | |
parent | 4dc5a79f1350718ac31e4ab87eebce112b117a34 (diff) |
mmc: sdhci: Allow caps[1] to be set via SDHCI_QUIRK_MISSING_CAPS
Currently only the capability_0 register can be set if
SDHCI_QUIRK_MISSING_CAPS is defined. This is a problem when
the capability_1 register also needs changing. Use the quirk
SDHCI_QUIRK_MISSING_CAPS to allow both registers to be set.
Redefining caps[1] is useful when the board design does not
support 1.8v vccq so UHS modes are not available. The code that
calls sdhci_add_host can then detect this condition and adjust
the caps so the UHS mode will not be attempted on UHS cards.
Signed-off-by: Philip Rakity <prakity@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/sdhci.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index f76736b50bc7..206b52fec443 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c | |||
@@ -2584,7 +2584,7 @@ EXPORT_SYMBOL_GPL(sdhci_alloc_host); | |||
2584 | int sdhci_add_host(struct sdhci_host *host) | 2584 | int sdhci_add_host(struct sdhci_host *host) |
2585 | { | 2585 | { |
2586 | struct mmc_host *mmc; | 2586 | struct mmc_host *mmc; |
2587 | u32 caps[2]; | 2587 | u32 caps[2] = {0, 0}; |
2588 | u32 max_current_caps; | 2588 | u32 max_current_caps; |
2589 | unsigned int ocr_avail; | 2589 | unsigned int ocr_avail; |
2590 | int ret; | 2590 | int ret; |
@@ -2614,8 +2614,10 @@ int sdhci_add_host(struct sdhci_host *host) | |||
2614 | caps[0] = (host->quirks & SDHCI_QUIRK_MISSING_CAPS) ? host->caps : | 2614 | caps[0] = (host->quirks & SDHCI_QUIRK_MISSING_CAPS) ? host->caps : |
2615 | sdhci_readl(host, SDHCI_CAPABILITIES); | 2615 | sdhci_readl(host, SDHCI_CAPABILITIES); |
2616 | 2616 | ||
2617 | caps[1] = (host->version >= SDHCI_SPEC_300) ? | 2617 | if (host->version >= SDHCI_SPEC_300) |
2618 | sdhci_readl(host, SDHCI_CAPABILITIES_1) : 0; | 2618 | caps[1] = (host->quirks & SDHCI_QUIRK_MISSING_CAPS) ? |
2619 | host->caps1 : | ||
2620 | sdhci_readl(host, SDHCI_CAPABILITIES_1); | ||
2619 | 2621 | ||
2620 | if (host->quirks & SDHCI_QUIRK_FORCE_DMA) | 2622 | if (host->quirks & SDHCI_QUIRK_FORCE_DMA) |
2621 | host->flags |= SDHCI_USE_SDMA; | 2623 | host->flags |= SDHCI_USE_SDMA; |