aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2019-01-02 16:31:15 -0500
committerBjorn Helgaas <bhelgaas@google.com>2019-01-02 16:31:15 -0500
commit72199051af6205049e96ee7ed34f4fc5f44d1baf (patch)
tree86d93c811d94b6f4f33801963d830c359e2dd213
parentcdf4f4dc118bafd97d0148d53730e396ece11afa (diff)
parent75cb8d20c112aba70f23d98e3f8d0a38ace16006 (diff)
Merge branch 'pci/imx6'
- Enable MSI for imx6 downstream components (Richard Zhu) * pci/imx6: PCI: imx: Enable MSI from downstream components
-rw-r--r--drivers/pci/controller/dwc/pci-imx6.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 25a2b7683e55..03107cc25dfc 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -74,6 +74,7 @@ struct imx6_pcie {
74#define PHY_PLL_LOCK_WAIT_USLEEP_MAX 200 74#define PHY_PLL_LOCK_WAIT_USLEEP_MAX 200
75 75
76/* PCIe Root Complex registers (memory-mapped) */ 76/* PCIe Root Complex registers (memory-mapped) */
77#define PCIE_RC_IMX6_MSI_CAP 0x50
77#define PCIE_RC_LCR 0x7c 78#define PCIE_RC_LCR 0x7c
78#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN1 0x1 79#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN1 0x1
79#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN2 0x2 80#define PCIE_RC_LCR_MAX_LINK_SPEEDS_GEN2 0x2
@@ -926,6 +927,7 @@ static int imx6_pcie_probe(struct platform_device *pdev)
926 struct resource *dbi_base; 927 struct resource *dbi_base;
927 struct device_node *node = dev->of_node; 928 struct device_node *node = dev->of_node;
928 int ret; 929 int ret;
930 u16 val;
929 931
930 imx6_pcie = devm_kzalloc(dev, sizeof(*imx6_pcie), GFP_KERNEL); 932 imx6_pcie = devm_kzalloc(dev, sizeof(*imx6_pcie), GFP_KERNEL);
931 if (!imx6_pcie) 933 if (!imx6_pcie)
@@ -1071,6 +1073,14 @@ static int imx6_pcie_probe(struct platform_device *pdev)
1071 if (ret < 0) 1073 if (ret < 0)
1072 return ret; 1074 return ret;
1073 1075
1076 if (pci_msi_enabled()) {
1077 val = dw_pcie_readw_dbi(pci, PCIE_RC_IMX6_MSI_CAP +
1078 PCI_MSI_FLAGS);
1079 val |= PCI_MSI_FLAGS_ENABLE;
1080 dw_pcie_writew_dbi(pci, PCIE_RC_IMX6_MSI_CAP + PCI_MSI_FLAGS,
1081 val);
1082 }
1083
1074 return 0; 1084 return 0;
1075} 1085}
1076 1086