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

Commit 386dc3b8 authored by Tang Yuantian's avatar Tang Yuantian Committed by Tejun Heo
Browse files

ahci: qoriq: added a condition to enable dma coherence



Enable DMA coherence in SATA controller on condition that
dma-coherent property exists in sata node in DTS.

Signed-off-by: default avatarTang Yuantian <yuantian.tang@nxp.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent d4ae1e26
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ struct ahci_qoriq_priv {
	struct ccsr_ahci *reg_base;
	enum ahci_qoriq_type type;
	void __iomem *ecc_addr;
	bool is_dmacoherent;
};

static const struct of_device_id ahci_qoriq_of_match[] = {
@@ -164,18 +165,22 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
		writel(LS1021A_PORT_PHY4, reg_base + PORT_PHY4);
		writel(LS1021A_PORT_PHY5, reg_base + PORT_PHY5);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		writel(AHCI_PORT_AXICC_CFG, reg_base + LS1021A_AXICC_ADDR);
		if (qpriv->is_dmacoherent)
			writel(AHCI_PORT_AXICC_CFG,
					reg_base + LS1021A_AXICC_ADDR);
		break;

	case AHCI_LS1043A:
		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		if (qpriv->is_dmacoherent)
			writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC);
		break;

	case AHCI_LS2080A:
		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		if (qpriv->is_dmacoherent)
			writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC);
		break;

@@ -183,6 +188,7 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
		writel(LS1046A_SATA_ECC_DIS, qpriv->ecc_addr);
		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		if (qpriv->is_dmacoherent)
			writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC);
		break;
	}
@@ -221,6 +227,7 @@ static int ahci_qoriq_probe(struct platform_device *pdev)
		if (IS_ERR(qoriq_priv->ecc_addr))
			return PTR_ERR(qoriq_priv->ecc_addr);
	}
	qoriq_priv->is_dmacoherent = of_dma_is_coherent(np);

	rc = ahci_platform_enable_resources(hpriv);
	if (rc)