|
@@ -9,6 +9,7 @@
|
|
|
* published by the Free Software Foundation.
|
|
|
*/
|
|
|
|
|
|
+#include <linux/acpi.h>
|
|
|
#include <linux/bitops.h>
|
|
|
#include <linux/gpio/driver.h>
|
|
|
#include <linux/init.h>
|
|
@@ -380,9 +381,16 @@ static void mrfld_irq_init_hw(struct mrfld_gpio *priv)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static const char *mrfld_gpio_get_pinctrl_dev_name(void)
|
|
|
+{
|
|
|
+ const char *dev_name = acpi_dev_get_first_match_name("INTC1002", NULL, -1);
|
|
|
+ return dev_name ? dev_name : "pinctrl-merrifield";
|
|
|
+}
|
|
|
+
|
|
|
static int mrfld_gpio_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|
|
{
|
|
|
const struct mrfld_gpio_pinrange *range;
|
|
|
+ const char *pinctrl_dev_name;
|
|
|
struct mrfld_gpio *priv;
|
|
|
u32 gpio_base, irq_base;
|
|
|
void __iomem *base;
|
|
@@ -439,10 +447,11 @@ 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();
|
|
|
for (i = 0; i < ARRAY_SIZE(mrfld_gpio_ranges); i++) {
|
|
|
range = &mrfld_gpio_ranges[i];
|
|
|
retval = gpiochip_add_pin_range(&priv->chip,
|
|
|
- "pinctrl-merrifield",
|
|
|
+ pinctrl_dev_name,
|
|
|
range->gpio_base,
|
|
|
range->pin_base,
|
|
|
range->npins);
|