mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
Hawao:Enable power gpio for Chipone FPS
WHY:FPS sensor will be overheating due to impact damage to FPS
WHAT:Enable power gpio in Chipone FPS driver so that it can disable power
when overheating.
Change-Id: Ie32e69870cbcc53f6fafd97ac0068f79b66afbaf
Reviewed-on: https://gerrit.mot.com/2166844
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: liujian <liujian24@lenovo.com>
Reviewed-by: Wang Wang <wangwang1@lenovo.com>
Submit-Approved: Jira Key
This commit is contained in:
parent
842041e75d
commit
65c4f350b2
2 changed files with 44 additions and 0 deletions
|
|
@ -2,4 +2,11 @@
|
|||
EXTRA_CFLAGS += -Wall
|
||||
EXTRA_CFLAGS += -I$(ANDROID_BUILD_TOP)/motorola/kernel/modules/include
|
||||
|
||||
prod_list := hawao
|
||||
find_target := $(foreach find, $(prod_list), $(findstring $(find), $(TARGET_PRODUCT)))
|
||||
ifneq ($(find_target), )
|
||||
$(warning jianl: define SUPPORT_POWER_GPIO)
|
||||
EXTRA_CFLAGS += -DSUPPORT_POWER_GPIO
|
||||
endif
|
||||
|
||||
obj-m += fpsensor_spi_tee.o
|
||||
|
|
|
|||
|
|
@ -25,7 +25,11 @@
|
|||
#define FPSENSOR_WAKEUP_OLD 2
|
||||
|
||||
#define FPSENSOR_SPI_VERSION "fpsensor_spi_tee_qcomm_v1.23.1"
|
||||
#ifdef SUPPORT_POWER_GPIO
|
||||
#define FPSENSOR_USE_QCOM_POWER_GPIO 1
|
||||
#else
|
||||
#define FPSENSOR_USE_QCOM_POWER_GPIO 0
|
||||
#endif
|
||||
#define FPSENSOR_WAKEUP_TYPE FPSENSOR_WAKEUP_SOURCE
|
||||
#define FP_NOTIFY 1
|
||||
#define FP_NOTIFY_TYPE FPSENSOR_FB_DRM
|
||||
|
|
@ -85,6 +89,33 @@ static void fpsensor_gpio_free(fpsensor_data_t *fpsensor)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if FPSENSOR_USE_QCOM_POWER_GPIO
|
||||
static void fpsensor_power_on(fpsensor_data_t *fpsensor)
|
||||
{
|
||||
// struct device *dev = &fpsensor->spi->dev;
|
||||
|
||||
fpsensor_debug(ERR_LOG, "fpsensor power_gpio=%d\n", fpsensor->power_gpio);
|
||||
if (fpsensor->power_gpio != 0) {
|
||||
// set power on
|
||||
gpio_direction_output(fpsensor->power_gpio, 1);
|
||||
gpio_set_value(fpsensor->power_gpio, 1);
|
||||
fpsensor_debug(ERR_LOG, "fpsensor fingerprint power on\n");
|
||||
}
|
||||
}
|
||||
static void fpsensor_power_off(fpsensor_data_t *fpsensor)
|
||||
{
|
||||
// struct device *dev = &fpsensor->spi->dev;
|
||||
|
||||
fpsensor_debug(ERR_LOG, "fpsensor power_gpio=%d\n", fpsensor->power_gpio);
|
||||
if (fpsensor->power_gpio != 0) {
|
||||
// set power off
|
||||
gpio_direction_output(fpsensor->power_gpio, 0);
|
||||
gpio_set_value(fpsensor->power_gpio, 0);
|
||||
fpsensor_debug(ERR_LOG, "fpsensor fingerprint power off\n");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void fpsensor_irq_gpio_cfg(fpsensor_data_t *fpsensor)
|
||||
{
|
||||
int error = 0;
|
||||
|
|
@ -346,9 +377,15 @@ static long fpsensor_ioctl(struct file *filp, unsigned int cmd, unsigned long ar
|
|||
break;
|
||||
case FPSENSOR_IOC_ENABLE_POWER:
|
||||
fpsensor_debug(INFO_LOG, "%s: FPSENSOR_IOC_ENABLE_POWER ======\n", __func__);
|
||||
#if FPSENSOR_USE_QCOM_POWER_GPIO
|
||||
fpsensor_power_on(fpsensor_dev);
|
||||
#endif
|
||||
break;
|
||||
case FPSENSOR_IOC_DISABLE_POWER:
|
||||
fpsensor_debug(INFO_LOG, "%s: FPSENSOR_IOC_DISABLE_POWER ======\n", __func__);
|
||||
#if FPSENSOR_USE_QCOM_POWER_GPIO
|
||||
fpsensor_power_off(fpsensor_dev);
|
||||
#endif
|
||||
break;
|
||||
case FPSENSOR_IOC_REMOVE:
|
||||
if(fpsensor_dev->device_available) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue