linux/drivers/video/backlight
Jon Hunter 5970f0c994 backlight: lp855x: Ensure regulators are disabled on probe failure
[ Upstream commit d8207c155a ]

If probing the LP885x backlight fails after the regulators have been
enabled, then the following warning is seen when releasing the
regulators ...

 WARNING: CPU: 1 PID: 289 at drivers/regulator/core.c:2051 _regulator_put.part.28+0x158/0x160
 Modules linked in: tegra_xudc lp855x_bl(+) host1x pwm_tegra ip_tables x_tables ipv6 nf_defrag_ipv6
 CPU: 1 PID: 289 Comm: systemd-udevd Not tainted 5.6.0-rc2-next-20200224 #1
 Hardware name: NVIDIA Jetson TX1 Developer Kit (DT)

 ...

 Call trace:
  _regulator_put.part.28+0x158/0x160
  regulator_put+0x34/0x50
  devm_regulator_release+0x10/0x18
  release_nodes+0x12c/0x230
  devres_release_all+0x34/0x50
  really_probe+0x1c0/0x370
  driver_probe_device+0x58/0x100
  device_driver_attach+0x6c/0x78
  __driver_attach+0xb0/0xf0
  bus_for_each_dev+0x68/0xc8
  driver_attach+0x20/0x28
  bus_add_driver+0x160/0x1f0
  driver_register+0x60/0x110
  i2c_register_driver+0x40/0x80
  lp855x_driver_init+0x20/0x1000 [lp855x_bl]
  do_one_initcall+0x58/0x1a0
  do_init_module+0x54/0x1d0
  load_module+0x1d80/0x21c8
  __do_sys_finit_module+0xe8/0x100
  __arm64_sys_finit_module+0x18/0x20
  el0_svc_common.constprop.3+0xb0/0x168
  do_el0_svc+0x20/0x98
  el0_sync_handler+0xf4/0x1b0
  el0_sync+0x140/0x180

Fix this by ensuring that the regulators are disabled, if enabled, on
probe failure.

Finally, ensure that the vddio regulator is disabled in the driver
remove handler.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-06-25 15:32:48 +02:00
..
88pm860x_bl.c
aat2870_bl.c
adp5520_bl.c
adp8860_bl.c
adp8870_bl.c
ams369fg06.c
apple_bl.c
arcxcnn_bl.c
as3711_bl.c
backlight.c
bd6107.c
corgi_lcd.c
cr_bllcd.c
da903x_bl.c
da9052_bl.c
ep93xx_bl.c
generic_bl.c
gpio_backlight.c
hp680_bl.c
hx8357.c
ili922x.c
ili9320.c
ili9320.h
ipaq_micro_bl.c
jornada720_bl.c
jornada720_lcd.c
kb3886_bl.c
Kconfig
l4f00242t03.c
lcd.c
ld9040_gamma.h
ld9040.c
lm3533_bl.c
lm3630a_bl.c
lm3639_bl.c
lms283gf05.c
lms501kf03.c
locomolcd.c
lp855x_bl.c backlight: lp855x: Ensure regulators are disabled on probe failure 2020-06-25 15:32:48 +02:00
lp8788_bl.c
ltv350qv.c
ltv350qv.h
lv5207lp.c
Makefile
max8925_bl.c
omap1_bl.c
ot200_bl.c
otm3225a.c
pandora_bl.c
pcf50633-backlight.c
platform_lcd.c
pm8941-wled.c
pwm_bl.c backlight: pwm_bl: Fix heuristic to determine number of brightness levels 2020-01-27 14:50:58 +01:00
rave-sp-backlight.c
s6e63m0_gamma.h
s6e63m0.c
sky81452-backlight.c
tdo24m.c
tosa_bl.c
tosa_lcd.c
tps65217_bl.c
vgg2432a4.c
wm831x_bl.c