Commit 95c2ab9e authored by Daniel Scheller's avatar Daniel Scheller Committed by Mauro Carvalho Chehab

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: default avatarDaniel Scheller <d.scheller@gmx.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent 05ed62da
...@@ -65,16 +65,20 @@ static void ddb_irq_disable(struct ddb *dev) ...@@ -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) ...@@ -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, ...@@ -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");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment