mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
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:
parent
b384a10446
commit
5ddcba53a1
1 changed files with 18 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue