Skip to content

Commit

Permalink
gpiolib: Clear the gpio_device's fwnode initialized flag before adding
Browse files Browse the repository at this point in the history
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 <saravanak@google.com>
Acked-by: Bartosz Golaszewski <brgl@bgdev.pl>
Tested-by: Colin Foster <colin.foster@in-advantage.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Luca Weiss <luca.weiss@fairphone.com> # qcom/sm7225-fairphone-fp4
Link: https://lore.kernel.org/r/20230207014207.1678715-5-saravanak@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Saravana Kannan authored and Greg Kroah-Hartman committed Feb 8, 2023
1 parent 8640166 commit 38dfa56
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/gpio/gpiolib.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 38dfa56

Please sign in to comment.