Commit 72199051 authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/imx6'

  - Enable MSI for imx6 downstream components (Richard Zhu)

* pci/imx6:
  PCI: imx: Enable MSI from downstream components
parents cdf4f4dc 75cb8d20
...@@ -74,6 +74,7 @@ struct imx6_pcie { ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment