sensor:change sx9331 enable logic

when enable channel
need enable all 5 channels

Change-Id: I64f5dd8d1eb172673185f4a0ee8233295bc67d41
Signed-off-by: cuijy2 <cuijy1@motorola.com>
Reviewed-on: https://gerrit.mot.com/1425450
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Reviewed-by: Jianqiu Huang <huangjq9@motorola.com>
Reviewed-by: Wen Xie <xiewen3@motorola.com>
Reviewed-by: Guoyue Liu <liugy11@motorola.com>
Reviewed-by: Tao Sun <suntao2@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
cuijy2 2019-09-20 17:20:51 +08:00 • committed by Guoyue Liu
commit 5ddcba53a1

View file

@ -759,6 +759,7 @@ static void sx933x_exit_platform_hw(struct i2c_client *client)
static int capsensor_set_enable(struct sensors_classdev *sensors_cdev,
unsigned int enable)
{
bool disableFlag = true;
int i = 0;
u32 temp = 0x0;
@ -767,7 +768,7 @@ static int capsensor_set_enable(struct sensors_classdev *sensors_cdev,
if (enable == 1) {
LOG_DBG("enable cap sensor : %s\n", sensors_cdev->name);
sx933x_i2c_read_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, &temp);
temp = temp | (1 << psmtcButtons[i].offset);
temp = temp | 0x0000001F;
LOG_INFO("set reg 0x%x val 0x%x\n", SX933X_GNRLCTRL2_REG, temp);
sx933x_i2c_write_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, temp);
psmtcButtons[i].enabled = true;
@ -777,9 +778,6 @@ static int capsensor_set_enable(struct sensors_classdev *sensors_cdev,
manual_offset_calibration(global_sx933x);
} else if (enable == 0) {
LOG_DBG("disable cap sensor : %s\n", sensors_cdev->name);
sx933x_i2c_read_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, &temp);
temp = temp & ~(1 << psmtcButtons[i].offset);
sx933x_i2c_write_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, temp);
psmtcButtons[i].enabled = false;
input_report_abs(psmtcButtons[i].input_dev, ABS_DISTANCE, -1);
input_sync(psmtcButtons[i].input_dev);
@ -788,6 +786,22 @@ static int capsensor_set_enable(struct sensors_classdev *sensors_cdev,
}
}
}
//if all chs disabled, then disable all
for (i = 0; i < ARRAY_SIZE(psmtcButtons); i++) {
if (psmtcButtons[i].enabled) {
disableFlag = false;
break;
}
}
if (disableFlag) {
LOG_DBG("disable all chs\n");
sx933x_i2c_read_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, &temp);
LOG_INFO("read reg 0x%x val 0x%x\n", SX933X_GNRLCTRL2_REG, temp);
temp = temp & 0xFFFFFFE0;
LOG_INFO("set reg 0x%x val 0x%x\n", SX933X_GNRLCTRL2_REG, temp);
sx933x_i2c_write_16bit(global_sx933x, SX933X_GNRLCTRL2_REG, temp);
}
return 0;
}