Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 738b74c6 authored by Sahitya Tummala's avatar Sahitya Tummala Committed by Xiaonian Wang
Browse files

mmc: sdhci: Implement set_transfer_params() cmdq host op



This is needed to set the dma mode for CQ transfers. The dma mode
may be changed by the commands sent in legacy mode (like tuning
which uses FIFO mode).

Change-Id: Idaa2cb0c7712846f6827272caefc112b127ef818
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
[xiaonian@codeaurora.org: fixed trivial merge conflicts &
compilation an error, changed SDHCI_USE_ADMA_64BIT to
SDHCI_USE_64_BIT_DMA]
Signed-off-by: default avatarXiaonian Wang <xiaonian@codeaurora.org>
parent 87231cef
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -3582,6 +3582,22 @@ struct sdhci_host *sdhci_alloc_host(struct device *dev,
EXPORT_SYMBOL_GPL(sdhci_alloc_host);

#ifdef CONFIG_MMC_CQ_HCI
static void sdhci_cmdq_set_transfer_params(struct mmc_host *mmc)
{
	struct sdhci_host *host = mmc_priv(mmc);
	u8 ctrl;

	if (host->version >= SDHCI_SPEC_200) {
		ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
		ctrl &= ~SDHCI_CTRL_DMA_MASK;
		if (host->flags & SDHCI_USE_ADMA_64BIT)
			ctrl |= SDHCI_CTRL_ADMA64;
		else
			ctrl |= SDHCI_CTRL_ADMA32;
		sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
	}
}

static void sdhci_cmdq_clear_set_irqs(struct mmc_host *mmc, bool clear)
{
	struct sdhci_host *host = mmc_priv(mmc);
@@ -3657,6 +3673,10 @@ static void sdhci_cmdq_post_cqe_halt(struct mmc_host *mmc)
	sdhci_writel(host, SDHCI_INT_RESPONSE, SDHCI_INT_STATUS);
}
#else
static void sdhci_cmdq_set_transfer_params(struct mmc_host *mmc)
{

}
static void sdhci_cmdq_clear_set_irqs(struct mmc_host *mmc, bool clear)
{

@@ -3706,6 +3726,7 @@ static const struct cmdq_host_ops sdhci_cmdq_ops = {
	.clear_set_dumpregs = sdhci_cmdq_clear_set_dumpregs,
	.enhanced_strobe_mask = sdhci_enhanced_strobe_mask,
	.post_cqe_halt = sdhci_cmdq_post_cqe_halt,
	.set_transfer_params = sdhci_cmdq_set_transfer_params,
};

#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT