[Xenomai] drivers/gpio/gpio-core.c is broken on 4.4.9

Giulio Moro g.moro at qmul.ac.uk
Sun Jun 18 17:09:26 CEST 2017

the `dev` member of `struct gpio_chip` was replaced by `parent` as of 

commit 58383c78425e4ee1c077253cf297b641c861c02e
Author: Linus Walleij <linus.walleij at linaro.org>
Date:   Wed Nov 4 09:56:26 2015 +0100

    gpio: change member .dev to .parent
    The name .dev in a struct is normally reserved for a struct device
    that is let us say a superclass to the thing described by the struct.
    struct gpio_chip stands out by confusingly using a struct device *dev
    to point to the parent device (such as a platform_device) that
    represents the hardware. As we want to give gpio_chip:s real devices,
    this is not working. We need to rename this member to parent.

Therefore the following patch is needed to compile drivers/xenomai/gpio/gpio-core.c. on 4.9.x

a) Unfortunately I am not able to verify that it works because I am not on one of the devices supported by the gpio drivers
b) you need ifdefs around the change to make sure you do not break older builds (e.g.: on 4.4.x the original version works fine).

diff --git a/drivers/xenomai/gpio/gpio-core.c b/drivers/xenomai/gpio/gpio-core.c
index b8cb044..17d201c 100644
--- a/drivers/xenomai/gpio/gpio-core.c
+++ b/drivers/xenomai/gpio/gpio-core.c
@@ -428,7 +428,7 @@ static int match_gpio_chip(struct gpio_chip *gc, void *data)
        struct device *dev = data;
-       return gc->dev == dev;
+       return gc->parent == dev;

More information about the Xenomai mailing list