lkml.org 
[lkml]   [2021]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 3/4] i2c: designware: Use pcim_alloc_irq_vectors() to allocate IRQ vectors
    Date
    The pcim_alloc_irq_vectors() function, an explicit device-managed version
    of pci_alloc_irq_vectors(). If pcim_enable_device() has been called
    before, then pci_alloc_irq_vectors() is actually a device-managed
    function. It is used here as a device-managed function, So replace it
    with pcim_alloc_irq_vectors(). At the same time, Remove the
    pci_free_irq_vectors() function to simplify the error handling path.
    the freeing resources will take automatically when device is gone.

    Reviewed-by: Robert Richter <rric@kernel.org>
    Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
    Signed-off-by: Dejin Zheng <zhengdejin5@gmail.com>
    ---
    v6 -> v7:
    - rebase to PCI next branch
    v5 -> v6:
    - rebase to 5.13-rc4
    v4 -> v5:
    - Modify the subject name.
    v3 -> v4:
    - add some commit comments.
    v2 -> v3:
    - simplify the error handling path.
    v1 -> v2:
    - Modify some commit messages.

    drivers/i2c/busses/i2c-designware-pcidrv.c | 15 ++++-----------
    1 file changed, 4 insertions(+), 11 deletions(-)

    diff --git a/drivers/i2c/busses/i2c-designware-pcidrv.c b/drivers/i2c/busses/i2c-designware-pcidrv.c
    index 0f409a4c2da0..2b1ef0934445 100644
    --- a/drivers/i2c/busses/i2c-designware-pcidrv.c
    +++ b/drivers/i2c/busses/i2c-designware-pcidrv.c
    @@ -268,7 +268,7 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,
    if (!dev)
    return -ENOMEM;

    - r = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
    + r = pcim_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
    if (r < 0)
    return r;

    @@ -283,10 +283,8 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,

    if (controller->setup) {
    r = controller->setup(pdev, controller);
    - if (r) {
    - pci_free_irq_vectors(pdev);
    + if (r)
    return r;
    - }
    }

    i2c_dw_adjust_bus_speed(dev);
    @@ -295,10 +293,8 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,
    i2c_dw_acpi_configure(&pdev->dev);

    r = i2c_dw_validate_speed(dev);
    - if (r) {
    - pci_free_irq_vectors(pdev);
    + if (r)
    return r;
    - }

    i2c_dw_configure(dev);

    @@ -318,10 +314,8 @@ static int i2c_dw_pci_probe(struct pci_dev *pdev,
    adap->nr = controller->bus_num;

    r = i2c_dw_probe(dev);
    - if (r) {
    - pci_free_irq_vectors(pdev);
    + if (r)
    return r;
    - }

    if ((dev->flags & MODEL_MASK) == MODEL_AMD_NAVI_GPU) {
    r = navi_amd_register_client(dev);
    @@ -349,7 +343,6 @@ static void i2c_dw_pci_remove(struct pci_dev *pdev)

    i2c_del_adapter(&dev->adapter);
    devm_free_irq(&pdev->dev, dev->irq, dev);
    - pci_free_irq_vectors(pdev);
    }

    /* work with hotplug and coldplug */
    --
    2.30.1
    \
     
     \ /
      Last update: 2021-06-07 17:41    [W:3.606 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site