Hi, On Wed, Sep 21, 2022 at 01:37:06PM -0700, Li Zhong wrote: > pm860x_touch_close() got the return value of pm860x_set_bits() but > didn't check it. However, pm860x_set_bits() could fail when writing the > reg map fails. Under what conditions would the write fail? > Since pm860x_touch_close() cannot return an error value, > we retry the bit setting in the error handling. What guarantees that the repeated write will not fail again? What is the failure mode if write does not succeed? > > Signed-off-by: Li Zhong <floridsleeves@xxxxxxxxx> > --- > drivers/input/touchscreen/88pm860x-ts.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/touchscreen/88pm860x-ts.c b/drivers/input/touchscreen/88pm860x-ts.c > index 81a3ea4b9a3d..043520d1ff26 100644 > --- a/drivers/input/touchscreen/88pm860x-ts.c > +++ b/drivers/input/touchscreen/88pm860x-ts.c > @@ -106,10 +106,13 @@ static void pm860x_touch_close(struct input_dev *dev) > { > struct pm860x_touch *touch = input_get_drvdata(dev); > int data; > + int ret; > > data = MEAS_PD_EN | MEAS_TSIX_EN | MEAS_TSIY_EN > | MEAS_TSIZ1_EN | MEAS_TSIZ2_EN; > - pm860x_set_bits(touch->i2c, MEAS_EN3, data, 0); > + ret = pm860x_set_bits(touch->i2c, MEAS_EN3, data, 0); > + if (ret < 0) > + pm860x_set_bits(touch->i2c, MEAS_EN3, data, 0); > } > > #ifdef CONFIG_OF > -- > 2.25.1 > Thanks. -- Dmitry