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

Reply via email to