aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2018-01-31 11:21:33 -0500
committerBjorn Helgaas <helgaas@kernel.org>2018-01-31 11:21:33 -0500
commitc7f75aecb2d9436c4bef8b413231f60deae3453c (patch)
treead6082d4a0d79226637af66ee8f2fc4b24590d4b /include
parenta07ae842e209196ffe0fe8feacd489aba772d8a0 (diff)
parent37dddf14f1aecd9fa89a5136b38b33cab54b9195 (diff)
Merge remote-tracking branch 'lorenzo/pci/cadence' into next
* lorenzo/pci/cadence: PCI: cadence: Add EndPoint Controller driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe endpoint controller PCI: endpoint: Fix EPF device name to support multi-function devices PCI: endpoint: Add the function number as argument to EPC ops PCI: cadence: Add host driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe host controller PCI: Add vendor ID for Cadence PCI: Add generic function to probe PCI host controllers PCI: generic: fix missing call of pci_free_resource_list() PCI: OF: Add generic function to parse and allocate PCI resources PCI: Regroup all PCI related entries into drivers/pci/Makefile Conflicts: drivers/pci/of.c include/linux/pci.h
Diffstat (limited to 'include')
-rw-r--r--include/linux/pci-epc.h43
-rw-r--r--include/linux/pci.h12
-rw-r--r--include/linux/pci_ids.h2
3 files changed, 38 insertions, 19 deletions
diff --git a/include/linux/pci-epc.h b/include/linux/pci-epc.h
index f7a04e1af112..e58e2de8936b 100644
--- a/include/linux/pci-epc.h
+++ b/include/linux/pci-epc.h
@@ -39,17 +39,20 @@ enum pci_epc_irq_type {
39 * @owner: the module owner containing the ops 39 * @owner: the module owner containing the ops
40 */ 40 */
41struct pci_epc_ops { 41struct pci_epc_ops {
42 int (*write_header)(struct pci_epc *pci_epc, 42 int (*write_header)(struct pci_epc *epc, u8 func_no,
43 struct pci_epf_header *hdr); 43 struct pci_epf_header *hdr);
44 int (*set_bar)(struct pci_epc *epc, enum pci_barno bar, 44 int (*set_bar)(struct pci_epc *epc, u8 func_no,
45 enum pci_barno bar,
45 dma_addr_t bar_phys, size_t size, int flags); 46 dma_addr_t bar_phys, size_t size, int flags);
46 void (*clear_bar)(struct pci_epc *epc, enum pci_barno bar); 47 void (*clear_bar)(struct pci_epc *epc, u8 func_no,
47 int (*map_addr)(struct pci_epc *epc, phys_addr_t addr, 48 enum pci_barno bar);
48 u64 pci_addr, size_t size); 49 int (*map_addr)(struct pci_epc *epc, u8 func_no,
49 void (*unmap_addr)(struct pci_epc *epc, phys_addr_t addr); 50 phys_addr_t addr, u64 pci_addr, size_t size);
50 int (*set_msi)(struct pci_epc *epc, u8 interrupts); 51 void (*unmap_addr)(struct pci_epc *epc, u8 func_no,
51 int (*get_msi)(struct pci_epc *epc); 52 phys_addr_t addr);
52 int (*raise_irq)(struct pci_epc *pci_epc, 53 int (*set_msi)(struct pci_epc *epc, u8 func_no, u8 interrupts);
54 int (*get_msi)(struct pci_epc *epc, u8 func_no);
55 int (*raise_irq)(struct pci_epc *epc, u8 func_no,
53 enum pci_epc_irq_type type, u8 interrupt_num); 56 enum pci_epc_irq_type type, u8 interrupt_num);
54 int (*start)(struct pci_epc *epc); 57 int (*start)(struct pci_epc *epc);
55 void (*stop)(struct pci_epc *epc); 58 void (*stop)(struct pci_epc *epc);
@@ -124,17 +127,21 @@ void pci_epc_destroy(struct pci_epc *epc);
124int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf); 127int pci_epc_add_epf(struct pci_epc *epc, struct pci_epf *epf);
125void pci_epc_linkup(struct pci_epc *epc); 128void pci_epc_linkup(struct pci_epc *epc);
126void pci_epc_remove_epf(struct pci_epc *epc, struct pci_epf *epf); 129void pci_epc_remove_epf(struct pci_epc *epc, struct pci_epf *epf);
127int pci_epc_write_header(struct pci_epc *epc, struct pci_epf_header *hdr); 130int pci_epc_write_header(struct pci_epc *epc, u8 func_no,
128int pci_epc_set_bar(struct pci_epc *epc, enum pci_barno bar, 131 struct pci_epf_header *hdr);
132int pci_epc_set_bar(struct pci_epc *epc, u8 func_no,
133 enum pci_barno bar,
129 dma_addr_t bar_phys, size_t size, int flags); 134 dma_addr_t bar_phys, size_t size, int flags);
130void pci_epc_clear_bar(struct pci_epc *epc, int bar); 135void pci_epc_clear_bar(struct pci_epc *epc, u8 func_no, int bar);
131int pci_epc_map_addr(struct pci_epc *epc, phys_addr_t phys_addr, 136int pci_epc_map_addr(struct pci_epc *epc, u8 func_no,
137 phys_addr_t phys_addr,
132 u64 pci_addr, size_t size); 138 u64 pci_addr, size_t size);
133void pci_epc_unmap_addr(struct pci_epc *epc, phys_addr_t phys_addr); 139void pci_epc_unmap_addr(struct pci_epc *epc, u8 func_no,
134int pci_epc_set_msi(struct pci_epc *epc, u8 interrupts); 140 phys_addr_t phys_addr);
135int pci_epc_get_msi(struct pci_epc *epc); 141int pci_epc_set_msi(struct pci_epc *epc, u8 func_no, u8 interrupts);
136int pci_epc_raise_irq(struct pci_epc *epc, enum pci_epc_irq_type type, 142int pci_epc_get_msi(struct pci_epc *epc, u8 func_no);
137 u8 interrupt_num); 143int pci_epc_raise_irq(struct pci_epc *epc, u8 func_no,
144 enum pci_epc_irq_type type, u8 interrupt_num);
138int pci_epc_start(struct pci_epc *epc); 145int pci_epc_start(struct pci_epc *epc);
139void pci_epc_stop(struct pci_epc *epc); 146void pci_epc_stop(struct pci_epc *epc);
140struct pci_epc *pci_epc_get(const char *epc_name); 147struct pci_epc *pci_epc_get(const char *epc_name);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a1e10ba7b612..43dcecd6533d 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -879,6 +879,7 @@ struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
879struct pci_bus *pci_create_root_bus(struct device *parent, int bus, 879struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
880 struct pci_ops *ops, void *sysdata, 880 struct pci_ops *ops, void *sysdata,
881 struct list_head *resources); 881 struct list_head *resources);
882int pci_host_probe(struct pci_host_bridge *bridge);
882int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax); 883int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax);
883int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax); 884int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax);
884void pci_bus_release_busn_res(struct pci_bus *b); 885void pci_bus_release_busn_res(struct pci_bus *b);
@@ -2171,6 +2172,9 @@ void pci_release_of_node(struct pci_dev *dev);
2171void pci_set_bus_of_node(struct pci_bus *bus); 2172void pci_set_bus_of_node(struct pci_bus *bus);
2172void pci_release_bus_of_node(struct pci_bus *bus); 2173void pci_release_bus_of_node(struct pci_bus *bus);
2173struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus); 2174struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus);
2175int pci_parse_request_of_pci_ranges(struct device *dev,
2176 struct list_head *resources,
2177 struct resource **bus_range);
2174 2178
2175/* Arch may override this (weak) */ 2179/* Arch may override this (weak) */
2176struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus); 2180struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);
@@ -2195,7 +2199,13 @@ static inline struct device_node *
2195pci_device_to_OF_node(const struct pci_dev *pdev) { return NULL; } 2199pci_device_to_OF_node(const struct pci_dev *pdev) { return NULL; }
2196static inline struct irq_domain * 2200static inline struct irq_domain *
2197pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; } 2201pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
2198#endif /* CONFIG_OF */ 2202static inline int pci_parse_request_of_pci_ranges(struct device *dev,
2203 struct list_head *resources,
2204 struct resource **bus_range)
2205{
2206 return -EINVAL;
2207}
2208#endif /* CONFIG_OF */
2199 2209
2200#ifdef CONFIG_ACPI 2210#ifdef CONFIG_ACPI
2201struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus); 2211struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus);
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ab20dc5db423..eb13e84e1fef 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -2381,6 +2381,8 @@
2381 2381
2382#define PCI_VENDOR_ID_LENOVO 0x17aa 2382#define PCI_VENDOR_ID_LENOVO 0x17aa
2383 2383
2384#define PCI_VENDOR_ID_CDNS 0x17cd
2385
2384#define PCI_VENDOR_ID_ARECA 0x17d3 2386#define PCI_VENDOR_ID_ARECA 0x17d3
2385#define PCI_DEVICE_ID_ARECA_1110 0x1110 2387#define PCI_DEVICE_ID_ARECA_1110 0x1110
2386#define PCI_DEVICE_ID_ARECA_1120 0x1120 2388#define PCI_DEVICE_ID_ARECA_1120 0x1120