struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,
                                            struct device *parent)
 {
-       struct device_node *node = pbm->prom_node;
+       struct device_node *node = pbm->op->node;
        struct pci_bus *bus;
 
        printk("PCI: Scanning PBM %s\n", node->full_name);
 
 
 void pci_get_pbm_props(struct pci_pbm_info *pbm)
 {
-       const u32 *val = of_get_property(pbm->prom_node, "bus-range", NULL);
+       const u32 *val = of_get_property(pbm->op->node, "bus-range", NULL);
 
        pbm->pci_first_busno = val[0];
        pbm->pci_last_busno = val[1];
 
-       val = of_get_property(pbm->prom_node, "ino-bitmap", NULL);
+       val = of_get_property(pbm->op->node, "ino-bitmap", NULL);
        if (val) {
                pbm->ino_bitmap = (((u64)val[1] << 32UL) |
                                   ((u64)val[0] <<  0UL));
 
 static void pci_register_iommu_region(struct pci_pbm_info *pbm)
 {
-       const u32 *vdma = of_get_property(pbm->prom_node, "virtual-dma", NULL);
+       const u32 *vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);
 
        if (vdma) {
                struct resource *rp = kmalloc(sizeof(*rp), GFP_KERNEL);
        int num_pbm_ranges;
 
        saw_mem = saw_io = 0;
-       pbm_ranges = of_get_property(pbm->prom_node, "ranges", &i);
+       pbm_ranges = of_get_property(pbm->op->node, "ranges", &i);
        if (!pbm_ranges) {
                prom_printf("PCI: Fatal error, missing PBM ranges property "
                            " for %s\n",
 
        pbm->index = pci_num_pbms++;
 
        pbm->portid = portid;
-       pbm->prom_node = dp;
+       pbm->op = op;
        pbm->name = dp->full_name;
 
        regs = of_get_property(dp, "reg", NULL);
 
 #include <linux/spinlock.h>
 #include <linux/pci.h>
 #include <linux/msi.h>
+#include <linux/of_device.h>
 #include <asm/io.h>
 #include <asm/prom.h>
 #include <asm/iommu.h>
        char                            *name;
 
        /* OBP specific information. */
-       struct device_node              *prom_node;
+       struct of_device                *op;
        u64                             ino_bitmap;
 
        /* PBM I/O and Memory space resources. */
 
        const u32 *val;
        int len;
 
-       val = of_get_property(pbm->prom_node, "#msi-eqs", &len);
+       val = of_get_property(pbm->op->node, "#msi-eqs", &len);
        if (!val || len != 4)
                goto no_msi;
        pbm->msiq_num = *val;
                        u32 msi64_len;
                } *arng;
 
-               val = of_get_property(pbm->prom_node, "msi-eq-size", &len);
+               val = of_get_property(pbm->op->node, "msi-eq-size", &len);
                if (!val || len != 4)
                        goto no_msi;
 
                pbm->msiq_ent_count = *val;
 
-               mqp = of_get_property(pbm->prom_node,
+               mqp = of_get_property(pbm->op->node,
                                      "msi-eq-to-devino", &len);
                if (!mqp)
-                       mqp = of_get_property(pbm->prom_node,
+                       mqp = of_get_property(pbm->op->node,
                                              "msi-eq-devino", &len);
                if (!mqp || len != sizeof(struct msiq_prop))
                        goto no_msi;
                pbm->msiq_first = mqp->first_msiq;
                pbm->msiq_first_devino = mqp->first_devino;
 
-               val = of_get_property(pbm->prom_node, "#msi", &len);
+               val = of_get_property(pbm->op->node, "#msi", &len);
                if (!val || len != 4)
                        goto no_msi;
                pbm->msi_num = *val;
 
-               mrng = of_get_property(pbm->prom_node, "msi-ranges", &len);
+               mrng = of_get_property(pbm->op->node, "msi-ranges", &len);
                if (!mrng || len != sizeof(struct msi_range_prop))
                        goto no_msi;
                pbm->msi_first = mrng->first_msi;
 
-               val = of_get_property(pbm->prom_node, "msi-data-mask", &len);
+               val = of_get_property(pbm->op->node, "msi-data-mask", &len);
                if (!val || len != 4)
                        goto no_msi;
                pbm->msi_data_mask = *val;
 
-               val = of_get_property(pbm->prom_node, "msix-data-width", &len);
+               val = of_get_property(pbm->op->node, "msix-data-width", &len);
                if (!val || len != 4)
                        goto no_msi;
                pbm->msix_data_width = *val;
 
-               arng = of_get_property(pbm->prom_node, "msi-address-ranges",
+               arng = of_get_property(pbm->op->node, "msi-address-ranges",
                                       &len);
                if (!arng || len != sizeof(struct addr_range_prop))
                        goto no_msi;
 
 #define  PSYCHO_ECCCTRL_CE      0x2000000000000000UL /* Enable CE INterrupts */
 static void psycho_register_error_handlers(struct pci_pbm_info *pbm)
 {
-       struct of_device *op = of_find_device_by_node(pbm->prom_node);
+       struct of_device *op = of_find_device_by_node(pbm->op->node);
        unsigned long base = pbm->controller_regs;
        u64 tmp;
        int err;
        pbm->chip_version = of_getintprop_default(dp, "version#", 0);
        pbm->chip_revision = of_getintprop_default(dp, "module-revision#", 0);
 
-       pbm->prom_node = dp;
+       pbm->op = op;
        pbm->name = dp->full_name;
 
        printk(KERN_INFO "%s: PSYCHO PCI Bus Module ver[%x:%x]\n",
 
 
 static void sabre_register_error_handlers(struct pci_pbm_info *pbm)
 {
-       struct device_node *dp = pbm->prom_node;
+       struct device_node *dp = pbm->op->node;
        struct of_device *op;
        unsigned long base = pbm->controller_regs;
        u64 tmp;
        pbm->index = pci_num_pbms++;
 
        pbm->chip_type = PBM_CHIP_TYPE_SABRE;
-       pbm->prom_node = dp;
+       pbm->op = op;
        pci_get_pbm_props(pbm);
 
        pci_determine_mem_io_space(pbm);
 
  */
 static void tomatillo_register_error_handlers(struct pci_pbm_info *pbm)
 {
-       struct of_device *op = of_find_device_by_node(pbm->prom_node);
+       struct of_device *op = of_find_device_by_node(pbm->op->node);
        u64 tmp, err_mask, err_no_mask;
        int err;
 
 
 static void schizo_register_error_handlers(struct pci_pbm_info *pbm)
 {
-       struct of_device *op = of_find_device_by_node(pbm->prom_node);
+       struct of_device *op = of_find_device_by_node(pbm->op->node);
        u64 tmp, err_mask, err_no_mask;
        int err;
 
 {
        pbm_config_busmastering(pbm);
        pbm->is_66mhz_capable =
-               (of_find_property(pbm->prom_node, "66mhz-capable", NULL)
+               (of_find_property(pbm->op->node, "66mhz-capable", NULL)
                 != NULL);
 
        pbm->pci_bus = pci_scan_one_pbm(pbm, parent);
        u32 dma_mask;
        u64 control;
 
-       vdma = of_get_property(pbm->prom_node, "virtual-dma", NULL);
+       vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);
        if (!vdma)
                vdma = vdma_default;
 
            pbm->chip_version >= 0x2)
                tmp |= 0x3UL << SCHIZO_PCICTRL_PTO_SHIFT;
 
-       if (!of_find_property(pbm->prom_node, "no-bus-parking", NULL))
+       if (!of_find_property(pbm->op->node, "no-bus-parking", NULL))
                tmp |= SCHIZO_PCICTRL_PARK;
        else
                tmp &= ~SCHIZO_PCICTRL_PARK;
        pbm->index = pci_num_pbms++;
 
        pbm->portid = portid;
-       pbm->prom_node = dp;
+       pbm->op = op;
 
        pbm->chip_type = chip_type;
        pbm->chip_version = of_getintprop_default(dp, "version#", 0);
 
        struct property *prop;
        struct device_node *dp;
 
-       dp = pbm->prom_node;
+       dp = pbm->op->node;
        prop = of_find_property(dp, "66mhz-capable", NULL);
        pbm->is_66mhz_capable = (prop != NULL);
        pbm->pci_bus = pci_scan_one_pbm(pbm, parent);
        u32 dma_mask, dma_offset;
        const u32 *vdma;
 
-       vdma = of_get_property(pbm->prom_node, "virtual-dma", NULL);
+       vdma = of_get_property(pbm->op->node, "virtual-dma", NULL);
        if (!vdma)
                vdma = vdma_default;
 
 
        pbm->index = pci_num_pbms++;
 
-       pbm->prom_node = dp;
+       pbm->op = op;
 
        pbm->devhandle = devhandle;