kernel_samsung_a53x/drivers/input/sec_input/stm/stm_reg.h
2024-06-15 16:02:09 -03:00

345 lines
11 KiB
C
Executable file

/* drivers/input/sec_input/stm/stm_reg.h
*
* Copyright (C) 2020 Samsung Electronics Co., Ltd.
*
* Core file for Samsung TSC driver
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#define USE_POR_AFTER_I2C_RETRY
#define BRUSH_Z_DATA 63 /* for ArtCanvas */
#undef USE_OPEN_DWORK
#ifdef USE_OPEN_DWORK
#define TOUCH_OPEN_DWORK_TIME 10
#endif
#define TOUCH_PRINT_INFO_DWORK_TIME 30000 /* 30s */
#define TOUCH_PRINT_INFO_DWORK_TIME 30000 /* 30s */
#define TOUCH_RESET_DWORK_TIME 10
#define TOUCH_POWER_ON_DWORK_TIME 35
#define FIRMWARE_IC "STM"
#define STM_TS_MAX_FW_PATH 64
#define STM_TS_TS_DRV_NAME "STM_TS_TOUCH"
#define STM_TS_TS_DRV_VERSION "0100"
#define STM_TS_TS_I2C_RETRY_CNT 3
/*
* STM_TS1b: ID0: 0x39
* STM_TS9c: ID0: 0x50
* STM_TS5c: ID0: 0x48
*/
#define STM_TS_ID0 0x48
#define STM_TS_ID1 0x36
#define MAX_EVENT_COUNT 31
#define STM_TS_EVENT_BUFF_SIZE 16
#define STM_TS_VERSION_SIZE 9
#define PRESSURE_MIN 0
#define PRESSURE_MAX 127
#define FINGER_MAX 10
#define AREA_MIN PRESSURE_MIN
#define AREA_MAX PRESSURE_MAX
#define INT_ENABLE 1
#define INT_DISABLE 0
#define STM_TS_CMD_SPONGE_ACCESS 0x0000
/* COMMANDS */
#define STM_TS_CMD_SENSE_ON 0x10
#define STM_TS_CMD_SENSE_OFF 0x11
#define STM_TS_CMD_SW_RESET 0x12
#define STM_TS_CMD_FORCE_CALIBRATION 0x13
#define STM_TS_CMD_FACTORY_PANELCALIBRATION 0x14
#define STM_TS_READ_GPIO_STATUS 0x20
#define STM_TS_READ_FIRMWARE_INTEGRITY 0x21
#define STM_TS_READ_DEVICE_ID 0x22
#define STM_TS_READ_PANEL_INFO 0x23
#define STM_TS_READ_FW_VERSION 0x24
#define STM_TS_CMD_SET_GET_TOUCHTYPE 0x30
#define STM_TS_CMD_SET_GET_OPMODE 0x31
#define STM_TS_CMD_SET_GET_WIRELESSCHARGER_MODE 0x32
#define STM_TS_CMD_SET_GET_NOISE_MODE 0x33
#define STM_TS_CMD_SET_GET_REPORT_RATE 0x34
#define STM_TS_CMD_SET_GET_TOUCH_MODE_FOR_THRESHOLD 0x35
#define STM_TS_CMD_SET_GET_TOUCH_THRESHOLD 0x36
#define STM_TS_CMD_SET_GET_KEY_THRESHOLD 0x37
#define STM_TS_CMD_SET_GET_COVERTYPE 0x38
#define STM_TS_CMD_WRITE_WAKEUP_GESTURE 0x39
#define STM_TS_CMD_WRITE_COORDINATE_FILTER 0x3A
#define STM_TS_CMD_SET_FOD_FINGER_MERGE 0x3B
#define STM_TS_CMD_SET_LOWTEMPERATURE_MODE 0x3C
#define STM_TS_CMD_SET_FOD_INT_CONTROL 0x3D
#define STM_TS_CMD_SET_GET_WIRECHARGER_MODE 0x3F
#define STM_TS_CMD_FUNCTION_SET_LOW_SENSITIVITY_MODE 0x40
#define STM_TS_CMD_SET_EAR_DETECT 0x41
#define STM_TS_CMD_SET_POCKET_MODE 0x42
#if IS_ENABLED(CONFIG_TOUCHSCREEN_STM_SPI)
#define STM_TS_READ_ONE_EVENT 0x87
#define STM_TS_READ_ALL_EVENT 0x87
#else
#define STM_TS_READ_ONE_EVENT 0x60
#define STM_TS_READ_ALL_EVENT 0x61
#endif
#define STM_TS_CMD_CLEAR_ALL_EVENT 0x62
#define STM_TS_CMD_SENSITIVITY_MODE 0x70
#define STM_TS_READ_SENSITIVITY_VALUE 0x72
#define STM_TS_CMD_RUN_POLARITY_TEST 0x77
#define STM_TS_CMD_RUN_HF_SENSOR_DIFF_TEST 0x79
#define STM_TS_CMD_RUN_SRAM_TEST 0x78
#define STM_TS_CMD_SET_LPM_AOD_OFF_ON 0x9B
#define STM_TS_CMD_LPM_ASYNC_SCAN 0x00
#define STM_TS_CMD_LPM_SYNC_SCAN 0x01
#define STM_TS_CMD_NPM_SYNC_SCAN 0x01
#define STM_TS_CMD_SET_FUNCTION_ONOFF 0xC1
#define STM_TS_CMD_FUNCTION_SET_NOTE_MODE 0x10
#define STM_TS_CMD_FUNCTION_SET_GAME_MODE 0x11
#define STM_TS_CMD_FUNCTION_SET_HOVER_DETECTION 0x12
#define STM_TS_CMD_FUNCTION_SET_PEN_SAVING_MODE 0x13
#define STM_TS_CMD_FUNCTION_SET_PEN_DETECTION 0x14
#define STM_TS_CMD_FUNCTION_SET_TSP_BLOCK 0x15
/* STM_TS SPONGE COMMAND */
#define STM_TS_CMD_SPONGE_READ_WRITE_CMD 0xAA
#define STM_TS_CMD_SPONGE_NOTIFY_CMD 0xC0
#define STM_TS_CMD_SPONGE_OFFSET_MODE 0x00
#define STM_TS_CMD_SPONGE_OFFSET_MODE_01 0x01
#define STM_TS_CMD_SPONGE_OFFSET_AOD_RECT 0x02
#define STM_TS_CMD_SPONGE_OFFSET_UTC 0x10
#define STM_TS_CMD_SPONGE_LP_DUMP 0xF0
/* First byte of ONE EVENT */
#define STM_TS_EVENT_PASS_REPORT 0x03
#define STM_TS_EVENT_STATUS_REPORT 0x43
#define STM_TS_EVENT_JITTER_RESULT 0x49
#define STM_TS_EVENT_ERROR_REPORT 0xF3
/* Test Event */
#define STM_TS_EVENT_JITTER_MUTUAL_TEST 0x01
#define STM_TS_EVENT_JITTER_SELF_TEST 0x02
#define STM_TS_EVENT_JITTER_DELTA_TEST 0x03
#define STM_TS_EVENT_JITTER_MUTUAL_MAX 0x01
#define STM_TS_EVENT_JITTER_MUTUAL_MIN 0x02
#define STM_TS_EVENT_JITTER_MUTUAL_AVG 0x03
#define STM_TS_EVENT_JITTER_SELF_TX_P2P 0x05
#define STM_TS_EVENT_JITTER_SELF_RX_P2P 0x06
#define STM_TS_EVENT_SRAM_TEST_RESULT 0xD0
/* Status Event */
#define STM_TS_COORDINATE_EVENT 0
#define STM_TS_STATUS_EVENT 1
#define STM_TS_GESTURE_EVENT 2
#define STM_TS_VENDOR_EVENT 3
#define STM_TS_GESTURE_CODE_SPAY 0x00
#define STM_TS_GESTURE_CODE_DOUBLE_TAP 0x01
#define STM_TS_GESTURE_CODE_DUMPFLUSH 0x05
#define STM_TS_COORDINATE_ACTION_NONE 0
#define STM_TS_COORDINATE_ACTION_PRESS 1
#define STM_TS_COORDINATE_ACTION_MOVE 2
#define STM_TS_COORDINATE_ACTION_RELEASE 3
#define STM_TS_TOUCHTYPE_NORMAL 0
#define STM_TS_TOUCHTYPE_HOVER 1
#define STM_TS_TOUCHTYPE_FLIPCOVER 2
#define STM_TS_TOUCHTYPE_GLOVE 3
#define STM_TS_TOUCHTYPE_STYLUS 4
#define STM_TS_TOUCHTYPE_PALM 5
#define STM_TS_TOUCHTYPE_WET 6
#define STM_TS_TOUCHTYPE_PROXIMITY 7
#define STM_TS_TOUCHTYPE_JIG 8
/* SEC_TS_DUMP_ID */
#define STM_TS_SPONGE_DUMP_0 0x00
#define STM_TS_SPONGE_DUMP_1 0x01
/* Status - ERROR event */
#define STM_TS_EVENT_STATUSTYPE_CMDDRIVEN 0
#define STM_TS_EVENT_STATUSTYPE_ERROR 1
#define STM_TS_EVENT_STATUSTYPE_INFO 2
#define STM_TS_EVENT_STATUSTYPE_USERINPUT 3
#define STM_TS_EVENT_STATUSTYPE_VENDORINFO 7
#define STM_TS_ERR_EVNET_CORE_ERR 0x00
#define STM_TS_ERR_EVENT_QUEUE_FULL 0x01
#define STM_TS_ERR_EVENT_ESD 0x02
/* Status - Information report */
#define STM_TS_INFO_READY_STATUS 0x00
#define STM_TS_INFO_WET_MODE 0x01
#define STM_TS_INFO_NOISE_MODE 0x02
#define STM_TS_INFO_XENOSENSOR_DETECT 0x04
// Scan mode for A0 command
#define STM_TS_SCAN_MODE_SCAN_OFF 0
#define STM_TS_SCAN_MODE_MS_SS_SCAN (1 << 0)
#define STM_TS_SCAN_MODE_KEY_SCAN (1 << 1)
#define STM_TS_SCAN_MODE_HOVER_SCAN (1 << 2)
#define STM_TS_SCAN_MODE_FORCE_TOUCH_SCAN (1 << 4)
#define STM_TS_SCAN_MODE_DEFAULT STM_TS_SCAN_MODE_MS_SS_SCAN
/* Control Command */
// For 0x30 command - touch type
#define STM_TS_TOUCHTYPE_BIT_TOUCH (1 << 0)
#define STM_TS_TOUCHTYPE_BIT_HOVER (1 << 1)
#define STM_TS_TOUCHTYPE_BIT_COVER (1 << 2)
#define STM_TS_TOUCHTYPE_BIT_GLOVE (1 << 3)
#define STM_TS_TOUCHTYPE_BIT_STYLUS (1 << 4)
#define STM_TS_TOUCHTYPE_BIT_PALM (1 << 5)
#define STM_TS_TOUCHTYPE_BIT_WET (1 << 6)
#define STM_TS_TOUCHTYPE_BIT_PROXIMITY (1 << 7)
#define STM_TS_TOUCHTYPE_DEFAULT_ENABLE (STM_TS_TOUCHTYPE_BIT_TOUCH | STM_TS_TOUCHTYPE_BIT_PALM | STM_TS_TOUCHTYPE_BIT_WET)
// For 0x31 command - touch operation mode
#define STM_TS_OPMODE_NORMAL 0
#define STM_TS_OPMODE_LOWPOWER 1
// For 0x32 command - charger mode
#define STM_TS_BIT_CHARGER_MODE_NORMAL 0
#define STM_TS_BIT_CHARGER_MODE_WIRE_CHARGER 1
#define STM_TS_BIT_CHARGER_MODE_WIRELESS_CHARGER 2
#define STM_TS_BIT_CHARGER_MODE_WIRELESS_BATTERY_PACK 3
// For 0xC1 command - on/off function
#define STM_TS_FUNCTION_ENABLE_SIP_MODE 0x00
#define STM_TS_FUNCTION_SET_MONITOR_NOISE_MODE 0x01
#define STM_TS_FUNCTION_ENABLE_BRUSH_MODE 0x02
#define STM_TS_FUNCTION_ENABLE_DEAD_ZONE 0x04 /* *#0*# */
#define STM_TS_FUNCTION_ENABLE_SPONGE_LIB 0x05
#define STM_TS_FUNCTION_EDGE_AREA 0x07 /* used for grip cmd */
#define STM_TS_FUNCTION_DEAD_ZONE 0x08 /* used for grip cmd */
#define STM_TS_FUNCTION_LANDSCAPE_MODE 0x09 /* used for grip cmd */
#define STM_TS_FUNCTION_LANDSCAPE_TOP_BOTTOM 0x0A /* used for grip cmd */
#define STM_TS_FUNCTION_EDGE_HANDLER 0x0C /* used for grip cmd */
#define STM_TS_FUNCTION_ENABLE_VSYNC 0x0D
#define STM_TS_FUNCTION_SET_TOUCHABLE_AREA 0x0F
/* STM_TS DEBUG FLAG */
#define STM_TS_DEBUG_PRINT_I2C_READ_CMD 0x04
#define STM_TS_DEBUG_PRINT_I2C_WRITE_CMD 0x08
#define STM_TS_DEBUG_SEND_UEVENT 0x80
#define STM_TS_RETRY_COUNT 10
#define STM_TS_DELAY_NVWRITE 50
/* gesture SF */
#define STM_TS_GESTURE_SAMSUNG_FEATURE 1
/* gesture type */
#define STM_TS_SPONGE_EVENT_SWIPE_UP 0
#define STM_TS_SPONGE_EVENT_DOUBLETAP 1
#define STM_TS_SPONGE_EVENT_PRESS 3
#define STM_TS_SPONGE_EVENT_SINGLETAP 4
#define STM_TS_VENDOR_EVENT_LARGEPALM 6
#define STM_TS_SPONGE_EVENT_LONGPRESS 8
/* gesture ID */
#define STM_TS_SPONGE_EVENT_GESTURE_ID_AOD 0
#define STM_TS_SPONGE_EVENT_GESTURE_ID_DOUBLETAP_TO_WAKEUP 1
#define STM_TS_SPONGE_EVENT_GESTURE_ID_FOD_LONG 0
#define STM_TS_SPONGE_EVENT_GESTURE_ID_FOD_NORMAL 1
#define STM_TS_SPONGE_EVENT_GESTURE_ID_FOD_RELEASE 2
#define STM_TS_SPONGE_EVENT_GESTURE_ID_FOD_OUT 3
#define STM_TS_SPONGE_EVENT_GESTURE_ID_FOD_VI 4
#define STM_TS_ENABLE 1
#define STM_TS_DISABLE 0
#define STM_TS_SPONGE_LP_DUMP_LENGTH 70
#define STM_TS_MAX_X_RESOLUTION 4096
#define STM_TS_MAX_Y_RESOLUTION 4096
#define STM_TS_MAX_NUM_FORCE 50 /* Number of TX CH */
#define STM_TS_MAX_NUM_SENSE 50 /* Number of RX CH */
#define STM_TS_LFD_CTRL_LOCK 1
#define STM_TS_LFD_CTRL_UNLOCK 2
#define STM_TS_TS_LOCATION_DETECT_SIZE 6
#define STM_TS_STATUS_UNFOLDING 0x00
#define STM_TS_STATUS_FOLDING 0x01
#define NORMAL_CX2 0 /* single driving */
#define ACTIVE_CX2 1 /* multi driving */
#define STM_TS_GET_CMOFFSET_DUMP_V1 0
#define STM_TS_GET_CMOFFSET_DUMP_V2 1
/* fw update */
#define CODE_ADDR_START 0x00000000
#if IS_ENABLED(CONFIG_TOUCHSCREEN_STM_SPI)
#define CX_ADDR_START 0x0000B400
#define CONFIG_ADDR_START 0x0000BC00
#define STM_REG_MISO_PORT_SETTING 0x3E
#else
#define CX_ADDR_START 0x00007000
#define CONFIG_ADDR_START 0x00007C00
#define STM_REG_MISO_PORT_SETTING 0x3F
#endif
/* fw update */
#define CODE_ADDR_START 0x00000000
#if IS_ENABLED(CONFIG_TOUCHSCREEN_STM_SPI)
#define CX_ADDR_START 0x0000B400
#define CONFIG_ADDR_START 0x0000BC00
#define STM_REG_MISO_PORT_SETTING 0x3E
#else
#define CX_ADDR_START 0x00007000
#define CONFIG_ADDR_START 0x00007C00
#define STM_REG_MISO_PORT_SETTING 0x3F
#endif
#if IS_ENABLED(CONFIG_TOUCHSCREEN_STM_SPI)
#define STM_TS_CMD_REG_W 0xFA
#define STM_TS_CMD_REG_R 0xFB
#define STM_TS_CMD_SCAN_MODE 0xA0
#define STM_TS_CMD_FEATURE 0xA2
#define STM_TS_CMD_SYSTEM 0xA4
#define STM_TS_CMD_FRM_BUFF_W 0xA6
#define STM_TS_CMD_FRM_BUFF_R 0xA7
#define STM_TS_CMD_CUSTOM_W 0xC0
#define STM_TS_CMD_SPONGE_W 0xD0
#define STM_TS_CMD_CUSTOM_R 0xD1
#define STM_TS_CMD_SNR_R 0x75
#define STM_TS_CMD_SNR_R_SIZE 3
#else
#define STM_TS_CMD_REG_W 0xFA
#define STM_TS_CMD_REG_R 0xFA
#define STM_TS_CMD_SCAN_MODE 0xA0
#define STM_TS_CMD_FEATURE 0xA2
#define STM_TS_CMD_SYSTEM 0xA4
#define STM_TS_CMD_FRM_BUFF_W 0xA6
#define STM_TS_CMD_FRM_BUFF_R 0xA6
#define STM_TS_CMD_CUSTOM_W 0xC0
#define STM_TS_CMD_SPONGE_W 0xD0
#define STM_TS_CMD_CUSTOM_R 0xD1
#define STM_TS_CMD_SNR_R 0x72
#define STM_TS_CMD_SNR_R_SIZE 2
#endif