summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/fingerprint/elan/elan_private.c5
-rw-r--r--driver/fingerprint/elan/elan_sensor.h15
-rw-r--r--driver/fingerprint/elan/elan_sensor_pal.c7
-rw-r--r--driver/fingerprint/elan/elan_sensor_pal.h15
-rw-r--r--driver/fingerprint/elan/elan_setting.h2
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