linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-sparc64 / pbm.h
index dcfa762..dd35a2c 100644 (file)
@@ -15,8 +15,6 @@
 #include <asm/io.h>
 #include <asm/page.h>
 #include <asm/oplib.h>
-#include <asm/prom.h>
-#include <asm/of_device.h>
 #include <asm/iommu.h>
 
 /* The abstraction used here is that there are PCI controllers,
@@ -141,9 +139,6 @@ struct pci_pbm_info {
        /* Opaque 32-bit system bus Port ID. */
        u32                             portid;
 
-       /* Opaque 32-bit handle used for hypervisor calls.  */
-       u32                             devhandle;
-
        /* Chipset version information. */
        int                             chip_type;
 #define PBM_CHIP_TYPE_SABRE            1
@@ -155,15 +150,16 @@ struct pci_pbm_info {
        int                             chip_revision;
 
        /* Name used for top-level resources. */
-       char                            *name;
+       char                            name[64];
 
        /* OBP specific information. */
-       struct device_node              *prom_node;
-       struct linux_prom_pci_ranges    *pbm_ranges;
+       int                             prom_node;
+       char                            prom_name[64];
+       struct linux_prom_pci_ranges    pbm_ranges[PROM_PCIRNG_MAX];
        int                             num_pbm_ranges;
-       struct linux_prom_pci_intmap    *pbm_intmap;
+       struct linux_prom_pci_intmap    pbm_intmap[PROM_PCIIMAP_MAX];
        int                             num_pbm_intmap;
-       struct linux_prom_pci_intmask   *pbm_intmask;
+       struct linux_prom_pci_intmask   pbm_intmask;
        u64                             ino_bitmap;
 
        /* PBM I/O and Memory space resources. */
@@ -210,6 +206,7 @@ struct pci_controller_info {
 
        /* Operations which are controller specific. */
        void (*scan_bus)(struct pci_controller_info *);
+       unsigned int (*irq_build)(struct pci_pbm_info *, struct pci_dev *, unsigned int);
        void (*base_address_update)(struct pci_dev *, int);
        void (*resource_adjust)(struct pci_dev *, struct resource *, struct resource *);
 
@@ -217,6 +214,8 @@ struct pci_controller_info {
        struct pci_ops                  *pci_ops;
        unsigned int                    pci_first_busno;
        unsigned int                    pci_last_busno;
+
+       void                            *starfire_cookie;
 };
 
 /* PCI devices which are not bridges have this placed in their pci_dev
@@ -225,8 +224,8 @@ struct pci_controller_info {
  */
 struct pcidev_cookie {
        struct pci_pbm_info             *pbm;
-       struct device_node              *prom_node;
-       struct of_device                *op;
+       char                            prom_name[64];
+       int                             prom_node;
        struct linux_prom_pci_registers prom_regs[PROMREG_MAX];
        int num_prom_regs;
        struct linux_prom_pci_registers prom_assignments[PROMREG_MAX];