Thread (2 messages) 2 messages, 2 authors, 2022-09-21

Re: [PATCH v1] touchscreen/88pm860x-ts: check the pm860x_set_bits return value

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2022-09-21 22:47:32

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?

quoted hunk ↗ jump to hunk
Signed-off-by: Li Zhong <redacted>
---
 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help