diff options
author | Kishon Vijay Abraham I <kishon@ti.com> | 2017-03-27 05:45:07 -0400 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2017-04-28 11:23:17 -0400 |
commit | 5ffd90a035a273068a8bbef74a01ae923b80110b (patch) | |
tree | 490aa1aea78d8899cbd67a7129a339517034289e | |
parent | b12befecd7de905a05053eb6a266e3b97528c6d4 (diff) |
PCI: dwc: dra7xx: Facilitate wrapper and MSI interrupts to be enabled independently
No functional change. Split dra7xx_pcie_enable_interrupts() into
dra7xx_pcie_enable_wrapper_interrupts() and
dra7xx_pcie_enable_msi_interrupts() so that wrapper interrupts and MSI
interrupts can be enabled independently. This is in preparation for adding
EP mode support to dra7xx driver since EP mode doesn't have to enable
msi_interrupts.
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r-- | drivers/pci/dwc/pci-dra7xx.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c index 7c9ed6a6675c..d78974d20360 100644 --- a/drivers/pci/dwc/pci-dra7xx.c +++ b/drivers/pci/dwc/pci-dra7xx.c | |||
@@ -140,18 +140,30 @@ static int dra7xx_pcie_establish_link(struct dra7xx_pcie *dra7xx) | |||
140 | return dw_pcie_wait_for_link(pci); | 140 | return dw_pcie_wait_for_link(pci); |
141 | } | 141 | } |
142 | 142 | ||
143 | static void dra7xx_pcie_enable_interrupts(struct dra7xx_pcie *dra7xx) | 143 | static void dra7xx_pcie_enable_msi_interrupts(struct dra7xx_pcie *dra7xx) |
144 | { | 144 | { |
145 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MAIN, | ||
146 | ~INTERRUPTS); | ||
147 | dra7xx_pcie_writel(dra7xx, | ||
148 | PCIECTRL_DRA7XX_CONF_IRQENABLE_SET_MAIN, INTERRUPTS); | ||
149 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, | 145 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, |
150 | ~LEG_EP_INTERRUPTS & ~MSI); | 146 | ~LEG_EP_INTERRUPTS & ~MSI); |
151 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQENABLE_SET_MSI, | 147 | |
148 | dra7xx_pcie_writel(dra7xx, | ||
149 | PCIECTRL_DRA7XX_CONF_IRQENABLE_SET_MSI, | ||
152 | MSI | LEG_EP_INTERRUPTS); | 150 | MSI | LEG_EP_INTERRUPTS); |
153 | } | 151 | } |
154 | 152 | ||
153 | static void dra7xx_pcie_enable_wrapper_interrupts(struct dra7xx_pcie *dra7xx) | ||
154 | { | ||
155 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MAIN, | ||
156 | ~INTERRUPTS); | ||
157 | dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQENABLE_SET_MAIN, | ||
158 | INTERRUPTS); | ||
159 | } | ||
160 | |||
161 | static void dra7xx_pcie_enable_interrupts(struct dra7xx_pcie *dra7xx) | ||
162 | { | ||
163 | dra7xx_pcie_enable_wrapper_interrupts(dra7xx); | ||
164 | dra7xx_pcie_enable_msi_interrupts(dra7xx); | ||
165 | } | ||
166 | |||
155 | static void dra7xx_pcie_host_init(struct pcie_port *pp) | 167 | static void dra7xx_pcie_host_init(struct pcie_port *pp) |
156 | { | 168 | { |
157 | struct dw_pcie *pci = to_dw_pcie_from_pp(pp); | 169 | struct dw_pcie *pci = to_dw_pcie_from_pp(pp); |