Direct commands (DCMDs) are an optional feature of eMMC 5.1's command
queue engine (CQE). The Arasan eMMC 5.1 controller uses the CQHCI,
which exposes a control register bit to enable the feature.
The current implementation sets this bit unconditionally.

This patch allows to surpress the feature activation,
by specifying the property disable-cqe-dcmd.

Signed-off-by: Christoph Muellner <christoph.muell...@theobroma-systems.com>
Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
---
 drivers/mmc/host/sdhci-of-arasan.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/mmc/host/sdhci-of-arasan.c 
b/drivers/mmc/host/sdhci-of-arasan.c
index c9e3e050ccc8..88dc3f00a5be 100644
--- a/drivers/mmc/host/sdhci-of-arasan.c
+++ b/drivers/mmc/host/sdhci-of-arasan.c
@@ -832,7 +832,10 @@ static int sdhci_arasan_probe(struct platform_device *pdev)
                host->mmc_host_ops.start_signal_voltage_switch =
                                        sdhci_arasan_voltage_switch;
                sdhci_arasan->has_cqe = true;
-               host->mmc->caps2 |= MMC_CAP2_CQE | MMC_CAP2_CQE_DCMD;
+               host->mmc->caps2 |= MMC_CAP2_CQE;
+
+               if (!of_property_read_bool(np, "disable-cqe-dcmd"))
+                       host->mmc->caps2 |= MMC_CAP2_CQE_DCMD;
        }
 
        ret = sdhci_arasan_add_host(sdhci_arasan);
-- 
2.11.0

Reply via email to