[POWERPC] Constify & voidify get_property()
[powerpc.git] / include / asm-powerpc / pci-bridge.h
index 223ec7b..4f55573 100644 (file)
@@ -1,10 +1,12 @@
 #ifndef _ASM_POWERPC_PCI_BRIDGE_H
 #define _ASM_POWERPC_PCI_BRIDGE_H
+#ifdef __KERNEL__
 
 #ifndef CONFIG_PPC64
 #include <asm-ppc/pci-bridge.h>
 #else
 
+#include <linux/config.h>
 #include <linux/pci.h>
 #include <linux/list.h>
 
@@ -21,6 +23,7 @@
 struct pci_controller {
        struct pci_bus *bus;
        char is_dynamic;
+       int node;
        void *arch_data;
        struct list_head list_node;
 
@@ -60,28 +63,23 @@ struct pci_controller;
 struct iommu_table;
 
 struct pci_dn {
-       int     busno;                  /* for pci devices */
-       int     bussubno;               /* for pci devices */
-       int     devfn;                  /* for pci devices */
+       int     busno;                  /* pci bus number */
+       int     bussubno;               /* pci subordinate bus number */
+       int     devfn;                  /* pci device and function number */
+       int     class_code;             /* pci device class */
 
 #ifdef CONFIG_PPC_PSERIES
        int     eeh_mode;               /* See eeh.h for possible EEH_MODEs */
        int     eeh_config_addr;
+       int     eeh_pe_config_addr; /* new-style partition endpoint address */
        int     eeh_check_count;        /* # times driver ignored error */
        int     eeh_freeze_count;       /* # times this device froze up. */
-       int     eeh_is_bridge;          /* device is pci-to-pci bridge */
 #endif
        int     pci_ext_config_space;   /* for pci devices */
        struct  pci_controller *phb;    /* for pci devices */
        struct  iommu_table *iommu_table;       /* for phb's or bridges */
        struct  pci_dev *pcidev;        /* back-pointer to the pci device */
        struct  device_node *node;      /* back-pointer to the device_node */
-#ifdef CONFIG_PPC_ISERIES
-       struct  list_head Device_List;
-       int     Irq;                    /* Assigned IRQ */
-       int     Flags;                  /* Possible flags(disable/bist)*/
-       u8      LogicalSlot;            /* Hv Slot Index for Tces */
-#endif
        u32     config_space[16];       /* saved PCI config space */
 };
 
@@ -125,12 +123,20 @@ static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus)
                return bus->sysdata; /* Must be root bus (PHB) */
 }
 
+/** Find the bus corresponding to the indicated device node */
+struct pci_bus * pcibios_find_pci_bus(struct device_node *dn);
+
 extern void pci_process_bridge_OF_ranges(struct pci_controller *hose,
                                         struct device_node *dev, int primary);
 
-extern int pcibios_remove_root_bus(struct pci_controller *phb);
+/** Remove all of the PCI devices under this bus */
+void pcibios_remove_pci_devices(struct pci_bus *bus);
 
-extern void phbs_remap_io(void);
+/** Discover new pci devices under this bus, and add them */
+void pcibios_add_pci_devices(struct pci_bus * bus);
+void pcibios_fixup_new_pci_devices(struct pci_bus *bus, int fix_bus);
+
+extern int pcibios_remove_root_bus(struct pci_controller *phb);
 
 static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
 {
@@ -140,14 +146,33 @@ static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
        return PCI_DN(busdn)->phb;
 }
 
+extern struct pci_controller*
+pci_find_hose_for_OF_device(struct device_node* node);
+
 extern struct pci_controller *
 pcibios_alloc_controller(struct device_node *dev);
 extern void pcibios_free_controller(struct pci_controller *phb);
 
+#ifdef CONFIG_PCI
+extern unsigned long pci_address_to_pio(phys_addr_t address);
+#else
+static inline unsigned long pci_address_to_pio(phys_addr_t address)
+{
+       return (unsigned long)-1;
+}
+#endif
+
 /* Return values for ppc_md.pci_probe_mode function */
 #define PCI_PROBE_NONE         -1      /* Don't look at this bus at all */
 #define PCI_PROBE_NORMAL       0       /* Do normal PCI probing */
 #define PCI_PROBE_DEVTREE      1       /* Instantiate from device tree */
 
+#ifdef CONFIG_NUMA
+#define PHB_SET_NODE(PHB, NODE)                ((PHB)->node = (NODE))
+#else
+#define PHB_SET_NODE(PHB, NODE)                ((PHB)->node = -1)
+#endif
+
 #endif /* CONFIG_PPC64 */
+#endif /* __KERNEL__ */
 #endif