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

Commit 2facc6da authored by Tang Yuantian's avatar Tang Yuantian Committed by Tejun Heo
Browse files

ahci: qoriq: added ls1046a platform support



Ls1046a is a new introduced soc which supports ATA3.0.

Signed-off-by: default avatarTang Yuantian <yuantian.tang@nxp.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 1001354c
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -46,11 +46,13 @@
#define LS1021A_AXICC_ADDR	0xC0

#define SATA_ECC_DISABLE	0x00020000
#define LS1046A_SATA_ECC_DIS	0x80000000

enum ahci_qoriq_type {
	AHCI_LS1021A,
	AHCI_LS1043A,
	AHCI_LS2080A,
	AHCI_LS1046A,
};

struct ahci_qoriq_priv {
@@ -63,6 +65,7 @@ static const struct of_device_id ahci_qoriq_of_match[] = {
	{ .compatible = "fsl,ls1021a-ahci", .data = (void *)AHCI_LS1021A},
	{ .compatible = "fsl,ls1043a-ahci", .data = (void *)AHCI_LS1043A},
	{ .compatible = "fsl,ls2080a-ahci", .data = (void *)AHCI_LS2080A},
	{ .compatible = "fsl,ls1046a-ahci", .data = (void *)AHCI_LS1046A},
	{},
};
MODULE_DEVICE_TABLE(of, ahci_qoriq_of_match);
@@ -175,6 +178,13 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC);
		break;

	case AHCI_LS1046A:
		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);
		writel(AHCI_PORT_AXICC_CFG, reg_base + PORT_AXICC);
		break;
	}

	return 0;
@@ -204,9 +214,9 @@ static int ahci_qoriq_probe(struct platform_device *pdev)

	qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;

	if (qoriq_priv->type == AHCI_LS1021A) {
	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
			"sata-ecc");
	if (res) {
		qoriq_priv->ecc_addr = devm_ioremap_resource(dev, res);
		if (IS_ERR(qoriq_priv->ecc_addr))
			return PTR_ERR(qoriq_priv->ecc_addr);