/* 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