Merge remote-tracking branch 'lorenzo/pci/endpoint' into next
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 1 Feb 2018 17:40:01 +0000 (11:40 -0600)
committerBjorn Helgaas <helgaas@kernel.org>
Thu, 1 Feb 2018 17:40:01 +0000 (11:40 -0600)
* lorenzo/pci/endpoint:
  PCI: endpoint: Use EPC's device in dma_alloc_coherent()/dma_free_coherent()
  PCI: designware-ep: Fix ->get_msi() to check MSI_EN bit
  PCI: endpoint: Fix find_first_zero_bit() usage
  PCI: endpoint: Populate func_no before calling pci_epc_add_epf()
  PCI: designware-ep: Fix find_first_zero_bit() usage

1  2 
drivers/pci/dwc/pcie-designware-ep.c
drivers/pci/dwc/pcie-designware.h
drivers/pci/endpoint/pci-ep-cfs.c
drivers/pci/endpoint/pci-epc-core.c

index 52edcb19da36585f2b5a23670c25e5d50a70344d,0989946df32c96ddbff1af452457acf3e4545e4c..d3fc67048e3be1c0720b9729686706e641cc9822
@@@ -126,11 -119,10 +124,11 @@@ static void dw_pcie_ep_clear_bar(struc
        dw_pcie_ep_reset_bar(pci, bar);
  
        dw_pcie_disable_atu(pci, atu_index, DW_PCIE_REGION_INBOUND);
-       clear_bit(atu_index, &ep->ib_window_map);
+       clear_bit(atu_index, ep->ib_window_map);
  }
  
 -static int dw_pcie_ep_set_bar(struct pci_epc *epc, enum pci_barno bar,
 +static int dw_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no,
 +                            enum pci_barno bar,
                              dma_addr_t bar_phys, size_t size, int flags)
  {
        int ret;
@@@ -184,11 -173,10 +182,11 @@@ static void dw_pcie_ep_unmap_addr(struc
                return;
  
        dw_pcie_disable_atu(pci, atu_index, DW_PCIE_REGION_OUTBOUND);
-       clear_bit(atu_index, &ep->ob_window_map);
+       clear_bit(atu_index, ep->ob_window_map);
  }
  
 -static int dw_pcie_ep_map_addr(struct pci_epc *epc, phys_addr_t addr,
 +static int dw_pcie_ep_map_addr(struct pci_epc *epc, u8 func_no,
 +                             phys_addr_t addr,
                               u64 pci_addr, size_t size)
  {
        int ret;
        return 0;
  }
  
 -static int dw_pcie_ep_get_msi(struct pci_epc *epc)
 +static int dw_pcie_ep_get_msi(struct pci_epc *epc, u8 func_no)
  {
        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);
  
index eae17d96e6f79073040b0e2c0cde4948f2046dbd,8700ba12c130148f82b7115e915fa5839ba8146a..6f530cfe342392a5a8ce1787f1dbb2c3c30a45f9
  
  #define MSI_MESSAGE_CONTROL           0x52
  #define MSI_CAP_MMC_SHIFT             1
 +#define MSI_CAP_MMC_MASK              (7 << MSI_CAP_MMC_SHIFT)
  #define MSI_CAP_MME_SHIFT             4
+ #define MSI_CAP_MSI_EN_MASK           0x1
  #define MSI_CAP_MME_MASK              (7 << MSI_CAP_MME_SHIFT)
  #define MSI_MESSAGE_ADDR_L32          0x54
  #define MSI_MESSAGE_ADDR_U32          0x58
@@@ -196,12 -197,10 +201,12 @@@ struct dw_pcie_ep 
        size_t                  page_size;
        u8                      bar_to_atu[6];
        phys_addr_t             *outbound_addr;
-       unsigned long           ib_window_map;
-       unsigned long           ob_window_map;
+       unsigned long           *ib_window_map;
+       unsigned long           *ob_window_map;
        u32                     num_ib_windows;
        u32                     num_ob_windows;
 +      void __iomem            *msi_mem;
 +      phys_addr_t             msi_mem_phys;
  };
  
  struct dw_pcie_ops {
Simple merge
Simple merge