OSDN Git Service

dmaengine: hsu: Finish conversion to managed resources
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 13 Jul 2022 17:22:32 +0000 (20:22 +0300)
committerVinod Koul <vkoul@kernel.org>
Sun, 4 Sep 2022 17:19:35 +0000 (22:49 +0530)
With help of devm_add_action_or_reset() we may finish conversion
the driver to use managed resources.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20220713172235.22611-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/hsu/pci.c

index 6a2df3d..4ed6a4e 100644 (file)
@@ -47,8 +47,14 @@ static irqreturn_t hsu_pci_irq(int irq, void *dev)
        return IRQ_RETVAL(ret);
 }
 
+static void hsu_pci_dma_remove(void *chip)
+{
+       hsu_dma_remove(chip);
+}
+
 static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
+       struct device *dev = &pdev->dev;
        struct hsu_dma_chip *chip;
        int ret;
 
@@ -87,9 +93,13 @@ static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        if (ret)
                return ret;
 
-       ret = request_irq(chip->irq, hsu_pci_irq, 0, "hsu_dma_pci", chip);
+       ret = devm_add_action_or_reset(dev, hsu_pci_dma_remove, chip);
        if (ret)
-               goto err_register_irq;
+               return ret;
+
+       ret = devm_request_irq(dev, chip->irq, hsu_pci_irq, 0, "hsu_dma_pci", chip);
+       if (ret)
+               return ret;
 
        /*
         * On Intel Tangier B0 and Anniedale the interrupt line, disregarding
@@ -105,18 +115,6 @@ static int hsu_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
        pci_set_drvdata(pdev, chip);
 
        return 0;
-
-err_register_irq:
-       hsu_dma_remove(chip);
-       return ret;
-}
-
-static void hsu_pci_remove(struct pci_dev *pdev)
-{
-       struct hsu_dma_chip *chip = pci_get_drvdata(pdev);
-
-       free_irq(chip->irq, chip);
-       hsu_dma_remove(chip);
 }
 
 static const struct pci_device_id hsu_pci_id_table[] = {
@@ -130,7 +128,6 @@ static struct pci_driver hsu_pci_driver = {
        .name           = "hsu_dma_pci",
        .id_table       = hsu_pci_id_table,
        .probe          = hsu_pci_probe,
-       .remove         = hsu_pci_remove,
 };
 
 module_pci_driver(hsu_pci_driver);