Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb...
[firefly-linux-kernel-4.4.55.git] / include / linux / of_pci.h
1 #ifndef __OF_PCI_H
2 #define __OF_PCI_H
3
4 #include <linux/pci.h>
5 #include <linux/msi.h>
6
7 struct pci_dev;
8 struct of_phandle_args;
9 struct device_node;
10
11 #ifdef CONFIG_OF
12 int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq);
13 struct device_node *of_pci_find_child_device(struct device_node *parent,
14                                              unsigned int devfn);
15 int of_pci_get_devfn(struct device_node *np);
16 int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin);
17 int of_pci_parse_bus_range(struct device_node *node, struct resource *res);
18 #else
19 static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq)
20 {
21         return 0;
22 }
23
24 static inline struct device_node *of_pci_find_child_device(struct device_node *parent,
25                                              unsigned int devfn)
26 {
27         return NULL;
28 }
29
30 static inline int of_pci_get_devfn(struct device_node *np)
31 {
32         return -EINVAL;
33 }
34
35 static inline int
36 of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin)
37 {
38         return 0;
39 }
40
41 static inline int
42 of_pci_parse_bus_range(struct device_node *node, struct resource *res)
43 {
44         return -EINVAL;
45 }
46 #endif
47
48 #if defined(CONFIG_OF) && defined(CONFIG_PCI_MSI)
49 int of_pci_msi_chip_add(struct msi_chip *chip);
50 void of_pci_msi_chip_remove(struct msi_chip *chip);
51 struct msi_chip *of_pci_find_msi_chip_by_node(struct device_node *of_node);
52 #else
53 static inline int of_pci_msi_chip_add(struct msi_chip *chip) { return -EINVAL; }
54 static inline void of_pci_msi_chip_remove(struct msi_chip *chip) { }
55 static inline struct msi_chip *
56 of_pci_find_msi_chip_by_node(struct device_node *of_node) { return NULL; }
57 #endif
58
59 #endif