summaryrefslogtreecommitdiff
path: root/driver/fingerprint/elan
diff options
context:
space:
mode:
authorJack Rosenthal <jrosenth@chromium.org>2021-11-04 12:11:58 -0600
committerCommit Bot <commit-bot@chromium.org>2021-11-05 04:22:34 +0000
commit252457d4b21f46889eebad61d4c0a65331919cec (patch)
tree01856c4d31d710b20e85a74c8d7b5836e35c3b98 /driver/fingerprint/elan
parent08f5a1e6fc2c9467230444ac9b582dcf4d9f0068 (diff)
downloadchrome-ec-252457d4b21f46889eebad61d4c0a65331919cec.tar.gz
In the interest of making long-term branch maintenance incur as little technical debt on us as possible, we should not maintain any files on the branch we are not actually using. This has the added effect of making it extremely clear when merging CLs from the main branch when changes have the possibility to affect us. The follow-on CL adds a convenience script to actually pull updates from the main branch and generate a CL for the update. BUG=b:204206272 BRANCH=ish TEST=make BOARD=arcada_ish && make BOARD=drallion_ish Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I17e4694c38219b5a0823e0a3e55a28d1348f4b18 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3262038 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Tom Hughes <tomhughes@chromium.org>
Diffstat (limited to 'driver/fingerprint/elan')
-rw-r--r--driver/fingerprint/elan/build.mk20
-rw-r--r--driver/fingerprint/elan/elan_private.c247
-rw-r--r--driver/fingerprint/elan/elan_sensor.h179
-rw-r--r--driver/fingerprint/elan/elan_sensor_pal.c253
-rw-r--r--driver/fingerprint/elan/elan_sensor_pal.h141
-rw-r--r--driver/fingerprint/elan/elan_setting.h101
6 files changed, 0 insertions, 941 deletions
diff --git a/driver/fingerprint/elan/build.mk b/driver/fingerprint/elan/build.mk
deleted file mode 100644
index 2e4ad2d46f..0000000000
--- a/driver/fingerprint/elan/build.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2021 The Chromium OS Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Build for ELAN fingerprint drivers
-
-# Note that this variable includes the trailing "/"
-_elan_cur_dir:=$(dir $(lastword $(MAKEFILE_LIST)))
-
-ifneq (,$(filter rw,$(CONFIG_FP_SENSOR_ELAN80) $(CONFIG_FP_SENSOR_ELAN515)))
-
-# Make sure output directory is created (in build directory)
-dirs-y+="$(_elan_cur_dir)"
-
-include $(_elan_cur_dir)../../../private/fingerprint/elan/build.mk
-
-all-obj-rw+=$(_elan_cur_dir)elan_private.o
-all-obj-rw+=$(_elan_cur_dir)elan_sensor_pal.o
-
-endif
diff --git a/driver/fingerprint/elan/elan_private.c b/driver/fingerprint/elan/elan_private.c
deleted file mode 100644
index 555ad14ba0..0000000000
--- a/driver/fingerprint/elan/elan_private.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include <stddef.h>
-#include "common.h"
-#include "console.h"
-#include "endian.h"
-#include "gpio.h"
-#include "link_defs.h"
-#include "spi.h"
-#include "system.h"
-#include "timer.h"
-#include "util.h"
-#include "shared_mem.h"
-#include "math_util.h"
-#include "fpsensor.h"
-#include "cryptoc/util.h"
-
-#include "elan_sensor.h"
-#include "elan_setting.h"
-#include "elan_sensor_pal.h"
-
-static uint16_t errors;
-
-#define CPRINTF(format, args...) cprintf(CC_FP, format, ##args)
-
-/* Sensor description */
-static struct ec_response_fp_info ec_fp_sensor_info = {
- /* Sensor identification */
- .vendor_id = VID,
- .product_id = PID,
- .model_id = MID,
- .version = VERSION,
- /* Image frame characteristics */
- .frame_size = FP_SENSOR_RES_X * FP_SENSOR_RES_Y,
- .pixel_format = V4L2_PIX_FMT_GREY,
- .width = FP_SENSOR_RES_X,
- .height = FP_SENSOR_RES_Y,
- .bpp = FP_SENSOR_RES_BPP,
-};
-
-/**
- * set fingerprint sensor into power saving mode
- */
-void fp_sensor_low_power(void)
-{
- elan_woe_mode();
-}
-
-/**
- * Reset and initialize the sensor IC
- */
-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;
- if (elan_woe_mode() != 0)
- errors |= FP_ERROR_SPI_COMM;
-
- return EC_SUCCESS;
-}
-
-/**
- * Deinitialize the sensor IC
- */
-int fp_sensor_deinit(void)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_fp_deinit();
-}
-
-/**
- * Fill the 'ec_response_fp_info' buffer with the sensor information
- *
- * @param[out] resp retrieve the version, sensor and template information
- *
- * @return EC_SUCCESS on success otherwise error.
- */
-int fp_sensor_get_info(struct ec_response_fp_info *resp)
-{
- int ret = 0;
-
- CPRINTF("========%s=======\n", __func__);
- memcpy(resp, &ec_fp_sensor_info, sizeof(struct ec_response_fp_info));
- elan_sensor_get_alg_info(resp);
- resp->errors |= errors;
- CPRINTF("##%s## FrameSize=%d, errors=0x%04x\n", __func__,
- resp->frame_size, resp->errors);
-
- return ret;
-}
-
-/**
- * Compares given finger image against enrolled templates.
- *
- * @param[in] templ a pointer to the array of template buffers.
- * @param[in] templ_count the number of buffers in the array of templates.
- * @param[in] image the buffer containing the finger image
- * @param[out] match_index index of the matched finger in the template
- * array if any.
- * @param[out] update_bitmap contains one bit per template, the bit is set if
- * the match has updated the given template.
- *
- * @return negative value on error, else one of the following code :
- * - EC_MKBP_FP_ERR_MATCH_NO on non-match
- * - EC_MKBP_FP_ERR_MATCH_YES for match when template was not updated with
- * new data
- * - EC_MKBP_FP_ERR_MATCH_YES_UPDATED for match when template was updated
- * - EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED match, but update failed (not saved)
- * - EC_MKBP_FP_ERR_MATCH_LOW_QUALITY when matching could not be performed due
- * to low image quality
- * - EC_MKBP_FP_ERR_MATCH_LOW_COVERAGE when matching could not be performed
- * due to finger covering too little area of the sensor
- */
-int fp_finger_match(void *templ, uint32_t templ_count, uint8_t *image,
- int32_t *match_index, uint32_t *update_bitmap)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_match(templ, templ_count, image, match_index,
- update_bitmap);
-}
-
-/**
- * start a finger enrollment session and initialize enrollment data
- *
- * @return 0 on success.
- *
- */
-int fp_enrollment_begin(void)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_enrollment_begin();
-}
-
-/**
- * Generate a template from the finger whose enrollment has just being
- * completed.
- *
- * @param templ the buffer which will receive the template.
- * templ can be set to NULL to abort the current enrollment
- * process.
- *
- * @return 0 on success or a negative error code.
- */
-int fp_enrollment_finish(void *templ)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_enrollment_finish(templ);
-}
-
-/**
- * Adds fingerprint image to the current enrollment session.
- *
- * @param[in] image fingerprint image data
- * @param[out] completion retrieve percentage of current enrollment
- *
- * @return a negative value on error or one of the following codes:
- * - EC_MKBP_FP_ERR_ENROLL_OK when image was successfully enrolled
- * - EC_MKBP_FP_ERR_ENROLL_IMMOBILE when image added, but user should be
- * advised to move finger
- * - EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY when image could not be used due to
- * low image quality
- * - EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE when image could not be used due to
- * finger covering too little area of the sensor
- */
-int fp_finger_enroll(uint8_t *image, int *completion)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_enroll(image, completion);
-}
-
-/**
- * Put the sensor in its lowest power state.
- *
- * fp_sensor_configure_detect needs to be called to restore finger detection
- * functionality.
- */
-void fp_sensor_configure_detect(void)
-{
- CPRINTF("========%s=======\n", __func__);
- elan_woe_mode();
-}
-
-/**
- * Acquires a fingerprint image with specific capture mode.
- *
- * @param[out] image_data Memory buffer to retrieve fingerprint image data
- * Image_data is allocated by the caller and the size
- * is FP_SENSOR_IMAGE_SIZE.
- * @param[in] mode one of the FP_CAPTURE_ constants to get a specific
- * image type
- * - FP_CAPTURE_VENDOR_FORMAT: Full blown vendor-defined capture
- * - FP_CAPTURE_SIMPLE_IMAGE: Simple raw image capture
- * - FP_CAPTURE_PATTERN0: Self test pattern
- * - FP_CAPTURE_PATTERN1: Self test pattern
- * - FP_CAPTURE_QUALITY_TEST
- * - FP_CAPTURE_RESET_TEST
- * - FP_CAPTURE_TYPE_MAX
- *
- * @return
- * - 0 on success
- * - negative value on error
- * - FP_SENSOR_LOW_IMAGE_QUALITY on image captured but quality is too low
- * - FP_SENSOR_TOO_FAST on finger removed before image was captured
- * - FP_SENSOR_LOW_SENSOR_COVERAGE on sensor not fully covered by finger
- */
-int fp_sensor_acquire_image_with_mode(uint8_t *image_data, int mode)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_sensor_acquire_image_with_mode(image_data, mode);
-}
-
-/**
- * Returns the status of the finger on the sensor.
- *
- * @return one of the following codes:
- * - FINGER_NONE
- * - FINGER_PARTIAL
- * - FINGER_PRESENT
- */
-enum finger_state fp_sensor_finger_status(void)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_sensor_finger_status();
-}
-
-/**
- * Runs a test for defective pixels.
- *
- * Should be triggered periodically by the client. The maintenance command can
- * take several hundred milliseconds to run.
- *
- * @return EC_ERROR_HW_INTERNAL on error (such as finger on sensor)
- * @return EC_SUCCESS on success
- */
-int fp_maintenance(void)
-{
- CPRINTF("========%s=======\n", __func__);
- return elan_fp_maintenance(&errors);
-}
diff --git a/driver/fingerprint/elan/elan_sensor.h b/driver/fingerprint/elan/elan_sensor.h
deleted file mode 100644
index 490b1acf16..0000000000
--- a/driver/fingerprint/elan/elan_sensor.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef CROS_EC_DRIVER_FINGERPRINT_ELAN_ELAN_SENSOR_H
-#define CROS_EC_DRIVER_FINGERPRINT_ELAN_ELAN_SENSOR_H
-#include "common.h"
-
-/* Sensor pixel resolution */
-#if defined(CONFIG_FP_SENSOR_ELAN80)
-#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)
-
-/**
- * Set ELAN fingerprint sensor into finger touch detects and power saving mode
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_woe_mode(void);
-
-/**
- * Set ELAN fingerprint sensor into the image sensing mode
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_sensing_mode(void);
-
-/**
- * To initialize parameters of the ELAN matching algorithm
- *
- */
-void algorithm_parameter_setting(void);
-
-/**
- * Compares given finger image against enrolled templates.
- *
- * @param[in] templ a pointer to the array of template buffers.
- * @param[in] templ_count the number of buffers in the array of templates.
- * @param[in] image the buffer containing the finger image
- * @param[out] match_index index of the matched finger in the template
- * array if any.
- * @param[out] update_bitmap contains one bit per template, the bit is set if
- * the match has updated the given template.
- *
- * @return negative value on error, else one of the following code :
- * - EC_MKBP_FP_ERR_MATCH_NO on non-match
- * - EC_MKBP_FP_ERR_MATCH_YES for match when template was not updated with
- * new data
- * - EC_MKBP_FP_ERR_MATCH_YES_UPDATED for match when template was updated
- * - EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED match, but update failed (not saved)
- * - EC_MKBP_FP_ERR_MATCH_LOW_QUALITY when matching could not be performed due
- * to low image quality
- * - EC_MKBP_FP_ERR_MATCH_LOW_COVERAGE when matching could not be performed
- * due to finger covering too little area of the sensor
- */
-int elan_match(void *templ, uint32_t templ_count, uint8_t *image,
- int32_t *match_index, uint32_t *update_bitmap);
-
-/**
- * start a finger enrollment session and initialize enrollment data
- *
- * @return 0 on success.
- *
- */
-int elan_enrollment_begin(void);
-
-/**
- * Adds fingerprint image to the current enrollment session.
- *
- * @param[in] image fingerprint image data
- * @param[out] completion retrieve percentage of current enrollment
- *
- * @return a negative value on error or one of the following codes:
- * - EC_MKBP_FP_ERR_ENROLL_OK when image was successfully enrolled
- * - EC_MKBP_FP_ERR_ENROLL_IMMOBILE when image added, but user should be
- advised to move finger
- * - EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY when image could not be used due to
- * low image quality
- * - EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE when image could not be used due to
- * finger covering too little area of the sensor
- */
-int elan_enroll(uint8_t *image, int *completion);
-
-/**
- * Acquires a fingerprint image with specific capture mode.
- *
- * @param[out] image_data Memory buffer to retrieve fingerprint image data
- * Image_data is allocated by the caller and the size
- * is FP_SENSOR_IMAGE_SIZE.
- * @param[in] mode one of the FP_CAPTURE_ constants to get a
- * specific image type
- * - FP_CAPTURE_VENDOR_FORMAT: Full blown vendor-defined capture
- * - FP_CAPTURE_SIMPLE_IMAGE: Simple raw image capture
- * - FP_CAPTURE_PATTERN0: Self test pattern
- * - FP_CAPTURE_PATTERN1: Self test pattern
- * - FP_CAPTURE_QUALITY_TEST
- * - FP_CAPTURE_RESET_TEST
- * - FP_CAPTURE_TYPE_MAX
- *
- * @return
- * - 0 on success
- * - negative value on error
- * - FP_SENSOR_LOW_IMAGE_QUALITY on image captured but quality is too low
- * - FP_SENSOR_TOO_FAST on finger removed before image was captured
- * - FP_SENSOR_LOW_SENSOR_COVERAGE on sensor not fully covered by finger
- */
-int elan_sensor_acquire_image_with_mode(uint8_t *image_data, int mode);
-
-/**
- * Returns the status of the finger on the sensor.
- *
- * @return one of the following codes:
- * - FINGER_NONE
- * - FINGER_PARTIAL
- * - FINGER_PRESENT
- */
-enum finger_state elan_sensor_finger_status(void);
-
-/**
- * Generate a template from the finger whose enrollment has just being
- * completed.
- *
- * @param templ the buffer which will receive the template.
- * templ can be set to NULL to abort the current enrollment
- * process.
- *
- * @return 0 on success or a negative error code.
- */
-int elan_enrollment_finish(void *templ);
-
-/**
- * Fill the 'ec_response_fp_alg_info' buffer with the sensor alg information
- *
- * @param[out] resp retrieve the algorithm information
- *
- * @return EC_SUCCESS on success otherwise error.
- */
-int elan_sensor_get_alg_info(struct ec_response_fp_info *resp);
-
-/**
- * Runs a test for defective pixels.
- *
- * Should be triggered periodically by the client. The maintenance command can
- * take several hundred milliseconds to run.
- *
- * @return EC_ERROR_HW_INTERNAL on error (such as finger on sensor)
- * @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
deleted file mode 100644
index b59368b835..0000000000
--- a/driver/fingerprint/elan/elan_sensor_pal.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-/* ELAN Platform Abstraction Layer callbacks */
-
-#include <stddef.h>
-#include "common.h"
-#include "console.h"
-#include "endian.h"
-#include "fpsensor.h"
-#include "gpio.h"
-#include "link_defs.h"
-#include "spi.h"
-#include "system.h"
-#include "timer.h"
-#include "util.h"
-#include "shared_mem.h"
-#include "math_util.h"
-#include "cryptoc/util.h"
-
-#include "elan_setting.h"
-#include "elan_sensor.h"
-#include "elan_sensor_pal.h"
-
-static uint8_t tx_buf[CONFIG_SPI_TX_BUF_SIZE] __uncached;
-static uint8_t rx_buf[CONFIG_SPI_RX_BUF_SIZE] __uncached;
-
-int elan_write_cmd(uint8_t fp_cmd)
-{
- int rc = 0;
-
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
-
- tx_buf[0] = fp_cmd;
- rc = spi_transaction(&spi_devices[0], tx_buf, 2, rx_buf,
- SPI_READBACK_ALL);
- return rc;
-}
-
-int elan_read_cmd(uint8_t fp_cmd, uint8_t *regdata)
-{
- int ret = 0;
-
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
-
- tx_buf[0] = fp_cmd; /* one byte data read */
- ret = spi_transaction(&spi_devices[0], tx_buf, 2, rx_buf,
- SPI_READBACK_ALL);
- *regdata = rx_buf[1];
-
- return ret;
-}
-
-int elan_spi_transaction(uint8_t *tx, int tx_len, uint8_t *rx, int rx_len)
-{
- int ret = 0;
-
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
-
- memcpy(tx_buf, tx, tx_len);
- ret = spi_transaction(&spi_devices[0], tx_buf, tx_len, rx_buf, rx_len);
- memcpy(rx, rx_buf, rx_len);
-
- return ret;
-}
-
-int elan_write_register(uint8_t regaddr, uint8_t regdata)
-{
- int ret = 0;
-
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
-
- tx_buf[0] = WRITE_REG_HEAD + regaddr; /* one byte data write */
- tx_buf[1] = regdata;
- ret = spi_transaction(&spi_devices[0], tx_buf, 2, rx_buf,
- SPI_READBACK_ALL);
- return ret;
-}
-
-int elan_write_page(uint8_t page)
-{
- int ret = 0;
-
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
-
- tx_buf[0] = PAGE_SEL;
- tx_buf[1] = page;
- ret = spi_transaction(&spi_devices[0], tx_buf, 2, rx_buf,
- SPI_READBACK_ALL);
-
- return ret;
-}
-
-int elan_write_reg_vector(const uint8_t *reg_table, int length)
-{
- int ret = 0;
- int i = 0;
- uint8_t write_regaddr;
- uint8_t write_regdata;
-
- for (i = 0; i < length; i = i + 2) {
- write_regaddr = reg_table[i];
- write_regdata = reg_table[i + 1];
- ret = elan_write_register(write_regaddr, write_regdata);
- if (ret < 0)
- break;
- }
- return ret;
-}
-
-int raw_capture(uint16_t *short_raw)
-{
- int ret = 0, i = 0, image_index = 0, index = 0;
- int cnt_timer = 0;
- int dma_loop = 0, dma_len = 0;
- uint8_t regdata[4] = { 0 };
- char *img_buf;
-
- memset(short_raw, 0, sizeof(uint16_t) * IMAGE_TOTAL_PIXEL);
-
- ret = shared_mem_acquire(sizeof(uint8_t) * IMG_BUF_SIZE, &img_buf);
- if (ret) {
- LOGE_SA("%s Can't get shared mem\n", __func__);
- return ret;
- }
- memset(img_buf, 0, sizeof(uint8_t) * IMG_BUF_SIZE);
-
- /* Write start scans command to fp sensor */
- if (elan_write_cmd(START_SCAN) < 0) {
- ret = ELAN_ERROR_SPI;
- LOGE_SA("%s SPISendCommand( SSP2, START_SCAN ) fail ret = %d",
- __func__, ret);
- goto exit;
- }
-
- /* Polling scan status */
- cnt_timer = 0;
- while (1) {
- usleep(1000);
- cnt_timer++;
- regdata[0] = SENSOR_STATUS;
- elan_spi_transaction(regdata, 2, regdata, 2);
- if (regdata[0] & 0x04)
- break;
-
- if (cnt_timer > POLLING_SCAN_TIMER) {
- ret = ELAN_ERROR_SCAN;
- LOGE_SA("%s regdata = 0x%x, fail ret = %d", __func__,
- regdata[0], ret);
- goto exit;
- }
- }
-
- /* Read the image from fp sensor */
- dma_loop = 4;
- dma_len = IMG_BUF_SIZE / dma_loop;
-
- for (i = 0; i < dma_loop; i++) {
- memset(tx_buf, 0, CONFIG_SPI_TX_BUF_SIZE);
- memset(rx_buf, 0, CONFIG_SPI_RX_BUF_SIZE);
- tx_buf[0] = START_READ_IMAGE;
- ret = spi_transaction(&spi_devices[0], tx_buf, 2, rx_buf,
- dma_len);
- memcpy(&img_buf[dma_len * i], rx_buf, dma_len);
- }
-
- /* Remove dummy byte */
- for (image_index = 1; image_index < IMAGE_WIDTH; image_index++)
- memcpy(&img_buf[RAW_PIXEL_SIZE * image_index],
- &img_buf[RAW_DATA_SIZE * image_index], RAW_PIXEL_SIZE);
-
- for (index = 0; index < IMAGE_TOTAL_PIXEL; index++)
- short_raw[index] =
- (img_buf[index * 2] << 8) + img_buf[index * 2 + 1];
-
-exit:
- if (img_buf != NULL) {
- always_memset(img_buf, 0, sizeof(uint8_t) * IMG_BUF_SIZE);
- shared_mem_release(img_buf);
- }
-
- if (ret != 0)
- LOGE_SA("%s error = %d", __func__, ret);
-
- return ret;
-}
-
-int elan_execute_calibration(void)
-{
- int retry_time = 0;
- int ret = 0;
-
- while (retry_time < REK_TIMES) {
- elan_write_cmd(SRST);
- elan_write_cmd(FUSE_LOAD);
- register_initialization();
- elan_sensing_mode();
-
- ret = calibration();
- if (ret == 0)
- break;
-
- retry_time++;
- }
-
- return ret;
-}
-
-int elan_fp_maintenance(uint16_t *error_state)
-{
- int rv;
- fp_sensor_info_t sensor_info;
- timestamp_t start = get_time();
-
- 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);
- LOGE_SA("Maintenance took %d ms", time_since32(start) / MSEC);
-
- if (rv != 0) {
- /*
- * Failure can occur if any of the fingerprint detection zones
- * are covered (i.e., finger is on sensor).
- */
- LOGE_SA("Failed to run maintenance: %d", rv);
- return EC_ERROR_HW_INTERNAL;
- }
- if (sensor_info.num_defective_pixels >= FP_ERROR_DEAD_PIXELS_UNKNOWN)
- *error_state = FP_ERROR_DEAD_PIXELS_UNKNOWN;
- else
- *error_state |=
- FP_ERROR_DEAD_PIXELS(sensor_info.num_defective_pixels);
- LOGE_SA("num_defective_pixels: %d", sensor_info.num_defective_pixels);
- LOGE_SA("sensor_error_code: %d", sensor_info.sensor_error_code);
-
- 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
deleted file mode 100644
index 067b693245..0000000000
--- a/driver/fingerprint/elan/elan_sensor_pal.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-/* ELAN Platform Abstraction Layer callbacks */
-
-#ifndef ELAN_SENSOR_PAL_H_
-#define ELAN_SENSOR_PAL_H_
-
-/* ELAN error codes */
-enum elan_error_code {
- ELAN_ERROR_NONE = 0,
- ELAN_ERROR_SPI = 1,
- ELAN_ERROR_SCAN = 2,
- ELAN_ERROR_CAL = 3,
- ELAN_ERROR_DEFECT_NUM = 4,
- ELAN_ERROR_DEFECT_X = 5,
- ELAN_ERROR_DEFECT_Y = 6
-};
-
-/* ELAN error info */
-typedef struct {
- uint32_t num_defective_pixels;
- uint16_t sensor_error_code;
-} fp_sensor_info_t;
-
-/**
- * @brief Write fp command to the sensor
- *
- * @param[in] fp_cmd One byte fp command to write
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_write_cmd(uint8_t fp_cmd);
-
-/**
- * @brief Read fp register data from the sensor
- *
- * @param[in] fp_cmd One byte fp command to read
- * @param[out] regdata One byte data where register's data will be stored
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_read_cmd(uint8_t fp_cmd, uint8_t *regdata);
-
-/**
- * @brief Transfers and receives SPI data.
- *
- * @param[in] tx The buffer to transfer
- * @param[in] tx_len The length to transfer
- * @param[out] rx The buffer where read data will be stored
- * @param[in] rx_len The length to receive
- * @return 0 on success.
- * negative value on error.
- */
-int elan_spi_transaction(uint8_t *tx, int tx_len, uint8_t *rx, int rx_len);
-
-/**
- * @brief Write fp register data to sensor
- *
- * @param[in] regaddr One byte register address to write
- * @param[in] regdata Data to write to register
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_write_register(uint8_t regaddr, uint8_t regdata);
-
-/**
- * @brief Select sensor RAM page of register
- *
- * @param[in] page The number of RAM page control registers
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_write_page(uint8_t page);
-
-/**
- * @brief Write register table to fp sensor
- *
- * Using a table to write data to sensor register.
- * This table contains multiple pairs of address and data to
- * be written.
- *
- * @param[in] reg_table The register address to write
- * @param[in] length The data to write to register
- *
- * @return 0 on success.
- * negative value on error.
- */
-int elan_write_reg_vector(const uint8_t *reg_table, int length);
-
-/**
- * Get 14bits raw image data from ELAN fingerprint sensor
- *
- * @param[out] short_raw The memory buffer to receive fingerprint image
- * raw data, buffer length is:
- * (IMAGE_WIDTH*IMAGE_HEIGHT)*sizeof(uint16_t)
- *
- * @return 0 on success.
- * negative value on error.
- */
-int raw_capture(uint16_t *short_raw);
-
-/**
- * Execute calibrate ELAN fingerprint sensor flow.
- *
- * @return 0 on success.
- * negative value on error.
- */
-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.
- *
- * @return 0 on success.
- * negative value on error.
- */
-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
deleted file mode 100644
index feaf5e1550..0000000000
--- a/driver/fingerprint/elan/elan_setting.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Copyright 2021 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef ELAN_SETTING_H
-#define ELAN_SETTING_H
-
-#include <stdint.h>
-
-/* The hardware ID information and FW version */
-#define VID 0x04F3
-#define PID 0x0903
-#define MID 0x01
-#define VERSION 0x100B
-
-/* SPI tx and rx buffer size */
-#define CONFIG_SPI_TX_BUF_SIZE 1024
-#define CONFIG_SPI_RX_BUF_SIZE 5120
-
-/**
- * Elan sensor operation is controlled by sending commands and receiving
- * through the SPI interface. There are several SPI command codes for
- * controlling FP sensor:
- *
- * - START_SCAN Start scan
- * - START_READ_IMAGE Start read the image
- * - SRST Software reset
- * - FUSE_LOAD Load OTP trims data to control registers
- * - READ_REG_HEAD Register single read
- * - WRITE_REG_HEAD Register burst write
- * - READ_SERIER_REG_HEAD Register burst read
- * - PAGE_SEL Register page selection
- * - SENSOR_STATUS Read sensor status
- */
-#define START_SCAN 0x01
-#define START_READ_IMAGE 0x10
-#define SRST 0x31
-#define FUSE_LOAD 0x04
-#define READ_REG_HEAD 0x40
-#define WRITE_REG_HEAD 0x80
-#define READ_SERIER_REG_HEAD 0xC0
-#define PAGE_SEL 0x07
-#define SENSOR_STATUS 0x03
-
-/* Sensor type name */
-#define EFSA515 1
-#define EFSA80SC 2
-#if defined(CONFIG_FP_SENSOR_ELAN80)
-#define IC_SELECTION EFSA80SC
-#elif defined(CONFIG_FP_SENSOR_ELAN515)
-#define IC_SELECTION EFSA515
-#endif
-
-/* Sensor pixel resolution */
-#if (IC_SELECTION == EFSA80SC)
-#define IMAGE_WIDTH 80
-#define IMAGE_HEIGHT 80
-#elif (IC_SELECTION == EFSA515)
-#define IMAGE_WIDTH 150
-#define IMAGE_HEIGHT 52
-#endif
-
-/**
- * Sensor real image size:
- * ((IMAGE_HEIGHT * ONE_PIXEL_BYTE) + FP_DUMMY_BYTE) * IMAGE_WIDTH
- */
-#define FP_DUMMY_BYTE 2
-#define ONE_PIXEL_BYTE 2
-#define IMAGE_TOTAL_PIXEL (IMAGE_WIDTH * IMAGE_HEIGHT)
-#define RAW_PIXEL_SIZE (IMAGE_HEIGHT * ONE_PIXEL_BYTE)
-#define RAW_DATA_SIZE (RAW_PIXEL_SIZE + FP_DUMMY_BYTE)
-#define IMG_BUF_SIZE (RAW_DATA_SIZE * IMAGE_WIDTH)
-
-/* Polling scan status counter */
-#define POLLING_SCAN_TIMER 10000
-
-/* Re-calibration timer */
-#define REK_TIMES 3
-
-/* Console output macros */
-#define LOGE_SA(format, args...) cprints(CC_FP, format, ##args)
-
-/**
- * Set ELAN fingerprint sensor register initialization
- *
- * @return 0 on success.
- * negative value on error.
- */
-int register_initialization(void);
-
-/**
- * To calibrate ELAN fingerprint sensor and keep the calibration results
- * for correcting fingerprint image data
- *
- * @return 0 on success.
- * negative value on error.
- */
-int calibration(void);
-
-#endif /* _ELAN_SETTING_H */