Commit 9cbc8610 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Pavel Machek

leds: lgm-sso: Propagate error codes from callee to caller

The one of the latest change to the driver reveals the problem that
the error codes from callee aren't propagated to the caller of
__sso_led_dt_parse(). Fix this accordingly.

Fixes: 9999908c ("leds: lgm-sso: Put fwnode in any case during ->probe()")
Fixes: c3987cd2 ("leds: lgm: Add LED controller driver for LGM SoC")
Reported-by: default avatarkernel test robot <lkp@intel.com>
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarPavel Machek <pavel@ucw.cz>
parent 64f67b52
...@@ -640,7 +640,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) ...@@ -640,7 +640,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
fwnode_child, fwnode_child,
GPIOD_ASIS, NULL); GPIOD_ASIS, NULL);
if (IS_ERR(led->gpiod)) { if (IS_ERR(led->gpiod)) {
dev_err_probe(dev, PTR_ERR(led->gpiod), "led: get gpio fail!\n"); ret = dev_err_probe(dev, PTR_ERR(led->gpiod), "led: get gpio fail!\n");
goto __dt_err; goto __dt_err;
} }
...@@ -660,8 +660,11 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) ...@@ -660,8 +660,11 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
desc->panic_indicator = 1; desc->panic_indicator = 1;
ret = fwnode_property_read_u32(fwnode_child, "reg", &prop); ret = fwnode_property_read_u32(fwnode_child, "reg", &prop);
if (ret != 0 || prop >= SSO_LED_MAX_NUM) { if (ret)
goto __dt_err;
if (prop >= SSO_LED_MAX_NUM) {
dev_err(dev, "invalid LED pin:%u\n", prop); dev_err(dev, "invalid LED pin:%u\n", prop);
ret = -EINVAL;
goto __dt_err; goto __dt_err;
} }
desc->pin = prop; desc->pin = prop;
...@@ -697,7 +700,8 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) ...@@ -697,7 +700,8 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
desc->brightness = LED_FULL; desc->brightness = LED_FULL;
} }
if (sso_create_led(priv, led, fwnode_child)) ret = sso_create_led(priv, led, fwnode_child);
if (ret)
goto __dt_err; goto __dt_err;
} }
...@@ -709,7 +713,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled) ...@@ -709,7 +713,7 @@ __sso_led_dt_parse(struct sso_led_priv *priv, struct fwnode_handle *fw_ssoled)
list_for_each_entry(led, &priv->led_list, list) list_for_each_entry(led, &priv->led_list, list)
sso_led_shutdown(led); sso_led_shutdown(led);
return -EINVAL; return ret;
} }
static int sso_led_dt_parse(struct sso_led_priv *priv) static int sso_led_dt_parse(struct sso_led_priv *priv)
......
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