From 3c0d28d4cf91fff33b922abd22be6d6344277b42 Mon Sep 17 00:00:00 2001 From: liugy11 Date: Tue, 4 Sep 2018 13:04:56 +0800 Subject: [PATCH] capsensor sx9331: add suspend irq shielding Change-Id: I24f762b45b5b792c659b167fd311e957258a8a03 Signed-off-by: liugy11 Reviewed-on: https://gerrit.mot.com/1237354 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Jiyue Cui Reviewed-by: Ryan Lattrel Reviewed-by: Tao Sun Submit-Approved: Jira Key --- drivers/misc/sx933x/sx933x_sar.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/misc/sx933x/sx933x_sar.c b/drivers/misc/sx933x/sx933x_sar.c index df9828a28023..4acb3c373628 100644 --- a/drivers/misc/sx933x/sx933x_sar.c +++ b/drivers/misc/sx933x/sx933x_sar.c @@ -76,6 +76,7 @@ typedef struct sx933x static int irq_gpio_num; static psx93XX_t global_sx933x; +static void sx93XX_schedule_work(psx93XX_t this, unsigned long delay); static int sx933x_get_nirq_state(void) { return !gpio_get_value(irq_gpio_num); @@ -1116,8 +1117,9 @@ static int sx933x_suspend(struct device *dev) { psx93XX_t this = dev_get_drvdata(dev); if (this) { + sx933x_i2c_write_16bit(this,SX933X_CMD_REG,0xD);//make sx933x in Sleep mode + LOG_DBG(LOG_TAG "sx933x suspend:disable irq!\n"); disable_irq(this->irq); - //sx933x_i2c_write_16bit(this,SX933X_CPS_CTRL0_REG,0x20);//make sx933x in Sleep mode } return 0; } @@ -1126,8 +1128,10 @@ static int sx933x_resume(struct device *dev) { psx93XX_t this = dev_get_drvdata(dev); if (this) { + LOG_DBG(LOG_TAG "sx933x resume:enable irq!\n"); + sx93XX_schedule_work(this,0); enable_irq(this->irq); - //sx933x_i2c_write_16bit(this,SX933X_CPS_CTRL0_REG,0x27);//Exit from Sleep mode + sx933x_i2c_write_16bit(this,SX933X_CMD_REG,0xC);//Exit from Sleep mode } return 0; }