diff options
-rw-r--r-- | driver/fingerprint/elan/elan_private.c | 5 | ||||
-rw-r--r-- | driver/fingerprint/elan/elan_sensor.h | 15 | ||||
-rw-r--r-- | driver/fingerprint/elan/elan_sensor_pal.c | 7 | ||||
-rw-r--r-- | driver/fingerprint/elan/elan_sensor_pal.h | 15 | ||||
-rw-r--r-- | driver/fingerprint/elan/elan_setting.h | 2 |
5 files changed, 40 insertions, 4 deletions
diff --git a/driver/fingerprint/elan/elan_private.c b/driver/fingerprint/elan/elan_private.c index 336542c8f3..555ad14ba0 100644 --- a/driver/fingerprint/elan/elan_private.c +++ b/driver/fingerprint/elan/elan_private.c @@ -22,7 +22,6 @@ #include "elan_setting.h" #include "elan_sensor_pal.h" -extern uint16_t raw[IMAGE_TOTAL_PIXEL]; static uint16_t errors; #define CPRINTF(format, args...) cprintf(CC_FP, format, ##args) @@ -58,6 +57,7 @@ int fp_sensor_init(void) CPRINTF("========%s=======\n", __func__); errors = 0; + elan_execute_reset(); algorithm_parameter_setting(); if (elan_execute_calibration() < 0) errors |= FP_ERROR_INIT_FAIL; @@ -73,8 +73,7 @@ int fp_sensor_init(void) int fp_sensor_deinit(void) { CPRINTF("========%s=======\n", __func__); - always_memset(raw, 0, sizeof(raw)); - return EC_SUCCESS; + return elan_fp_deinit(); } /** diff --git a/driver/fingerprint/elan/elan_sensor.h b/driver/fingerprint/elan/elan_sensor.h index a9cf4e3f72..490b1acf16 100644 --- a/driver/fingerprint/elan/elan_sensor.h +++ b/driver/fingerprint/elan/elan_sensor.h @@ -12,13 +12,21 @@ #define FP_SENSOR_IMAGE_SIZE (80 * 80) #define FP_SENSOR_RES_X 80 #define FP_SENSOR_RES_Y 80 +#if defined(CHIP_FAMILY_STM32F4) +#define FP_ALGORITHM_TEMPLATE_SIZE 15000 +#elif defined(CHIP_FAMILY_STM32H7) #define FP_ALGORITHM_TEMPLATE_SIZE 40960 +#endif #define FP_MAX_FINGER_COUNT 3 #elif defined(CONFIG_FP_SENSOR_ELAN515) #define FP_SENSOR_IMAGE_SIZE (52 * 150) #define FP_SENSOR_RES_X 52 #define FP_SENSOR_RES_Y 150 +#if defined(CHIP_FAMILY_STM32F4) +#define FP_ALGORITHM_TEMPLATE_SIZE 15000 +#elif defined(CHIP_FAMILY_STM32H7) #define FP_ALGORITHM_TEMPLATE_SIZE 67000 +#endif #define FP_MAX_FINGER_COUNT 3 #endif #define FP_SENSOR_RES_BPP (8) @@ -161,4 +169,11 @@ int elan_sensor_get_alg_info(struct ec_response_fp_info *resp); * @return EC_SUCCESS on success */ int elan_fp_maintenance(uint16_t *error_state); + +/** + * Deinitialize the sensor IC. + * + * @return EC_SUCCESS on success otherwise error. + */ +int elan_fp_deinit(void); #endif diff --git a/driver/fingerprint/elan/elan_sensor_pal.c b/driver/fingerprint/elan/elan_sensor_pal.c index 0c8827d684..b59368b835 100644 --- a/driver/fingerprint/elan/elan_sensor_pal.c +++ b/driver/fingerprint/elan/elan_sensor_pal.c @@ -221,6 +221,8 @@ int elan_fp_maintenance(uint16_t *error_state) if (error_state == NULL) return EC_ERROR_INVAL; + /* Initial status */ + *error_state &= 0xFC00; sensor_info.num_defective_pixels = 0; sensor_info.sensor_error_code = 0; rv = fp_sensor_maintenance(&sensor_info); @@ -244,3 +246,8 @@ int elan_fp_maintenance(uint16_t *error_state) return EC_SUCCESS; } + +void __unused elan_sensor_set_rst(bool state) +{ + gpio_set_level(GPIO_FP_RST_ODL, state ? 0 : 1); +} diff --git a/driver/fingerprint/elan/elan_sensor_pal.h b/driver/fingerprint/elan/elan_sensor_pal.h index f9f85c1132..067b693245 100644 --- a/driver/fingerprint/elan/elan_sensor_pal.h +++ b/driver/fingerprint/elan/elan_sensor_pal.h @@ -114,6 +114,11 @@ int raw_capture(uint16_t *short_raw); int elan_execute_calibration(void); /** + * Execute reset ELAN fingerprint sensor flow. + */ +void elan_execute_reset(void); + +/** * Runs a test for defective pixels. * * @param[out] fp_sensor_info Structure containing output data. @@ -123,4 +128,14 @@ int elan_execute_calibration(void); */ int fp_sensor_maintenance(fp_sensor_info_t *fp_sensor_info); +/** + * @brief Set sensor reset state. + * + * Set sensor reset state. + * + * @param[in] state Reset state. + * true => reset sensor, i.e. low GPIO state + * false => normal operation, i.e. high GPIO state + */ +void __unused elan_sensor_set_rst(bool state); #endif diff --git a/driver/fingerprint/elan/elan_setting.h b/driver/fingerprint/elan/elan_setting.h index f7b16627b6..feaf5e1550 100644 --- a/driver/fingerprint/elan/elan_setting.h +++ b/driver/fingerprint/elan/elan_setting.h @@ -12,7 +12,7 @@ #define VID 0x04F3 #define PID 0x0903 #define MID 0x01 -#define VERSION 0x100A +#define VERSION 0x100B /* SPI tx and rx buffer size */ #define CONFIG_SPI_TX_BUF_SIZE 1024 |