summaryrefslogtreecommitdiff
path: root/driver/touchpad_st.h
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2022-09-21 14:08:36 -0700
committerTom Hughes <tomhughes@chromium.org>2022-09-22 12:59:38 -0700
commitc453fd704268ef72de871b0c5ac7a989de662334 (patch)
treefcf6ce5810f9ff9e3c8cce434812dd75492269ed /driver/touchpad_st.h
parent6c1587ca70f558b4f96b3f0b18ad8b027d3ba99d (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-c453fd704268ef72de871b0c5ac7a989de662334.tar.gz
Merge remote-tracking branch cros/main into firmware-fpmcu-dartmonkey-releasefirmware-fpmcu-dartmonkey-release
Generated by: ./util/update_release_branch.py --board dartmonkey --relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware-fpmcu-dartmonkey-release Relevant changes: git log --oneline 6c1587ca70..28712dae9d -- board/nocturne_fp board/dartmonkey common/fpsensor docs/fingerprint driver/fingerprint util/getversion.sh ded9307b79 util/getversion.sh: Fix version when not in a git repo 956055e692 board: change Google USB vendor info 71b2ef709d Update license boilerplate text in source code files 33e11afda0 Revert "fpsensor: Build fpsensor source file with C++" c8d0360723 fpsensor: Build fpsensor source file with C++ bc113abd53 fpsensor: Fix g++ compiler error 150a58a0dc fpsensor: Fix fp_set_sensor_mode return type b33b5ce85b fpsensor: Remove nested designators for C++ compatibility 2e864b2539 tree-wide: const-ify argv for console commands 56d8b360f9 test: Add test for get ikm failure when seed not set 3a3d6c3690 test: Add test for fpsensor trivial key failure 233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256 0a041b285b docs/fingerprint: Typo correction c03fab67e2 docs/fingerprint: Fix the path of fputils.py 0b5d4baf5a util/getversion.sh: Fix empty file list handling 6e128fe760 FPMCU dev board environment with Satlab 3eb29b6aa5 builtin: Move ssize_t to sys/types.h 345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release c25ffdb316 common: Conditionally support printf %l and %i modifiers 9a3c514b45 test: Add a test to check if the debugger is connected 54e603413f Move standard library tests to their own file 43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release 25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format 4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format 738de2b575 trng: Rename rand to trng_rand 14b8270edd docs/fingerprint: Update dragonclaw power numbers 0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format a0751778f4 board/nocturne_fp/ro_workarounds.c: Format with clang-format 5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format 6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format 58f0246dbe board/nocturne_fp/board_ro.c: Format with clang-format 7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format 21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format 98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format 84e53a65da board/nocturne_fp/board.h: Format with clang-format 73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format 0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format 1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format dca9d74321 Revert "trng: Rename rand to trng_rand" a6b0b3554f trng: Rename rand to trng_rand 28d0b75b70 third_party/boringssl: Remove unused header BRANCH=None BUG=b:244387210 b:242720240 b:215613183 b:242720910 b:236386294 BUG=b:234181908 b:244781166 b:234781655 b:234143158 b:234181908 BUG=b:237344361 b:236025198 b:234181908 b:180945056 chromium:1098010 BUG=b:246424843 b:234181908 b:131913998 TEST=`make -j buildall` TEST=./util/run_device_tests.py --board dartmonkey Test "aes": PASSED Test "cec": PASSED Test "cortexm_fpu": PASSED Test "crc": PASSED Test "flash_physical": PASSED Test "flash_write_protect": PASSED Test "fpsensor_hw": PASSED Test "fpsensor_spi_ro": PASSED Test "fpsensor_spi_rw": PASSED Test "fpsensor_uart_ro": PASSED Test "fpsensor_uart_rw": PASSED Test "mpu_ro": PASSED Test "mpu_rw": PASSED Test "mutex": PASSED Test "pingpong": PASSED Test "printf": PASSED Test "queue": PASSED Test "rollback_region0": PASSED Test "rollback_region1": PASSED Test "rollback_entropy": PASSED Test "rtc": PASSED Test "sha256": PASSED Test "sha256_unrolled": PASSED Test "static_if": PASSED Test "stdlib": PASSED Test "system_is_locked_wp_on": PASSED Test "system_is_locked_wp_off": PASSED Test "timer_dos": PASSED Test "utils": PASSED Test "utils_str": PASSED Test "panic_data_dartmonkey_v2.0.2887": PASSED Test "panic_data_nocturne_fp_v2.2.64": PASSED Test "panic_data_nami_fp_v2.2.144": PASSED Force-Relevant-Builds: all Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I2c312583a709fedae8fe11d92c22328c3b634bc7
Diffstat (limited to 'driver/touchpad_st.h')
-rw-r--r--driver/touchpad_st.h213
1 files changed, 104 insertions, 109 deletions
diff --git a/driver/touchpad_st.h b/driver/touchpad_st.h
index ef0960591b..6ea3f6aeb0 100644
--- a/driver/touchpad_st.h
+++ b/driver/touchpad_st.h
@@ -1,4 +1,4 @@
-/* Copyright 2018 The Chromium OS Authors. All rights reserved.
+/* Copyright 2018 The ChromiumOS Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
@@ -10,71 +10,69 @@
#include "common.h"
-#define ST_VENDOR_ID 0x0483
+#define ST_VENDOR_ID 0x0483
-#define ST_TP_EXTRA_BYTE 1
+#define ST_TP_EXTRA_BYTE 1
-#define ST_TP_CMD_READ_ALL_EVENTS 0x87
-#define ST_TP_CMD_WRITE_SCAN_MODE_SELECT 0xA0
-#define ST_TP_CMD_WRITE_FEATURE_SELECT 0xA2
-#define ST_TP_CMD_WRITE_SYSTEM_COMMAND 0xA4
-#define ST_TP_CMD_WRITE_HOST_DATA_MEMORY 0xA6
-#define ST_TP_CMD_READ_HOST_DATA_MEMORY 0xA7
-#define ST_TP_CMD_WRITE_FW_CONFIG 0xA8
-#define ST_TP_CMD_READ_FW_CONFIG 0xA9
-#define ST_TP_CMD_SPI_HOST_BUFFER_ACK 0xC0
-#define ST_TP_CMD_READ_SPI_HOST_BUFFER 0xC1
+#define ST_TP_CMD_READ_ALL_EVENTS 0x87
+#define ST_TP_CMD_WRITE_SCAN_MODE_SELECT 0xA0
+#define ST_TP_CMD_WRITE_FEATURE_SELECT 0xA2
+#define ST_TP_CMD_WRITE_SYSTEM_COMMAND 0xA4
+#define ST_TP_CMD_WRITE_HOST_DATA_MEMORY 0xA6
+#define ST_TP_CMD_READ_HOST_DATA_MEMORY 0xA7
+#define ST_TP_CMD_WRITE_FW_CONFIG 0xA8
+#define ST_TP_CMD_READ_FW_CONFIG 0xA9
+#define ST_TP_CMD_SPI_HOST_BUFFER_ACK 0xC0
+#define ST_TP_CMD_READ_SPI_HOST_BUFFER 0xC1
-#define ST_TP_CMD_WRITE_HW_REG 0xFA
-#define ST_TP_CMD_READ_HW_REG 0xFB
+#define ST_TP_CMD_WRITE_HW_REG 0xFA
+#define ST_TP_CMD_READ_HW_REG 0xFB
/* Max number of bytes that the DMA can burn on the flash in one shot in FTI */
-#define ST_TP_FLASH_BUFFER_SIZE (64 * 1024)
+#define ST_TP_FLASH_BUFFER_SIZE (64 * 1024)
/* Max number of bytes that can be written in I2C to the DMA */
-#define ST_TP_DMA_CHUNK_SIZE 32
+#define ST_TP_DMA_CHUNK_SIZE 32
-#define ST_HOST_BUFFER_DATA_VALID BIT(0)
-#define ST_HOST_BUFFER_MT_READY BIT(3)
-#define ST_HOST_BUFFER_SF_READY BIT(4)
-#define ST_HOST_BUFFER_SS_READY BIT(5)
+#define ST_HOST_BUFFER_DATA_VALID BIT(0)
+#define ST_HOST_BUFFER_MT_READY BIT(3)
+#define ST_HOST_BUFFER_SF_READY BIT(4)
+#define ST_HOST_BUFFER_SS_READY BIT(5)
-#define ST_TP_SCAN_MODE_ACTIVE 0x00
-#define ST_TP_SCAN_MODE_LOW_POWER 0x01
-#define ST_TP_SCAN_MODE_TUNING_WIZARD 0x02
-#define ST_TP_SCAN_MODE_LOCKED 0x03
+#define ST_TP_SCAN_MODE_ACTIVE 0x00
+#define ST_TP_SCAN_MODE_LOW_POWER 0x01
+#define ST_TP_SCAN_MODE_TUNING_WIZARD 0x02
+#define ST_TP_SCAN_MODE_LOCKED 0x03
-#define ST_TOUCH_ROWS (18) /* force len */
-#define ST_TOUCH_COLS (25) /* sense len */
+#define ST_TOUCH_ROWS (18) /* force len */
+#define ST_TOUCH_COLS (25) /* sense len */
-#define ST_TOUCH_HEADER_SIZE 32
+#define ST_TOUCH_HEADER_SIZE 32
-#define BYTES_PER_PIXEL 1
+#define BYTES_PER_PIXEL 1
/* Number of bits per pixel, this value is decided by experiments. */
-#define BITS_PER_PIXEL 8
+#define BITS_PER_PIXEL 8
-#define ST_TOUCH_FRAME_SIZE (ST_TOUCH_ROWS * ST_TOUCH_COLS * \
- BYTES_PER_PIXEL)
-#define ST_TOUCH_FORCE_SIZE (ST_TOUCH_ROWS * BYTES_PER_PIXEL)
-#define ST_TOUCH_SENSE_SIZE (ST_TOUCH_COLS * BYTES_PER_PIXEL)
+#define ST_TOUCH_FRAME_SIZE (ST_TOUCH_ROWS * ST_TOUCH_COLS * BYTES_PER_PIXEL)
+#define ST_TOUCH_FORCE_SIZE (ST_TOUCH_ROWS * BYTES_PER_PIXEL)
+#define ST_TOUCH_SENSE_SIZE (ST_TOUCH_COLS * BYTES_PER_PIXEL)
-#define ST_TP_MEM_ID_SYSTEM_INFO 0x01
-
-#define ST_TP_FLASH_OFFSET_CODE (0x0000 << 2)
-#define ST_TP_FLASH_OFFSET_PANEL_CFG (0x6800 << 2)
-#define ST_TP_FLASH_OFFSET_CX (0x7000 << 2)
-#define ST_TP_FLASH_OFFSET_CONFIG (0x7C00 << 2)
+#define ST_TP_MEM_ID_SYSTEM_INFO 0x01
+#define ST_TP_FLASH_OFFSET_CODE (0x0000 << 2)
+#define ST_TP_FLASH_OFFSET_PANEL_CFG (0x6800 << 2)
+#define ST_TP_FLASH_OFFSET_CX (0x7000 << 2)
+#define ST_TP_FLASH_OFFSET_CONFIG (0x7C00 << 2)
struct st_tp_host_data_header_t {
-#define ST_TP_HEADER_MAGIC 0xA5
- uint8_t magic; /* this should always be ST_TP_HEADER_MAGIC */
+#define ST_TP_HEADER_MAGIC 0xA5
+ uint8_t magic; /* this should always be ST_TP_HEADER_MAGIC */
uint8_t host_data_mem_id;
uint16_t count;
} __packed;
/* Compute offset of end of a member in given type */
-#define endof(type, member) (offsetof(type, member) + \
- sizeof(((type *)NULL)->member))
+#define endof(type, member) \
+ (offsetof(type, member) + sizeof(((type *)NULL)->member))
struct st_tp_system_info_t {
/* Part 1, basic info */
@@ -83,7 +81,7 @@ struct st_tp_system_info_t {
uint8_t api_ver_minor;
uint8_t api_ver_major;
uint16_t chip0_ver;
- uint8_t chip0_id[2]; /* should be 0x3936 */
+ uint8_t chip0_id[2]; /* should be 0x3936 */
uint16_t chip1_ver;
uint16_t chip1_id;
uint16_t fw_ver;
@@ -101,7 +99,7 @@ struct st_tp_system_info_t {
uint32_t fw_crc;
uint32_t cfg_crc;
#define ST_TP_SYSTEM_INFO_PART_1_SIZE endof(struct st_tp_system_info_t, cfg_crc)
-#define ST_TP_SYSTEM_INFO_PART_1_RESERVED 16
+#define ST_TP_SYSTEM_INFO_PART_1_RESERVED 16
uint16_t scr_res_x;
uint16_t scr_res_y;
@@ -109,20 +107,18 @@ struct st_tp_system_info_t {
uint8_t scr_rx_len;
uint8_t key_len;
uint8_t frc_len;
-#define ST_TP_SYSTEM_INFO_PART_2_SIZE (endof(struct st_tp_system_info_t, \
- frc_len) - \
- offsetof(struct st_tp_system_info_t, \
- scr_res_x))
-#define ST_TP_SYSTEM_INFO_PART_2_RESERVED 40
+#define ST_TP_SYSTEM_INFO_PART_2_SIZE \
+ (endof(struct st_tp_system_info_t, frc_len) - \
+ offsetof(struct st_tp_system_info_t, scr_res_x))
+#define ST_TP_SYSTEM_INFO_PART_2_RESERVED 40
-#if 0 /* the following parts are defined in spec, but not currently used. */
+#if 0 /* the following parts are defined in spec, but not currently used. */
uint16_t dbg_frame_addr;
-#define ST_TP_SYSTEM_INFO_PART_3_SIZE (endof(struct st_tp_system_info_t, \
- dbg_frame_addr) - \
- offsetof(struct st_tp_system_info_t, \
- dbg_frame_addr))
-#define ST_TP_SYSTEM_INFO_PART_3_RESERVED 6
+#define ST_TP_SYSTEM_INFO_PART_3_SIZE \
+ (endof(struct st_tp_system_info_t, dbg_frame_addr) - \
+ offsetof(struct st_tp_system_info_t, dbg_frame_addr))
+#define ST_TP_SYSTEM_INFO_PART_3_RESERVED 6
uint16_t ms_scr_raw_addr;
uint16_t ms_scr_filter_addr;
@@ -160,24 +156,23 @@ struct st_tp_system_info_t {
uint16_t ss_prx_rx_filter_addr;
uint16_t ss_prx_rx_str_addr;
uint16_t ss_prx_rx_bl_addr;
-#define ST_TP_SYSTEM_INFO_PART_4_SIZE (endof(struct st_tp_system_info_t, \
- ss_prx_rx_bl_addr) - \
- offsetof(struct st_tp_system_info_t, \
- ms_scr_raw_addr))
-#endif /* if 0 */
+#define ST_TP_SYSTEM_INFO_PART_4_SIZE \
+ (endof(struct st_tp_system_info_t, ss_prx_rx_bl_addr) - \
+ offsetof(struct st_tp_system_info_t, ms_scr_raw_addr))
+#endif /* if 0 */
} __packed;
-#define ST_TP_SYSTEM_INFO_LEN (sizeof(struct st_tp_system_info_t) + \
- ST_TP_SYSTEM_INFO_PART_1_RESERVED)
+#define ST_TP_SYSTEM_INFO_LEN \
+ (sizeof(struct st_tp_system_info_t) + ST_TP_SYSTEM_INFO_PART_1_RESERVED)
struct st_tp_host_buffer_header_t {
-#define ST_TP_BUFFER_HEADER_DATA_VALID BIT(0)
-#define ST_TP_BUFFER_HEADER_EVT_FIFO_NOT_EMPTY BIT(1)
-#define ST_TP_BUFFER_HEADER_SYS_FAULT BIT(2)
-#define ST_TP_BUFFER_HEADER_HEAT_MAP_MT_RDY BIT(3)
-#define ST_TP_BUFFER_HEADER_HEAT_MAP_SF_RDY BIT(4)
-#define ST_TP_BUFFER_HEADER_HEAT_MAP_SS_RDY BIT(5)
-#define ST_TP_BUFFER_HEADER_DOMESWITCH_LVL BIT(6)
+#define ST_TP_BUFFER_HEADER_DATA_VALID BIT(0)
+#define ST_TP_BUFFER_HEADER_EVT_FIFO_NOT_EMPTY BIT(1)
+#define ST_TP_BUFFER_HEADER_SYS_FAULT BIT(2)
+#define ST_TP_BUFFER_HEADER_HEAT_MAP_MT_RDY BIT(3)
+#define ST_TP_BUFFER_HEADER_HEAT_MAP_SF_RDY BIT(4)
+#define ST_TP_BUFFER_HEADER_HEAT_MAP_SS_RDY BIT(5)
+#define ST_TP_BUFFER_HEADER_DOMESWITCH_LVL BIT(6)
uint8_t flags;
uint8_t reserved[3];
uint8_t heatmap_miss_count;
@@ -187,56 +182,56 @@ struct st_tp_host_buffer_header_t {
struct st_tp_host_buffer_heat_map_t {
uint8_t frame[ST_TOUCH_FRAME_SIZE];
-#if 0 /* we are not using these now */
+#if 0 /* we are not using these now */
uint8_t force[ST_TOUCH_FORCE_SIZE];
uint8_t sense[ST_TOUCH_SENSE_SIZE];
#endif
} __packed;
struct st_tp_event_t {
-#define ST_TP_EVENT_MAGIC 0x3
- unsigned magic:2; /* should always be 0x3 */
- unsigned major_high:2;
-#define ST_TP_EVENT_ID_CONTROLLER_READY 0x0
-#define ST_TP_EVENT_ID_ENTER_POINTER 0x1
-#define ST_TP_EVENT_ID_MOTION_POINTER 0x2
-#define ST_TP_EVENT_ID_LEAVE_POINTER 0x3
-#define ST_TP_EVENT_ID_STATUS_REPORT 0x4
-#define ST_TP_EVENT_ID_USER_REPORT 0x5
-#define ST_TP_EVENT_ID_DEBUG_REPORT 0xe
-#define ST_TP_EVENT_ID_ERROR_REPORT 0xf
- unsigned evt_id:4;
+#define ST_TP_EVENT_MAGIC 0x3
+ unsigned magic : 2; /* should always be 0x3 */
+ unsigned major_high : 2;
+#define ST_TP_EVENT_ID_CONTROLLER_READY 0x0
+#define ST_TP_EVENT_ID_ENTER_POINTER 0x1
+#define ST_TP_EVENT_ID_MOTION_POINTER 0x2
+#define ST_TP_EVENT_ID_LEAVE_POINTER 0x3
+#define ST_TP_EVENT_ID_STATUS_REPORT 0x4
+#define ST_TP_EVENT_ID_USER_REPORT 0x5
+#define ST_TP_EVENT_ID_DEBUG_REPORT 0xe
+#define ST_TP_EVENT_ID_ERROR_REPORT 0xf
+ unsigned evt_id : 4;
union {
struct {
-#define ST_TP_TOUCH_TYPE_INVALID 0x0
-#define ST_TP_TOUCH_TYPE_FINGER 0x1
-#define ST_TP_TOUCH_TYPE_GLOVE 0x2
-#define ST_TP_TOUCH_TYPE_STYLUS 0x3
-#define ST_TP_TOUCH_TYPE_PALM 0x4
- unsigned touch_type:4;
- unsigned touch_id:4;
- unsigned y:12;
- unsigned x:12;
+#define ST_TP_TOUCH_TYPE_INVALID 0x0
+#define ST_TP_TOUCH_TYPE_FINGER 0x1
+#define ST_TP_TOUCH_TYPE_GLOVE 0x2
+#define ST_TP_TOUCH_TYPE_STYLUS 0x3
+#define ST_TP_TOUCH_TYPE_PALM 0x4
+ unsigned touch_type : 4;
+ unsigned touch_id : 4;
+ unsigned y : 12;
+ unsigned x : 12;
uint8_t z;
- uint8_t minor:4; // need to be concat with minor_high
- uint8_t major:4; // need to be concat with major_high
+ uint8_t minor : 4; // need to be concat with minor_high
+ uint8_t major : 4; // need to be concat with major_high
} __packed finger;
struct {
-#define ST_TP_STATUS_CMD_ECHO 0x1
-#define ST_TP_STATUS_FRAME_DROP 0x3
-#define ST_TP_STATUS_FCAL 0x5
-#define ST_TP_STATUS_BEACON 0x9
+#define ST_TP_STATUS_CMD_ECHO 0x1
+#define ST_TP_STATUS_FRAME_DROP 0x3
+#define ST_TP_STATUS_FCAL 0x5
+#define ST_TP_STATUS_BEACON 0x9
uint8_t report_type;
uint8_t info[4];
uint8_t reserved;
} __packed report;
- } __packed ; /* anonymous */
+ } __packed; /* anonymous */
- unsigned minor_high:2;
- unsigned reserved:1;
- unsigned evt_left:5;
+ unsigned minor_high : 2;
+ unsigned reserved : 1;
+ unsigned evt_left : 5;
} __packed;
struct st_tp_fw_header_t {
@@ -258,12 +253,12 @@ enum ST_TP_MODE {
HEAT_MAP_MODE,
};
-#define ST_TP_DEBUG_CMD_RESET_TOUCHPAD 0x00
-#define ST_TP_DEBUG_CMD_CALIBRATE 0x01
-#define ST_TP_DEBUG_CMD_START_SCAN 0x02
-#define ST_TP_DEBUG_CMD_STOP_SCAN 0x03
-#define ST_TP_DEBUG_CMD_READ_BUF_HEADER 0x04
-#define ST_TP_DEBUG_CMD_READ_EVENTS 0x05
+#define ST_TP_DEBUG_CMD_RESET_TOUCHPAD 0x00
+#define ST_TP_DEBUG_CMD_CALIBRATE 0x01
+#define ST_TP_DEBUG_CMD_START_SCAN 0x02
+#define ST_TP_DEBUG_CMD_STOP_SCAN 0x03
+#define ST_TP_DEBUG_CMD_READ_BUF_HEADER 0x04
+#define ST_TP_DEBUG_CMD_READ_EVENTS 0x05
#define ST_TP_HEAT_MAP_THRESHOLD 10