PCI: designware-ep: Fix ->get_msi() to check MSI_EN bit
[platform/kernel/linux-rpi.git] / drivers / pci / dwc / pcie-designware-ep.c
index d53d5f1..7c62187 100644 (file)
@@ -197,20 +197,14 @@ static int dw_pcie_ep_map_addr(struct pci_epc *epc, phys_addr_t addr,
 static int dw_pcie_ep_get_msi(struct pci_epc *epc)
 {
        int val;
-       u32 lower_addr;
-       u32 upper_addr;
        struct dw_pcie_ep *ep = epc_get_drvdata(epc);
        struct dw_pcie *pci = to_dw_pcie_from_ep(ep);
 
-       val = dw_pcie_readb_dbi(pci, MSI_MESSAGE_CONTROL);
-       val = (val & MSI_CAP_MME_MASK) >> MSI_CAP_MME_SHIFT;
-
-       lower_addr = dw_pcie_readl_dbi(pci, MSI_MESSAGE_ADDR_L32);
-       upper_addr = dw_pcie_readl_dbi(pci, MSI_MESSAGE_ADDR_U32);
-
-       if (!(lower_addr || upper_addr))
+       val = dw_pcie_readw_dbi(pci, MSI_MESSAGE_CONTROL);
+       if (!(val & MSI_CAP_MSI_EN_MASK))
                return -EINVAL;
 
+       val = (val & MSI_CAP_MME_MASK) >> MSI_CAP_MME_SHIFT;
        return val;
 }