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)  	}  } -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); +		acpi_dev_put(adev); +	} 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, | 
