Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e491cbc8 authored by Alan Cox's avatar Alan Cox Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (4707): 4linux: complete conversion to hotplug safe PCI API

parent a868b45d
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1278,9 +1278,7 @@ find_zr36057 (void)

	zoran_num = 0;
	while (zoran_num < BUZ_MAX &&
	       (dev =
		pci_find_device(PCI_VENDOR_ID_ZORAN,
				PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) {
	       (dev = pci_get_device(PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) {
		card_num = card[zoran_num];
		zr = &zoran[zoran_num];
		memset(zr, 0, sizeof(struct zoran));	// Just in case if previous cycle failed
@@ -1541,7 +1539,8 @@ find_zr36057 (void)
				goto zr_detach_vfe;
			}
		}

		/* Success so keep the pci_dev referenced */
		pci_dev_get(zr->pci_dev);
		zoran_num++;
		continue;

@@ -1563,6 +1562,9 @@ find_zr36057 (void)
		iounmap(zr->zr36057_mem);
		continue;
	}
	if (dev)	/* Clean up ref count on early exit */
		pci_dev_put(dev);

	if (zoran_num == 0) {
		dprintk(1, KERN_INFO "No known MJPEG cards found.\n");
	}
+12 −9
Original line number Diff line number Diff line
@@ -1842,14 +1842,14 @@ int __init find_zoran(void)
	unsigned char revision;
	int zoran_num = 0;

	while ((dev = pci_find_device(PCI_VENDOR_ID_ZORAN,PCI_DEVICE_ID_ZORAN_36120, dev)))
	while ((dev = pci_get_device(PCI_VENDOR_ID_ZORAN,PCI_DEVICE_ID_ZORAN_36120, dev)))
	{
		/* Ok, a ZR36120/ZR36125 found! */
		ztv = &zorans[zoran_num];
		ztv->dev = dev;

		if (pci_enable_device(dev))
			return -EIO;
			continue;

		pci_read_config_byte(dev, PCI_CLASS_REVISION, &revision);
		printk(KERN_INFO "zoran: Zoran %x (rev %d) ",
@@ -1867,17 +1867,18 @@ int __init find_zoran(void)
		{
			iounmap(ztv->zoran_mem);
			printk(KERN_ERR "zoran: Bad irq number or handler\n");
			return -EINVAL;
			continue;
		}
		if (result==-EBUSY)
			printk(KERN_ERR "zoran: IRQ %d busy, change your PnP config in BIOS\n",dev->irq);
		if (result < 0) {
			iounmap(ztv->zoran_mem);
			return result;
			continue;
		}
		/* Enable bus-mastering */
		pci_set_master(dev);

		/* Keep a reference */
		pci_dev_get(dev);
		zoran_num++;
	}
	if(zoran_num)
@@ -2041,6 +2042,9 @@ void release_zoran(int max)
		if (ztv->zoran_mem)
			iounmap(ztv->zoran_mem);

		/* Drop PCI device */
		pci_dev_put(ztv->dev);

		video_unregister_device(&ztv->video_dev);
		video_unregister_device(&ztv->vbi_dev);
	}
@@ -2057,8 +2061,7 @@ int __init zr36120_init(void)

	handle_chipset();
	zoran_cards = find_zoran();
	if (zoran_cards<0)
		/* no cards found, no need for a driver */
	if (zoran_cards <= 0)
		return -EIO;

	/* initialize Zorans */