Merge tag 'media/v5.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[linux-2.6-microblaze.git] / drivers / media / pci / tw686x / tw686x-core.c
index 6676e06..c53099c 100644 (file)
@@ -315,13 +315,6 @@ static int tw686x_probe(struct pci_dev *pci_dev,
 
        spin_lock_init(&dev->lock);
 
-       err = request_irq(pci_dev->irq, tw686x_irq, IRQF_SHARED,
-                         dev->name, dev);
-       if (err < 0) {
-               dev_err(&pci_dev->dev, "unable to request interrupt\n");
-               goto iounmap;
-       }
-
        timer_setup(&dev->dma_delay_timer, tw686x_dma_delay, 0);
 
        /*
@@ -333,18 +326,26 @@ static int tw686x_probe(struct pci_dev *pci_dev,
        err = tw686x_video_init(dev);
        if (err) {
                dev_err(&pci_dev->dev, "can't register video\n");
-               goto free_irq;
+               goto iounmap;
        }
 
        err = tw686x_audio_init(dev);
        if (err)
                dev_warn(&pci_dev->dev, "can't register audio\n");
 
+       err = request_irq(pci_dev->irq, tw686x_irq, IRQF_SHARED,
+                         dev->name, dev);
+       if (err < 0) {
+               dev_err(&pci_dev->dev, "unable to request interrupt\n");
+               goto tw686x_free;
+       }
+
        pci_set_drvdata(pci_dev, dev);
        return 0;
 
-free_irq:
-       free_irq(pci_dev->irq, dev);
+tw686x_free:
+       tw686x_video_free(dev);
+       tw686x_audio_free(dev);
 iounmap:
        pci_iounmap(pci_dev, dev->mmio);
 free_region: