From 51c7c1a3eb5d319dff89b7534c32376dfc360179 Mon Sep 17 00:00:00 2001 From: Ryan Lattrel Date: Wed, 20 May 2020 09:55:17 -0500 Subject: [PATCH] sx933x: turn off sensing before flip updates Turn off the sensing before updating for flip open/close. It is possibly leading to random lockups. Change-Id: I09b48a36adc7ca0d0514e9af4d8ef881c118d6b8 Signed-off-by: Ryan Lattrel Reviewed-on: https://gerrit.mot.com/1568380 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Perry White Reviewed-by: Konstantin Makariev Submit-Approved: Jira Key --- drivers/misc/sx933x/sx933x_sar.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/misc/sx933x/sx933x_sar.c b/drivers/misc/sx933x/sx933x_sar.c index d7af9368035e..4ccc22bec114 100644 --- a/drivers/misc/sx933x/sx933x_sar.c +++ b/drivers/misc/sx933x/sx933x_sar.c @@ -1044,6 +1044,11 @@ static int ps_notify_callback(struct notifier_block *self, static void write_flip_regs(int num_regs, struct smtc_reg_data *regs) { int i; + u32 temp = 0; + + /* Disable if we are on */ + sx933x_i2c_read_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, &temp); + sx933x_i2c_write_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, temp & 0xFFFFFFE0); for(i=0; i < num_regs; i++) { @@ -1053,6 +1058,14 @@ static void write_flip_regs(int num_regs, struct smtc_reg_data *regs) sx933x_i2c_write_16bit(global_sx933x, regs[i].reg, regs[i].val); } + + /* If one of the sensors is on, re-enable it */ + for (i=0; i < ARRAY_SIZE(psmtcButtons); i++) { + if (psmtcButtons[i].enabled) { + sx933x_i2c_write_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, temp | 0x0000001F); + break; + } + } } static void update_flip_regs(struct sx933x_platform_data *data, unsigned long state)