aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/dwc/pcie-designware-ep.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/dwc/pcie-designware-ep.c')
-rw-r--r--drivers/pci/dwc/pcie-designware-ep.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/pci/dwc/pcie-designware-ep.c b/drivers/pci/dwc/pcie-designware-ep.c
index d5eb143040e3..0989946df32c 100644
--- a/drivers/pci/dwc/pcie-designware-ep.c
+++ b/drivers/pci/dwc/pcie-designware-ep.c
@@ -195,20 +195,14 @@ static int dw_pcie_ep_map_addr(struct pci_epc *epc, phys_addr_t addr,
195static int dw_pcie_ep_get_msi(struct pci_epc *epc) 195static int dw_pcie_ep_get_msi(struct pci_epc *epc)
196{ 196{
197 int val; 197 int val;
198 u32 lower_addr;
199 u32 upper_addr;
200 struct dw_pcie_ep *ep = epc_get_drvdata(epc); 198 struct dw_pcie_ep *ep = epc_get_drvdata(epc);
201 struct dw_pcie *pci = to_dw_pcie_from_ep(ep); 199 struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
202 200
203 val = dw_pcie_readb_dbi(pci, MSI_MESSAGE_CONTROL); 201 val = dw_pcie_readw_dbi(pci, MSI_MESSAGE_CONTROL);
204 val = (val & MSI_CAP_MME_MASK) >> MSI_CAP_MME_SHIFT; 202 if (!(val & MSI_CAP_MSI_EN_MASK))
205
206 lower_addr = dw_pcie_readl_dbi(pci, MSI_MESSAGE_ADDR_L32);
207 upper_addr = dw_pcie_readl_dbi(pci, MSI_MESSAGE_ADDR_U32);
208
209 if (!(lower_addr || upper_addr))
210 return -EINVAL; 203 return -EINVAL;
211 204
205 val = (val & MSI_CAP_MME_MASK) >> MSI_CAP_MME_SHIFT;
212 return val; 206 return val;
213} 207}
214 208