Commit d27c1728 authored by Bamvor Jian Zhang's avatar Bamvor Jian Zhang Committed by Linus Walleij

gpio: fix abi regression in sysfs

We started to assign the gpio_device as parent for the sysfs
but this changes the expected layout of sysfs. Restore the
previous behaviour.
Signed-off-by: default avatarBamvor Jian Zhang <bamvor.zhangjian@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent cfb7428c
...@@ -721,6 +721,7 @@ EXPORT_SYMBOL_GPL(gpiod_unexport); ...@@ -721,6 +721,7 @@ EXPORT_SYMBOL_GPL(gpiod_unexport);
int gpiochip_sysfs_register(struct gpio_device *gdev) int gpiochip_sysfs_register(struct gpio_device *gdev)
{ {
struct device *dev; struct device *dev;
struct device *parent;
struct gpio_chip *chip = gdev->chip; struct gpio_chip *chip = gdev->chip;
/* /*
...@@ -732,8 +733,17 @@ int gpiochip_sysfs_register(struct gpio_device *gdev) ...@@ -732,8 +733,17 @@ int gpiochip_sysfs_register(struct gpio_device *gdev)
if (!gpio_class.p) if (!gpio_class.p)
return 0; return 0;
/*
* For sysfs backward compatibility we need to preserve this
* preferred parenting to the gpio_chip parent field, if set.
*/
if (chip->parent)
parent = chip->parent;
else
parent = &gdev->dev;
/* use chip->base for the ID; it's already known to be unique */ /* use chip->base for the ID; it's already known to be unique */
dev = device_create_with_groups(&gpio_class, &gdev->dev, dev = device_create_with_groups(&gpio_class, parent,
MKDEV(0, 0), MKDEV(0, 0),
chip, gpiochip_groups, chip, gpiochip_groups,
"gpiochip%d", chip->base); "gpiochip%d", chip->base);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment