Commit 72199051 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

Merge branch 'pci/imx6'

  - Enable MSI for imx6 downstream components (Richard Zhu)

* pci/imx6:
  PCI: imx: Enable MSI from downstream components
parents cdf4f4dc 75cb8d20
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -74,6 +74,7 @@ struct imx6_pcie {
#define PHY_PLL_LOCK_WAIT_USLEEP_MAX	200
#define PHY_PLL_LOCK_WAIT_USLEEP_MAX	200


/* PCIe Root Complex registers (memory-mapped) */
/* PCIe Root Complex registers (memory-mapped) */
#define PCIE_RC_IMX6_MSI_CAP			0x50
#define PCIE_RC_LCR				0x7c
#define PCIE_RC_LCR				0x7c
#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN1	0x1
#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN1	0x1
#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN2	0x2
#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN2	0x2
@@ -926,6 +927,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)
	struct resource *dbi_base;
	struct resource *dbi_base;
	struct device_node *node = dev->of_node;
	struct device_node *node = dev->of_node;
	int ret;
	int ret;
	u16 val;


	imx6_pcie = devm_kzalloc(dev, sizeof(*imx6_pcie), GFP_KERNEL);
	imx6_pcie = devm_kzalloc(dev, sizeof(*imx6_pcie), GFP_KERNEL);
	if (!imx6_pcie)
	if (!imx6_pcie)
@@ -1071,6 +1073,14 @@ static int imx6_pcie_probe(struct platform_device *pdev)
	if (ret < 0)
	if (ret < 0)
		return ret;
		return ret;


	if (pci_msi_enabled()) {
		val = dw_pcie_readw_dbi(pci, PCIE_RC_IMX6_MSI_CAP +
					PCI_MSI_FLAGS);
		val |= PCI_MSI_FLAGS_ENABLE;
		dw_pcie_writew_dbi(pci, PCIE_RC_IMX6_MSI_CAP + PCI_MSI_FLAGS,
				   val);
	}

	return 0;
	return 0;
}
}