On Sun, Mar 01, 2026 at 06:51:18PM +0100, David Heidelberg via B4 Relay wrote: > From: David Heidelberg <[email protected]> > > We must power off regulators after failing at power on phase. > > Signed-off-by: David Heidelberg <[email protected]> > --- > drivers/input/touchscreen/stmfts.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/touchscreen/stmfts.c > b/drivers/input/touchscreen/stmfts.c > index db2dd0bb59fcc..f4e5f1b3ce796 100644 > --- a/drivers/input/touchscreen/stmfts.c > +++ b/drivers/input/touchscreen/stmfts.c > @@ -558,7 +558,7 @@ static int stmfts_power_on(struct stmfts_data *sdata) > > err = stmfts_read_system_info(sdata); > if (err) > - return err; > + goto power_off; > > enable_irq(sdata->client->irq); > > @@ -566,11 +566,11 @@ static int stmfts_power_on(struct stmfts_data *sdata) > > err = stmfts_command(sdata, STMFTS_SYSTEM_RESET); > if (err) > - return err; > + goto power_off; > > err = stmfts_command(sdata, STMFTS_SLEEP_OUT); > if (err) > - return err; > + goto power_off; > > /* optional tuning */ > err = stmfts_command(sdata, STMFTS_MS_CX_TUNING); > @@ -586,7 +586,7 @@ static int stmfts_power_on(struct stmfts_data *sdata) > > err = stmfts_command(sdata, STMFTS_FULL_FORCE_CALIBRATION); > if (err) > - return err; > + goto power_off; > > /* > * At this point no one is using the touchscreen > @@ -595,6 +595,11 @@ static int stmfts_power_on(struct stmfts_data *sdata) > (void) i2c_smbus_write_byte(sdata->client, STMFTS_SLEEP_IN); > > return 0; > + > +power_off: > + regulator_bulk_disable(ARRAY_SIZE(stmfts_supplies), > + sdata->supplies); > + return err;
Maybe wrap everything below enabling the supplies into stmfts_configute() or something to avoid bunch of gotos to power off on error? Thanks. -- Dmitry

