media: ddbridge: move MSI IRQ cleanup to a helper function
Introduce the ddb_msi_exit() helper to be used for cleaning up previously allocated MSI IRQ vectors. Deduplicates code and makes things look cleaner as for all cleanup work the CONFIG_PCI_MSI ifdeffery is only needed in the helper now. Also, replace the call to the deprecated pci_disable_msi() function with pci_free_irq_vectors(). Picked up from the upstream dddvb-0.9.33 release. Signed-off-by: Daniel Scheller <d.scheller@gmx.net> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:

committed by
Mauro Carvalho Chehab

parent
05ed62da03
commit
95c2ab9e21
@@ -65,16 +65,20 @@ static void ddb_irq_disable(struct ddb *dev)
|
|||||||
ddbwritel(dev, 0, MSI1_ENABLE);
|
ddbwritel(dev, 0, MSI1_ENABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ddb_msi_exit(struct ddb *dev)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_PCI_MSI
|
||||||
|
if (dev->msi)
|
||||||
|
pci_free_irq_vectors(dev->pdev);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void ddb_irq_exit(struct ddb *dev)
|
static void ddb_irq_exit(struct ddb *dev)
|
||||||
{
|
{
|
||||||
ddb_irq_disable(dev);
|
ddb_irq_disable(dev);
|
||||||
if (dev->msi == 2)
|
if (dev->msi == 2)
|
||||||
free_irq(dev->pdev->irq + 1, dev);
|
free_irq(dev->pdev->irq + 1, dev);
|
||||||
free_irq(dev->pdev->irq, dev);
|
free_irq(dev->pdev->irq, dev);
|
||||||
#ifdef CONFIG_PCI_MSI
|
|
||||||
if (dev->msi)
|
|
||||||
pci_disable_msi(dev->pdev);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ddb_remove(struct pci_dev *pdev)
|
static void ddb_remove(struct pci_dev *pdev)
|
||||||
@@ -86,6 +90,7 @@ static void ddb_remove(struct pci_dev *pdev)
|
|||||||
ddb_i2c_release(dev);
|
ddb_i2c_release(dev);
|
||||||
|
|
||||||
ddb_irq_exit(dev);
|
ddb_irq_exit(dev);
|
||||||
|
ddb_msi_exit(dev);
|
||||||
ddb_ports_release(dev);
|
ddb_ports_release(dev);
|
||||||
ddb_buffers_free(dev);
|
ddb_buffers_free(dev);
|
||||||
|
|
||||||
@@ -230,8 +235,7 @@ static int ddb_probe(struct pci_dev *pdev,
|
|||||||
ddb_irq_exit(dev);
|
ddb_irq_exit(dev);
|
||||||
fail0:
|
fail0:
|
||||||
dev_err(&pdev->dev, "fail0\n");
|
dev_err(&pdev->dev, "fail0\n");
|
||||||
if (dev->msi)
|
ddb_msi_exit(dev);
|
||||||
pci_disable_msi(dev->pdev);
|
|
||||||
fail:
|
fail:
|
||||||
dev_err(&pdev->dev, "fail\n");
|
dev_err(&pdev->dev, "fail\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user