diff options
author | zlzhang <zlzhang@mobvoi.com> | 2017-10-06 17:50:23 +0800 |
---|---|---|
committer | Zonglong Zhang <zlzhang@mobvoi.com> | 2017-10-06 09:56:47 +0000 |
commit | a22c7f99e9e0b797141062660b6f54ffa3293260 (patch) | |
tree | 92edf57de8001148ce63fa89de6aee2cc87afe36 | |
parent | 2b66a449c6ae72487aa006e80d72f390c8f0c700 (diff) | |
download | mediatek-a22c7f99e9e0b797141062660b6f54ffa3293260.tar.gz |
sensorhub : fix the bug that AP can not responding to sensorhub INT sometimes
BUG: 65556925
BUG: 64813514
Change-Id: Ic16f827cee8a8373bc1d22ef4f54575fbcaedc16
4 files changed, 11 insertions, 6 deletions
diff --git a/arch/arm/mach-mt2601/include/mach/eint.h b/arch/arm/mach-mt2601/include/mach/eint.h index f1d093a8a68d..03e48a28acaa 100644 --- a/arch/arm/mach-mt2601/include/mach/eint.h +++ b/arch/arm/mach-mt2601/include/mach/eint.h @@ -118,6 +118,7 @@ */ extern void mt_eint_mask(unsigned int eint_num); extern void mt_eint_unmask(unsigned int eint_num); +extern unsigned int mt_eint_get_mask(unsigned int eint_num); extern void mt_eint_set_hw_debounce(unsigned int eint_num, unsigned int ms); extern void mt_eint_set_polarity(unsigned int eint_num, unsigned int pol); extern unsigned int mt_eint_set_sens(unsigned int eint_num, unsigned int sens); diff --git a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuBus.c b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuBus.c index 384539240700..3e410cdf5973 100644 --- a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuBus.c +++ b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuBus.c @@ -338,9 +338,7 @@ static int CWMCU_i2c_remove(struct i2c_client *client) static int CWMCU_i2c_suspend(struct device *dev) { - CWMCU_system_suspend(); - return 0; - + return CWMCU_system_suspend(); } static int CWMCU_i2c_resume(struct device *dev) diff --git a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.c b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.c index a85d091a7f9a..da0f3367a9e8 100644 --- a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.c +++ b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.c @@ -2995,11 +2995,16 @@ void CWMCU_resume(struct CWMCU_T *sensor) } -void CWMCU_system_suspend(void) +int CWMCU_system_suspend(void) { if (sensor->mcu_suspend_flag == 0) { if (sensor->mcu_mode == CW_BOOT) { - return; + return 0; + } + if(mt_eint_get_mask(CUST_EINT_SENSORHUB_NUM)) + { + SH_LOG("EINT gpio masked,return -EBUSY\n"); + return -EBUSY; } if (cw_tilt_wakeup_flag) { CW_INFO("suspend => enable tilt"); @@ -3010,6 +3015,7 @@ void CWMCU_system_suspend(void) CW_INFO("%s: power_on_list=0x%x", __FUNCTION__, sensor->power_on_list); } + return 0; } void CWMCU_system_resume(void) diff --git a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.h b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.h index 37137406300e..fb8601f3a439 100644 --- a/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.h +++ b/drivers/misc/mediatek/sensorhub/CwMcuSensor/CwMcuSensor.h @@ -627,7 +627,7 @@ extern void factory_get_calibrator_data(int sensor_id, extern void factory_set_mcu_calibration_data(int sensor_id); extern void init_factory_node(void); extern int spi_rw_bytes_serial(u8 * wbuf, u8 * rbuf, u8 len); -extern void CWMCU_system_suspend(void); +extern int CWMCU_system_suspend(void); extern void CWMCU_system_resume(void); |