Input: hideep - silence error in SW_RESET()
authorHans de Goede <hdegoede@redhat.com>
Fri, 17 Mar 2023 10:48:07 +0000 (03:48 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Fri, 17 Mar 2023 10:55:15 +0000 (03:55 -0700)
On some models the first HIDEEP_SYSCON_WDT_CON write alone is enough to
cause the controller to reset, causing the second write to fail:

i2c-hideep_ts: write to register 0x52000014 (0x000001) failed: -121

Switch this write to a raw hideep_pgm_w_mem() to avoid an error getting
logged in this case.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230311114726.182789-2-hdegoede@redhat.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/hideep.c

index 05998e83c36afbb41ea3dfc9e5e144286eee41a8..b47feb63cfb8c5b898d3bc6d997db1f447f98f83 100644 (file)
@@ -271,9 +271,14 @@ static int hideep_pgm_w_reg(struct hideep_ts *ts, u32 addr, u32 val)
 
 #define SW_RESET_IN_PGM(clk)                                   \
 {                                                              \
+       __be32 data = cpu_to_be32(0x01);                        \
        hideep_pgm_w_reg(ts, HIDEEP_SYSCON_WDT_CNT, (clk));     \
        hideep_pgm_w_reg(ts, HIDEEP_SYSCON_WDT_CON, 0x03);      \
-       hideep_pgm_w_reg(ts, HIDEEP_SYSCON_WDT_CON, 0x01);      \
+       /*                                                      \
+        * The first write may already cause a reset, use a raw \
+        * write for the second write to avoid error logging.   \
+        */                                                     \
+       hideep_pgm_w_mem(ts, HIDEEP_SYSCON_WDT_CON, &data, 1);  \
 }
 
 #define SET_FLASH_PIO(ce)                                      \