diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-11-23 07:18:09 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-11-23 07:18:09 +0100 |
commit | 064e6a8ba61a751625478f656c6f76a6f37a009e (patch) | |
tree | a22d84d037543f74b6c86969c7e87ab799768de9 /drivers/gpio/gpiolib-of.c | |
parent | af25ed59b5616b389d90877f7085dc5d457a3d49 (diff) | |
parent | 23400ac997062647f2b63c82030d189671b1effe (diff) | |
download | linux-064e6a8ba61a751625478f656c6f76a6f37a009e.tar.bz2 |
Merge branch 'linus' into x86/fpu, to resolve conflicts
Conflicts:
arch/x86/kernel/fpu/core.c
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpio/gpiolib-of.c')
-rw-r--r-- | drivers/gpio/gpiolib-of.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c index ecad3f0e3b77..193f15d50bba 100644 --- a/drivers/gpio/gpiolib-of.c +++ b/drivers/gpio/gpiolib-of.c @@ -26,14 +26,18 @@ #include "gpiolib.h" -static int of_gpiochip_match_node(struct gpio_chip *chip, void *data) +static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip, void *data) { - return chip->gpiodev->dev.of_node == data; + struct of_phandle_args *gpiospec = data; + + return chip->gpiodev->dev.of_node == gpiospec->np && + chip->of_xlate(chip, gpiospec, NULL) >= 0; } -static struct gpio_chip *of_find_gpiochip_by_node(struct device_node *np) +static struct gpio_chip *of_find_gpiochip_by_xlate( + struct of_phandle_args *gpiospec) { - return gpiochip_find(np, of_gpiochip_match_node); + return gpiochip_find(gpiospec, of_gpiochip_match_node_and_xlate); } static struct gpio_desc *of_xlate_and_get_gpiod_flags(struct gpio_chip *chip, @@ -79,7 +83,7 @@ struct gpio_desc *of_get_named_gpiod_flags(struct device_node *np, return ERR_PTR(ret); } - chip = of_find_gpiochip_by_node(gpiospec.np); + chip = of_find_gpiochip_by_xlate(&gpiospec); if (!chip) { desc = ERR_PTR(-EPROBE_DEFER); goto out; |