diff options
author | Saravana Kannan <[email protected]> | 2023-02-06 17:41:56 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <[email protected]> | 2023-02-08 13:37:54 +0100 |
commit | 38dfa56b3db354b4bd399fc686c3e74ad32ffa57 (patch) | |
tree | 8bcbb4490af90e50d38d14ebee1a6fea87c04bdc | |
parent | 8640166f01fe42f2e4a73ab92c797b97b467927d (diff) |
gpiolib: Clear the gpio_device's fwnode initialized flag before adding
Registering an irqdomain sets the flag for the fwnode. But having the
flag set when a device is added is interpreted by fw_devlink to mean the
device has already been initialized and will never probe. This prevents
fw_devlink from creating device links with the gpio_device as a
supplier. So, clear the flag before adding the device.
Signed-off-by: Saravana Kannan <[email protected]>
Acked-by: Bartosz Golaszewski <[email protected]>
Tested-by: Colin Foster <[email protected]>
Tested-by: Sudeep Holla <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Tested-by: Douglas Anderson <[email protected]>
Tested-by: Geert Uytterhoeven <[email protected]>
Tested-by: Luca Weiss <[email protected]> # qcom/sm7225-fairphone-fp4
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-rw-r--r-- | drivers/gpio/gpiolib.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 939c776b9488..bdb9493857eb 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -578,6 +578,13 @@ static int gpiochip_setup_dev(struct gpio_device *gdev) { int ret; + /* + * If fwnode doesn't belong to another device, it's safe to clear its + * initialized flag. + */ + if (gdev->dev.fwnode && !gdev->dev.fwnode->dev) + fwnode_dev_initialized(gdev->dev.fwnode, false); + ret = gcdev_register(gdev, gpio_devt); if (ret) return ret; |