Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: qcom-lpg: Propagate errors in .get_state() to the caller

.get_state() can return an error indication. Make use of it to propagate
failing hardware accesses.

Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20221130152148.2769768-5-u.kleine-koenig@pengutronix.de
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>

authored by

Uwe Kleine-König and committed by
Thierry Reding
fea768cf f00de180

+4 -4
+4 -4
drivers/leds/rgb/leds-qcom-lpg.c
··· 982 982 983 983 ret = regmap_read(lpg->map, chan->base + LPG_SIZE_CLK_REG, &val); 984 984 if (ret) 985 - return 0; 985 + return ret; 986 986 987 987 refclk = lpg_clk_rates[val & PWM_CLK_SELECT_MASK]; 988 988 if (refclk) { 989 989 ret = regmap_read(lpg->map, chan->base + LPG_PREDIV_CLK_REG, &val); 990 990 if (ret) 991 - return 0; 991 + return ret; 992 992 993 993 pre_div = lpg_pre_divs[FIELD_GET(PWM_FREQ_PRE_DIV_MASK, val)]; 994 994 m = FIELD_GET(PWM_FREQ_EXP_MASK, val); 995 995 996 996 ret = regmap_bulk_read(lpg->map, chan->base + PWM_VALUE_REG, &pwm_value, sizeof(pwm_value)); 997 997 if (ret) 998 - return 0; 998 + return ret; 999 999 1000 1000 state->period = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC * LPG_RESOLUTION * pre_div * (1 << m), refclk); 1001 1001 state->duty_cycle = DIV_ROUND_UP_ULL((u64)NSEC_PER_SEC * pwm_value * pre_div * (1 << m), refclk); ··· 1006 1006 1007 1007 ret = regmap_read(lpg->map, chan->base + PWM_ENABLE_CONTROL_REG, &val); 1008 1008 if (ret) 1009 - return 0; 1009 + return ret; 1010 1010 1011 1011 state->enabled = FIELD_GET(LPG_ENABLE_CONTROL_OUTPUT, val); 1012 1012 state->polarity = PWM_POLARITY_NORMAL;