diff options
author | Tom Hughes <tomhughes@chromium.org> | 2020-08-18 10:56:47 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-31 00:34:25 +0000 |
commit | bd67306369e6141fefaf8d8a6ea814a03d02f88d (patch) | |
tree | a378be16cc83792a2e2119d0a781d64d23ff2ec8 | |
parent | fe521237b361da3be09aac94c976d038046f0752 (diff) | |
download | chrome-ec-bd67306369e6141fefaf8d8a6ea814a03d02f88d.tar.gz |
fpsensor: Run maintenance when in maintenance mode
BRANCH=none
BUG=b:76037094
TEST=make buildall -j
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: Ibe8649c3cf77ef4542b5fc46d7df5eee03293b56
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2364755
Commit-Queue: Craig Hesling <hesling@chromium.org>
Reviewed-by: Craig Hesling <hesling@chromium.org>
-rw-r--r-- | common/fpsensor/fpsensor.c | 3 | ||||
-rw-r--r-- | common/mock/fp_sensor_mock.c | 5 | ||||
-rw-r--r-- | include/ec_commands.h | 3 | ||||
-rw-r--r-- | include/mock/fp_sensor_mock.h | 2 | ||||
-rw-r--r-- | test/fpsensor_state.c | 18 |
5 files changed, 31 insertions, 0 deletions
diff --git a/common/fpsensor/fpsensor.c b/common/fpsensor/fpsensor.c index 01a6157cda..bd36717707 100644 --- a/common/fpsensor/fpsensor.c +++ b/common/fpsensor/fpsensor.c @@ -252,6 +252,9 @@ void fp_task(void) } else if (mode & FP_MODE_RESET_SENSOR) { fp_reset_and_clear_context(); sensor_mode &= ~FP_MODE_RESET_SENSOR; + } else if (mode & FP_MODE_SENSOR_MAINTENANCE) { + fp_maintenance(); + sensor_mode &= ~FP_MODE_SENSOR_MAINTENANCE; } else { fp_sensor_low_power(); } diff --git a/common/mock/fp_sensor_mock.c b/common/mock/fp_sensor_mock.c index 778b7c270d..18e6d656be 100644 --- a/common/mock/fp_sensor_mock.c +++ b/common/mock/fp_sensor_mock.c @@ -76,3 +76,8 @@ int fp_finger_enroll(uint8_t *image, int *completion) { return mock_ctrl_fp_sensor.fp_finger_enroll_return; } + +int fp_maintenance(void) +{ + return mock_ctrl_fp_sensor.fp_maintenance_return; +} diff --git a/include/ec_commands.h b/include/ec_commands.h index d592dc2e18..841d10dae7 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -6355,6 +6355,8 @@ struct ec_params_fp_passthru { #define FP_MODE_MATCH BIT(6) /* Reset and re-initialize the sensor. */ #define FP_MODE_RESET_SENSOR BIT(7) +/* Sensor maintenance for dead pixels. */ +#define FP_MODE_SENSOR_MAINTENANCE BIT(8) /* special value: don't change anything just read back current mode */ #define FP_MODE_DONT_CHANGE BIT(31) @@ -6366,6 +6368,7 @@ struct ec_params_fp_passthru { FP_MODE_ENROLL_IMAGE | \ FP_MODE_MATCH | \ FP_MODE_RESET_SENSOR | \ + FP_MODE_SENSOR_MAINTENANCE | \ FP_MODE_DONT_CHANGE) /* Capture types defined in bits [30..28] */ diff --git a/include/mock/fp_sensor_mock.h b/include/mock/fp_sensor_mock.h index df2dc7614e..432802348c 100644 --- a/include/mock/fp_sensor_mock.h +++ b/include/mock/fp_sensor_mock.h @@ -25,6 +25,7 @@ struct mock_ctrl_fp_sensor { int fp_enrollment_begin_return; int fp_enrollment_finish_return; int fp_finger_enroll_return; + int fp_maintenance_return; }; #define MOCK_CTRL_DEFAULT_FP_SENSOR \ @@ -39,6 +40,7 @@ struct mock_ctrl_fp_sensor { .fp_enrollment_begin_return = 0, \ .fp_enrollment_finish_return = 0, \ .fp_finger_enroll_return = EC_MKBP_FP_ERR_ENROLL_OK, \ + .fp_maintenance_return = EC_SUCCESS \ } extern struct mock_ctrl_fp_sensor mock_ctrl_fp_sensor; diff --git a/test/fpsensor_state.c b/test/fpsensor_state.c index 9681bcad39..3822fe49ab 100644 --- a/test/fpsensor_state.c +++ b/test/fpsensor_state.c @@ -169,6 +169,23 @@ test_static int test_fp_set_sensor_mode(void) return EC_SUCCESS; } +test_static int test_fp_set_maintenance_mode(void) +{ + uint32_t output_mode = 0; + + /* GIVEN request to change to maintenance sensor mode */ + TEST_ASSERT(sensor_mode == 0); + /* THEN succeed */ + TEST_ASSERT(fp_set_sensor_mode(FP_MODE_SENSOR_MAINTENANCE, + &output_mode) == EC_RES_SUCCESS); + /* THEN requested mode is returned */ + TEST_ASSERT(output_mode == FP_MODE_SENSOR_MAINTENANCE); + /* THEN sensor_mode is updated */ + TEST_ASSERT(sensor_mode == FP_MODE_SENSOR_MAINTENANCE); + + return EC_SUCCESS; +} + void run_test(int argc, char **argv) { RUN_TEST(test_fp_enc_status_valid_flags); @@ -176,5 +193,6 @@ void run_test(int argc, char **argv) RUN_TEST(test_set_fp_tpm_seed); RUN_TEST(test_set_fp_tpm_seed_again); RUN_TEST(test_fp_set_sensor_mode); + RUN_TEST(test_fp_set_maintenance_mode); test_print_result(); } |