diff options
Diffstat (limited to 'include/asm-ppc64/pci-bridge.h')
-rw-r--r-- | include/asm-ppc64/pci-bridge.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/include/asm-ppc64/pci-bridge.h b/include/asm-ppc64/pci-bridge.h index d8991389ab39..60cf8c838af0 100644 --- a/include/asm-ppc64/pci-bridge.h +++ b/include/asm-ppc64/pci-bridge.h | |||
@@ -2,7 +2,9 @@ | |||
2 | #ifndef _ASM_PCI_BRIDGE_H | 2 | #ifndef _ASM_PCI_BRIDGE_H |
3 | #define _ASM_PCI_BRIDGE_H | 3 | #define _ASM_PCI_BRIDGE_H |
4 | 4 | ||
5 | #include <linux/config.h> | ||
5 | #include <linux/pci.h> | 6 | #include <linux/pci.h> |
7 | #include <linux/list.h> | ||
6 | 8 | ||
7 | /* | 9 | /* |
8 | * This program is free software; you can redistribute it and/or | 10 | * This program is free software; you can redistribute it and/or |
@@ -34,7 +36,7 @@ struct pci_controller { | |||
34 | 36 | ||
35 | struct pci_ops *ops; | 37 | struct pci_ops *ops; |
36 | volatile unsigned int __iomem *cfg_addr; | 38 | volatile unsigned int __iomem *cfg_addr; |
37 | volatile unsigned char __iomem *cfg_data; | 39 | volatile void __iomem *cfg_data; |
38 | 40 | ||
39 | /* Currently, we limit ourselves to 1 IO range and 3 mem | 41 | /* Currently, we limit ourselves to 1 IO range and 3 mem |
40 | * ranges since the common pci_bus structure can't handle more | 42 | * ranges since the common pci_bus structure can't handle more |
@@ -71,6 +73,12 @@ struct pci_dn { | |||
71 | struct iommu_table *iommu_table; /* for phb's or bridges */ | 73 | struct iommu_table *iommu_table; /* for phb's or bridges */ |
72 | struct pci_dev *pcidev; /* back-pointer to the pci device */ | 74 | struct pci_dev *pcidev; /* back-pointer to the pci device */ |
73 | struct device_node *node; /* back-pointer to the device_node */ | 75 | struct device_node *node; /* back-pointer to the device_node */ |
76 | #ifdef CONFIG_PPC_ISERIES | ||
77 | struct list_head Device_List; | ||
78 | int Irq; /* Assigned IRQ */ | ||
79 | int Flags; /* Possible flags(disable/bist)*/ | ||
80 | u8 LogicalSlot; /* Hv Slot Index for Tces */ | ||
81 | #endif | ||
74 | u32 config_space[16]; /* saved PCI config space */ | 82 | u32 config_space[16]; /* saved PCI config space */ |
75 | }; | 83 | }; |
76 | 84 | ||
@@ -96,6 +104,16 @@ static inline struct device_node *pci_device_to_OF_node(struct pci_dev *dev) | |||
96 | return fetch_dev_dn(dev); | 104 | return fetch_dev_dn(dev); |
97 | } | 105 | } |
98 | 106 | ||
107 | static inline int pci_device_from_OF_node(struct device_node *np, | ||
108 | u8 *bus, u8 *devfn) | ||
109 | { | ||
110 | if (!PCI_DN(np)) | ||
111 | return -ENODEV; | ||
112 | *bus = PCI_DN(np)->busno; | ||
113 | *devfn = PCI_DN(np)->devfn; | ||
114 | return 0; | ||
115 | } | ||
116 | |||
99 | static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus) | 117 | static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus) |
100 | { | 118 | { |
101 | if (bus->self) | 119 | if (bus->self) |
@@ -105,7 +123,7 @@ static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus) | |||
105 | } | 123 | } |
106 | 124 | ||
107 | extern void pci_process_bridge_OF_ranges(struct pci_controller *hose, | 125 | extern void pci_process_bridge_OF_ranges(struct pci_controller *hose, |
108 | struct device_node *dev); | 126 | struct device_node *dev, int primary); |
109 | 127 | ||
110 | extern int pcibios_remove_root_bus(struct pci_controller *phb); | 128 | extern int pcibios_remove_root_bus(struct pci_controller *phb); |
111 | 129 | ||