OSDN Git Service

gpio: merrifield: Convert to use acpi_dev_get_first_match_dev()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 28 Mar 2019 17:17:22 +0000 (19:17 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 1 Apr 2019 09:00:16 +0000 (11:00 +0200)
acpi_dev_get_first_match_name() is deprecated and going to be removed
because it leaks a reference.

Convert the driver to use acpi_dev_get_first_match_dev() instead.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/gpio/gpio-merrifield.c

index 7c659fd..2383dc7 100644 (file)
@@ -377,10 +377,20 @@ static void mrfld_irq_init_hw(struct mrfld_gpio *priv)
        }
 }
 
-static const char *mrfld_gpio_get_pinctrl_dev_name(void)
+static const char *mrfld_gpio_get_pinctrl_dev_name(struct mrfld_gpio *priv)
 {
-       const char *dev_name = acpi_dev_get_first_match_name("INTC1002", NULL, -1);
-       return dev_name ? dev_name : "pinctrl-merrifield";
+       struct acpi_device *adev;
+       const char *name;
+
+       adev = acpi_dev_get_first_match_dev("INTC1002", NULL, -1);
+       if (adev) {
+               name = devm_kstrdup(priv->dev, acpi_dev_name(adev), GFP_KERNEL);
+               put_device(&adev->dev);
+       } else {
+               name = "pinctrl-merrifield";
+       }
+
+       return name;
 }
 
 static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -441,7 +451,7 @@ static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id
                return retval;
        }
 
-       pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name();
+       pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name(priv);
        for (i = 0; i < ARRAY_SIZE(mrfld_gpio_ranges); i++) {
                range = &mrfld_gpio_ranges[i];
                retval = gpiochip_add_pin_range(&priv->chip,