V4L/DVB (5552): Plan-b: Switch to refcounting PCI API
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Mon, 23 Apr 2007 20:57:28 +0000 (17:57 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 27 Apr 2007 18:45:54 +0000 (15:45 -0300)
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/planb.c

index 86d2884e16c688a5af9c43717f6f7b0a4f379b9b..fe184f93c016a12d6b2661f926041ba8fc7db86d 100644 (file)
@@ -2207,7 +2207,7 @@ static int find_planb(void)
                "membase 0x%x (base reg. 0x%x)\n",
                bus, PCI_SLOT(dev_fn), PCI_FUNC(dev_fn), old_base, confreg);
 
-       pdev = pci_find_slot (bus, dev_fn);
+       pdev = pci_get_bus_and_slot(bus, dev_fn);
        if (!pdev) {
                printk(KERN_ERR "planb: cannot find slot\n");
                goto err_out;
@@ -2237,6 +2237,7 @@ static int find_planb(void)
        pb->planb_base = planb_regs;
        pb->planb_base_phys = (struct planb_registers *)new_base;
        pb->irq = irq;
+       pb->dev = pdev;
 
        return planb_num;
 
@@ -2244,6 +2245,7 @@ err_out_disable:
        pci_disable_device(pdev);
 err_out:
        /* FIXME handle error */   /* comment moved from pci_find_slot, above */
+       pci_dev_put(pdev);
        return 0;
 }
 
@@ -2271,6 +2273,8 @@ static void release_planb(void)
                printk(KERN_INFO "PlanB: unregistering with v4l\n");
                video_unregister_device(&pb->video_dev);
 
+               pci_dev_put(pb->dev);
+
                /* note that iounmap() does nothing on the PPC right now */
                iounmap ((void *)pb->planb_base);
        }