touch: add drivers
Add all drivers for new platforms. Change-Id: Ie9947b0c6f8ddfee7dab6dfa80d6aca62323f4da Signed-off-by: Fei Mao <feim1@codeaurora.org>
This commit is contained in:
193
st/fts_lib/ftsTest.h
Normal file
193
st/fts_lib/ftsTest.h
Normal file
@@ -0,0 +1,193 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* FTS Capacitive touch screen controller (FingerTipS)
|
||||
*
|
||||
* Copyright (C) 2016-2019, STMicroelectronics Limited.
|
||||
* Authors: AMG(Analog Mems Group) <marco.cali@st.com>
|
||||
*
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
**************************************************************************
|
||||
** STMicroelectronics **
|
||||
**************************************************************************
|
||||
** marco.cali@st.com **
|
||||
**************************************************************************
|
||||
* *
|
||||
* FTS API for MP test **
|
||||
* *
|
||||
**************************************************************************
|
||||
**************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __FTS_TEST_H
|
||||
#define __FTS_TEST_H
|
||||
|
||||
#include "ftsSoftware.h"
|
||||
|
||||
#define LIMITS_FILE "stm_fts_production_limits.csv"
|
||||
|
||||
#define WAIT_FOR_FRESH_FRAMES 100 //ms
|
||||
#define WAIT_AFTER_SENSEOFF 50 //ms
|
||||
|
||||
#define TIMEOUT_ITO_TEST_RESULT 200 //ms
|
||||
#define TIMEOUT_INITIALIZATION_TEST_RESULT 5000 //ms
|
||||
|
||||
//LABELS PRODUCTION TEST LIMITS FILE
|
||||
#define MS_RAW_MIN_MAX "MS_RAW_DATA_MIN_MAX"
|
||||
#define MS_RAW_GAP "MS_RAW_DATA_GAP"
|
||||
#define MS_CX1_MIN_MAX "MS_TOUCH_ACTIVE_CX1_MIN_MAX"
|
||||
#define MS_CX2_MAP_MIN "MS_TOUCH_ACTIVE_CX2_MIN"
|
||||
#define MS_CX2_MAP_MAX "MS_TOUCH_ACTIVE_CX2_MAX"
|
||||
#define MS_CX2_ADJH_MAP_MAX "MS_TOUCH_ACTIVE_CX2_ADJ_HORIZONTAL"
|
||||
#define MS_CX2_ADJV_MAP_MAX "MS_TOUCH_ACTIVE_CX2_ADJ_VERTICAL"
|
||||
#define MS_TOTAL_CX_MAP_MIN "MS_TOUCH_ACTIVE_TOTAL_CX_MIN"
|
||||
#define MS_TOTAL_CX_MAP_MAX "MS_TOUCH_ACTIVE_TOTAL_CX_MAX"
|
||||
#define MS_TOTAL_CX_ADJH_MAP_MAX "MS_TOUCH_ACTIVE_TOTAL_CX_ADJ_HORIZONTAL"
|
||||
#define MS_TOTAL_CX_ADJV_MAP_MAX "MS_TOUCH_ACTIVE_TOTAL_CX_ADJ_VERTICAL"
|
||||
#define SS_RAW_FORCE_MIN_MAX "SS_RAW_DATA_FORCE_MIN_MAX"
|
||||
#define SS_RAW_SENSE_MIN_MAX "SS_RAW_DATA_SENSE_MIN_MAX"
|
||||
#define SS_RAW_FORCE_GAP "SS_RAW_DATA_FORCE_GAP"
|
||||
#define SS_RAW_SENSE_GAP "SS_RAW_DATA_SENSE_GAP"
|
||||
#define SS_IX1_FORCE_MIN_MAX "SS_TOUCH_ACTIVE_IX1_FORCE_MIN_MAX"
|
||||
#define SS_IX1_SENSE_MIN_MAX "SS_TOUCH_ACTIVE_IX1_SENSE_MIN_MAX"
|
||||
#define SS_CX1_FORCE_MIN_MAX "SS_TOUCH_ACTIVE_CX1_FORCE_MIN_MAX"
|
||||
#define SS_CX1_SENSE_MIN_MAX "SS_TOUCH_ACTIVE_CX1_SENSE_MIN_MAX"
|
||||
#define SS_IX2_FORCE_MAP_MIN "SS_TOUCH_ACTIVE_IX2_FORCE_MIN"
|
||||
#define SS_IX2_FORCE_MAP_MAX "SS_TOUCH_ACTIVE_IX2_FORCE_MAX"
|
||||
#define SS_IX2_SENSE_MAP_MIN "SS_TOUCH_ACTIVE_IX2_SENSE_MIN"
|
||||
#define SS_IX2_SENSE_MAP_MAX "SS_TOUCH_ACTIVE_IX2_SENSE_MAX"
|
||||
#define SS_IX2_FORCE_ADJV_MAP_MAX "SS_TOUCH_ACTIVE_IX2_ADJ_VERTICAL"
|
||||
#define SS_IX2_SENSE_ADJH_MAP_MAX "SS_TOUCH_ACTIVE_IX2_ADJ_HORIZONTAL"
|
||||
#define SS_CX2_FORCE_MAP_MIN "SS_TOUCH_ACTIVE_CX2_FORCE_MIN"
|
||||
#define SS_CX2_FORCE_MAP_MAX "SS_TOUCH_ACTIVE_CX2_FORCE_MAX"
|
||||
#define SS_CX2_SENSE_MAP_MIN "SS_TOUCH_ACTIVE_CX2_SENSE_MIN"
|
||||
#define SS_CX2_SENSE_MAP_MAX "SS_TOUCH_ACTIVE_CX2_SENSE_MAX"
|
||||
#define SS_CX2_FORCE_ADJV_MAP_MAX "SS_TOUCH_ACTIVE_CX2_ADJ_VERTICAL"
|
||||
#define SS_CX2_SENSE_ADJH_MAP_MAX "SS_TOUCH_ACTIVE_CX2_ADJ_HORIZONTAL"
|
||||
|
||||
// TOTAL SS
|
||||
#define SS_TOTAL_IX_FORCE_MAP_MIN "SS_TOUCH_ACTIVE_TOTAL_IX_FORCE_MIN"
|
||||
#define SS_TOTAL_IX_FORCE_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_IX_FORCE_MAX"
|
||||
#define SS_TOTAL_IX_SENSE_MAP_MIN "SS_TOUCH_ACTIVE_TOTAL_IX_SENSE_MIN"
|
||||
#define SS_TOTAL_IX_SENSE_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_IX_SENSE_MAX"
|
||||
#define SS_TOTAL_IX_FORCE_ADJV_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_IX_ADJ_VERTICAL"
|
||||
#define SS_TOTAL_IX_SENSE_ADJH_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_IX_ADJ_HORIZONTAL"
|
||||
#define SS_TOTAL_CX_FORCE_MAP_MIN "SS_TOUCH_ACTIVE_TOTAL_CX_FORCE_MIN"
|
||||
#define SS_TOTAL_CX_FORCE_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_CX_FORCE_MAX"
|
||||
#define SS_TOTAL_CX_SENSE_MAP_MIN "SS_TOUCH_ACTIVE_TOTAL_CX_SENSE_MIN"
|
||||
#define SS_TOTAL_CX_SENSE_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_CX_SENSE_MAX"
|
||||
#define SS_TOTAL_CX_FORCE_ADJV_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_CX_ADJ_VERTICAL"
|
||||
#define SS_TOTAL_CX_SENSE_ADJH_MAP_MAX "SS_TOUCH_ACTIVE_TOTAL_CX_ADJ_HORIZONTAL"
|
||||
|
||||
//KEYS
|
||||
#define MS_KEY_RAW_MIN_MAX "MS_KEY_RAW_DATA_MIN_MAX"
|
||||
#define MS_KEY_CX1_MIN_MAX "MS_KEY_CX1_MIN_MAX"
|
||||
#define MS_KEY_CX2_MAP_MIN "MS_KEY_CX2_MIN"
|
||||
#define MS_KEY_CX2_MAP_MAX "MS_KEY_CX2_MAX"
|
||||
#define MS_KEY_TOTAL_CX_MAP_MIN "MS_KEY_TOTAL_CX_MIN"
|
||||
#define MS_KEY_TOTAL_CX_MAP_MAX "MS_KEY_TOTAL_CX_MAX"
|
||||
|
||||
//CONSTANT TOTAL IX
|
||||
#define SS_IX1_FORCE_W "IX1_FORCE_W"
|
||||
#define SS_IX2_FORCE_W "IX2_FORCE_W"
|
||||
#define SS_IX1_SENSE_W "IX1_SENSE_W"
|
||||
#define SS_IX2_SENSE_W "IX2_SENSE_W"
|
||||
|
||||
|
||||
#define SAVE_FLAG_RETRY 3
|
||||
|
||||
|
||||
struct TestToDo {
|
||||
int MutualRaw;
|
||||
int MutualRawGap;
|
||||
int MutualCx1;
|
||||
int MutualCx2;
|
||||
int MutualCx2Adj;
|
||||
int MutualCxTotal;
|
||||
int MutualCxTotalAdj;
|
||||
|
||||
int MutualKeyRaw;
|
||||
int MutualKeyCx1;
|
||||
int MutualKeyCx2;
|
||||
int MutualKeyCxTotal;
|
||||
|
||||
int SelfForceRaw;
|
||||
int SelfForceRawGap;
|
||||
int SelfForceIx1;
|
||||
int SelfForceIx2;
|
||||
int SelfForceIx2Adj;
|
||||
int SelfForceIxTotal;
|
||||
int SelfForceIxTotalAdj;
|
||||
int SelfForceCx1;
|
||||
int SelfForceCx2;
|
||||
int SelfForceCx2Adj;
|
||||
int SelfForceCxTotal;
|
||||
int SelfForceCxTotalAdj;
|
||||
|
||||
int SelfSenseRaw;
|
||||
int SelfSenseRawGap;
|
||||
int SelfSenseIx1;
|
||||
int SelfSenseIx2;
|
||||
int SelfSenseIx2Adj;
|
||||
int SelfSenseIxTotal;
|
||||
int SelfSenseIxTotalAdj;
|
||||
int SelfSenseCx1;
|
||||
int SelfSenseCx2;
|
||||
int SelfSenseCx2Adj;
|
||||
int SelfSenseCxTotal;
|
||||
int SelfSenseCxTotalAdj;
|
||||
|
||||
};
|
||||
|
||||
int computeAdjHoriz(u8 *data, int row, int column, u8 **result);
|
||||
int computeAdjHorizTotal(u16 *data, int row, int column, u16 **result);
|
||||
int computeAdjVert(u8 *data, int row, int column, u8 **result);
|
||||
int computeAdjVertTotal(u16 *data, int row, int column, u16 **result);
|
||||
int computeTotal(u8 *data, u8 main, int row, int column, int m,
|
||||
int n, u16 **result);
|
||||
int checkLimitsMinMax(short *data, int row, int column, int min, int max);
|
||||
int checkLimitsMap(u8 *data, int row, int column, int *min, int *max);
|
||||
int checkLimitsMapTotal(u16 *data, int row, int column, int *min, int *max);
|
||||
int checkLimitsMapAdj(u8 *data, int row, int column, int *max);
|
||||
int checkLimitsMapAdjTotal(u16 *data, int row, int column, int *max);
|
||||
int production_test_ito(void);
|
||||
int production_test_initialization(void);
|
||||
int ms_compensation_tuning(void);
|
||||
int ss_compensation_tuning(void);
|
||||
int lp_timer_calibration(void);
|
||||
int save_cx_tuning(void);
|
||||
int production_test_split_initialization(int saveToFlash);
|
||||
int production_test_main(char *pathThresholds, int stop_on_fail, int saveInit,
|
||||
struct TestToDo *todo, u32 signature);
|
||||
int production_test_ms_raw(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_ms_cx(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_ss_raw(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_ss_ix_cx(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_data(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_ms_key_cx(char *path_limits, int stop_on_fail,
|
||||
struct TestToDo *todo);
|
||||
int production_test_ms_key_raw(char *path_limits);
|
||||
int save_mp_flag(u32 signature);
|
||||
int parseProductionTestLimits(char *path, char *label, int **data,
|
||||
int *row, int *column);
|
||||
int readLine(char *data, char *line, int size, int *n);
|
||||
#endif
|
Reference in New Issue
Block a user