diff options
Diffstat (limited to 'drivers/gpio/gpio-merrifield.c')
-rw-r--r-- | drivers/gpio/gpio-merrifield.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c index 7c659fdaa6d5..3302125e5265 100644 --- a/drivers/gpio/gpio-merrifield.c +++ b/drivers/gpio/gpio-merrifield.c | |||
@@ -377,10 +377,20 @@ static void mrfld_irq_init_hw(struct mrfld_gpio *priv) | |||
377 | } | 377 | } |
378 | } | 378 | } |
379 | 379 | ||
380 | static const char *mrfld_gpio_get_pinctrl_dev_name(void) | 380 | static const char *mrfld_gpio_get_pinctrl_dev_name(struct mrfld_gpio *priv) |
381 | { | 381 | { |
382 | const char *dev_name = acpi_dev_get_first_match_name("INTC1002", NULL, -1); | 382 | struct acpi_device *adev; |
383 | return dev_name ? dev_name : "pinctrl-merrifield"; | 383 | const char *name; |
384 | |||
385 | adev = acpi_dev_get_first_match_dev("INTC1002", NULL, -1); | ||
386 | if (adev) { | ||
387 | name = devm_kstrdup(priv->dev, acpi_dev_name(adev), GFP_KERNEL); | ||
388 | acpi_dev_put(adev); | ||
389 | } else { | ||
390 | name = "pinctrl-merrifield"; | ||
391 | } | ||
392 | |||
393 | return name; | ||
384 | } | 394 | } |
385 | 395 | ||
386 | static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id) | 396 | 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 | |||
441 | return retval; | 451 | return retval; |
442 | } | 452 | } |
443 | 453 | ||
444 | pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name(); | 454 | pinctrl_dev_name = mrfld_gpio_get_pinctrl_dev_name(priv); |
445 | for (i = 0; i < ARRAY_SIZE(mrfld_gpio_ranges); i++) { | 455 | for (i = 0; i < ARRAY_SIZE(mrfld_gpio_ranges); i++) { |
446 | range = &mrfld_gpio_ranges[i]; | 456 | range = &mrfld_gpio_ranges[i]; |
447 | retval = gpiochip_add_pin_range(&priv->chip, | 457 | retval = gpiochip_add_pin_range(&priv->chip, |