dev->pci = pci;
 
        /* get chip-revision; this is needed to enable bug-fixes */
-       err = pci_read_config_dword(pci, PCI_CLASS_REVISION, &dev->revision);
-       if (err < 0) {
-               ERR(("pci_read_config_dword() failed.\n"));
-               goto err_disable;
-       }
-       dev->revision &= 0xf;
+       dev->revision = pci->revision;
 
        /* remap the memory from virtual to physical address */
 
 
 static int flexcop_pci_init(struct flexcop_pci *fc_pci)
 {
        int ret;
-       u8 card_rev;
 
-       pci_read_config_byte(fc_pci->pdev, PCI_CLASS_REVISION, &card_rev);
-       info("card revision %x", card_rev);
+       info("card revision %x", fc_pci->pdev->revision);
 
        if ((ret = pci_enable_device(fc_pci->pdev)) != 0)
                return ret;
 
                goto fail0;
        }
 
-       pci_read_config_byte(dev, PCI_CLASS_REVISION, &bt->revision);
+       bt->revision = dev->revision;
        pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
 
 
 
 
 int __devinit mantis_pci_init(struct mantis_pci *mantis)
 {
-       u8 revision, latency;
+       u8 latency;
        struct mantis_hwconfig *config  = mantis->hwconfig;
        struct pci_dev *pdev            = mantis->pdev;
        int err, ret = 0;
        }
 
        pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &latency);
-       pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision);
        mantis->latency = latency;
-       mantis->revision = revision;
+       mantis->revision = pdev->revision;
 
        dprintk(MANTIS_ERROR, 0, "    Mantis Rev %d [%04x:%04x], ",
                mantis->revision,
 
                goto fail0;
        }
 
-       pci_read_config_byte(dev, PCI_CLASS_REVISION, &btv->revision);
+       btv->revision = dev->revision;
        pci_read_config_byte(dev, PCI_LATENCY_TIMER, &lat);
        printk(KERN_INFO "bttv%d: Bt%d (rev %d) at %s, ",
               bttv_num,btv->id, btv->revision, pci_name(dev));
 
        cmd |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER;
        pci_write_config_word(pci_dev, PCI_COMMAND, cmd);
 
-       pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &cx->card_rev);
+       cx->card_rev = pci_dev->revision;
        pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER, &pci_latency);
 
        if (pci_latency < 64 && cx18_pci_latency) {
 
        }
 
        /* print pci info */
-       pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev);
+       dev->pci_rev = pci_dev->revision;
        pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s/0: found at %s, rev: %d, irq: %d, "
               "latency: %d, mmio: 0x%llx\n", dev->name,
 
                return -EIO;
        }
 
-       pci_read_config_byte(dev->pci, PCI_CLASS_REVISION, &dev->pci_rev);
+       dev->pci_rev = dev->pci->revision;
        pci_read_config_byte(dev->pci, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s/2: found at %s, rev: %d, irq: %d, "
               "latency: %d, mmio: 0x%llx\n", dev->core->name,
 
        dev->core = core;
 
        /* print pci info */
-       pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev);
+       dev->pci_rev = pci_dev->revision;
        pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s/0: found at %s, rev: %d, irq: %d, "
               "latency: %d, mmio: 0x%llx\n", core->name,
 
                          const struct pci_device_id *pci_id)
 {
        u16 cmd;
-       u8 card_rev;
        unsigned char pci_latency;
 
        IVTV_DEBUG_INFO("Enabling pci device\n");
        }
        IVTV_DEBUG_INFO("Bus Mastering Enabled.\n");
 
-       pci_read_config_byte(pdev, PCI_CLASS_REVISION, &card_rev);
        pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &pci_latency);
 
        if (pci_latency < 64 && ivtv_pci_latency) {
 
        IVTV_DEBUG_INFO("%d (rev %d) at %02x:%02x.%x, "
                   "irq: %d, latency: %d, memory: 0x%lx\n",
-                  pdev->device, card_rev, pdev->bus->number,
+                  pdev->device, pdev->revision, pdev->bus->number,
                   PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn),
                   pdev->irq, pci_latency, (unsigned long)itv->base_addr);
 
 
        }
 
        /* print pci info */
-       pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev);
+       dev->pci_rev = pci_dev->revision;
        pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s: found at %s, rev: %d, irq: %d, "
               "latency: %d, mmio: 0x%llx\n", dev->name,
 
        }
 
        /* print pci info */
-       pci_read_config_byte(pci_dev, PCI_CLASS_REVISION, &dev->pci_rev);
+       dev->pci_rev = pci_dev->revision;
        pci_read_config_byte(pci_dev, PCI_LATENCY_TIMER,  &dev->pci_lat);
        printk(KERN_INFO "%s/0: found at %s, rev: %d, irq: %d, "
               "latency: %d, mmio: 0x%llx\n", dev->name,
 
        mutex_init(&zr->other_lock);
        if (pci_enable_device(pdev))
                goto zr_unreg;
-       pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION, &zr->revision);
+       zr->revision = zr->pci_dev->revision;
 
        dprintk(1,
                KERN_INFO