Instead of overriding error codes, pass them on unmodified. This
way a EPROBE_DEFER is correctly passed to the driver core. This results
in the LED driver correctly requesting probe deferral in cases the GPIO
controller is not yet available.
Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Reported-and-tested-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Bryan Wu <cooloney@gmail.com>
                led.gpiod = devm_get_gpiod_from_child(dev, child);
                if (IS_ERR(led.gpiod)) {
                        fwnode_handle_put(child);
+                       ret = PTR_ERR(led.gpiod);
                        goto err;
                }
 
 err:
        for (count = priv->num_leds - 2; count >= 0; count--)
                delete_gpio_led(&priv->leds[count]);
-       return ERR_PTR(-ENODEV);
+       return ERR_PTR(ret);
 }
 
 static const struct of_device_id of_gpio_leds_match[] = {