diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2019-01-02 16:31:15 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2019-01-02 16:31:15 -0500 |
commit | 72199051af6205049e96ee7ed34f4fc5f44d1baf (patch) | |
tree | 86d93c811d94b6f4f33801963d830c359e2dd213 | |
parent | cdf4f4dc118bafd97d0148d53730e396ece11afa (diff) | |
parent | 75cb8d20c112aba70f23d98e3f8d0a38ace16006 (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.c | 10 |
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 | ||