diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2017-09-22 08:36:54 -0400 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2017-10-30 06:45:51 -0400 |
commit | f690f4409ddd79a481efddaf6e4cb65cf1a747cb (patch) | |
tree | 0dff38b76072a85249762d7506060ae1bc245746 | |
parent | 98d4f7809d99bbf456f93816ef9895616cdd1b2d (diff) |
mmc: mmc: Enable CQE's
Enable or disable CQE when a card is added or removed respectively.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-rw-r--r-- | drivers/mmc/core/bus.c | 7 | ||||
-rw-r--r-- | drivers/mmc/core/mmc.c | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c index 301246513a37..a4b49e25fe96 100644 --- a/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c | |||
@@ -369,10 +369,17 @@ int mmc_add_card(struct mmc_card *card) | |||
369 | */ | 369 | */ |
370 | void mmc_remove_card(struct mmc_card *card) | 370 | void mmc_remove_card(struct mmc_card *card) |
371 | { | 371 | { |
372 | struct mmc_host *host = card->host; | ||
373 | |||
372 | #ifdef CONFIG_DEBUG_FS | 374 | #ifdef CONFIG_DEBUG_FS |
373 | mmc_remove_card_debugfs(card); | 375 | mmc_remove_card_debugfs(card); |
374 | #endif | 376 | #endif |
375 | 377 | ||
378 | if (host->cqe_enabled) { | ||
379 | host->cqe_ops->cqe_disable(host); | ||
380 | host->cqe_enabled = false; | ||
381 | } | ||
382 | |||
376 | if (mmc_card_present(card)) { | 383 | if (mmc_card_present(card)) { |
377 | if (mmc_host_is_spi(card->host)) { | 384 | if (mmc_host_is_spi(card->host)) { |
378 | pr_info("%s: SPI card removed\n", | 385 | pr_info("%s: SPI card removed\n", |
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 8e11526c5092..44d67ee8bf7b 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -1809,6 +1809,18 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
1809 | */ | 1809 | */ |
1810 | card->reenable_cmdq = card->ext_csd.cmdq_en; | 1810 | card->reenable_cmdq = card->ext_csd.cmdq_en; |
1811 | 1811 | ||
1812 | if (card->ext_csd.cmdq_en && !host->cqe_enabled) { | ||
1813 | err = host->cqe_ops->cqe_enable(host, card); | ||
1814 | if (err) { | ||
1815 | pr_err("%s: Failed to enable CQE, error %d\n", | ||
1816 | mmc_hostname(host), err); | ||
1817 | } else { | ||
1818 | host->cqe_enabled = true; | ||
1819 | pr_info("%s: Command Queue Engine enabled\n", | ||
1820 | mmc_hostname(host)); | ||
1821 | } | ||
1822 | } | ||
1823 | |||
1812 | if (!oldcard) | 1824 | if (!oldcard) |
1813 | host->card = card; | 1825 | host->card = card; |
1814 | 1826 | ||