|
@@ -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)
|
|
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);
|