[PATCH v7 05/14] drm/bridge: it6505: complete poweroff even if disabling regulators fails
From: Daniel Golle
Date: Thu Sep 24 2026 - 15:25:11 EST
it6505_poweroff() returns early when regulator_disable() fails,
leaving it6505->powered set with the IRQ already disabled. The next
it6505_poweron() then takes its early return and never re-enables the
IRQ, leaving the bridge deaf to hotplug and link training interrupts.
The regulator core keeps the consumer's enable count on a failed
disable either way, so bailing out only adds a wedged bridge on top of
the leaked reference. Log the error and complete the power-off state
transition instead.
Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
Signed-off-by: Daniel Golle <daniel@xxxxxxxxxxxxxx>
---
v7: no changes
v6: note that the regulator reference is leaked either way
v5: new patch
---
drivers/gpu/drm/bridge/ite-it6505.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/ite-it6505.c
index 19bab8d65e22..b9e5ce36f556 100644
--- a/drivers/gpu/drm/bridge/ite-it6505.c
+++ b/drivers/gpu/drm/bridge/ite-it6505.c
@@ -2814,13 +2814,15 @@ static int it6505_poweroff(struct it6505 *it6505)
if (pdata->pwr18) {
err = regulator_disable(pdata->pwr18);
if (err)
- return err;
+ dev_err(dev, "cannot disable pwr18 regulator: %d",
+ err);
}
if (pdata->ovdd) {
err = regulator_disable(pdata->ovdd);
if (err)
- return err;
+ dev_err(dev, "cannot disable ovdd regulator: %d",
+ err);
}
it6505->powered = false;
--
2.55.0