fogor: tp: 1st icnl9916c CQA-test function

1. modify self-test function.
2. modify 1st tp depend on mmi_info.ko
3. modify 2nd tp depend on mmi_info.ko

Change-Id: Iba103e204af8ec98c3d7e97936330014d13bc8d2
Signed-off-by: ontim52 <ontim52@motorola.com>
Reviewed-on: https://gerrit.mot.com/2658984
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Jun Weng <wengjun1@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
ontim52 2023-06-28 19:55:32 +08:00
commit c94a4cc151
8 changed files with 73 additions and 41 deletions

View file

@ -22,7 +22,7 @@ ifneq ($(MOTO_PANEL_CHECK_TOUCH_STATE),)
KERNEL_CFLAGS += CONFIG_INPUT_CHIPONE_0FLASH_MMI_NOTIFY_TOUCH_STATE=y
endif
ifneq ($(findstring touchscreen_mmi.ko,$(BOARD_VENDOR_KERNEL_MODULES)),)
ifneq ($(findstring mmi_info.ko,$(BOARD_VENDOR_KERNEL_MODULES)),)
KBUILD_OPTIONS += CONFIG_INPUT_TOUCHSCREEN_MMI=y
endif

View file

@ -428,7 +428,6 @@ static void do_selftest(struct cts_oem_data *oem_data)
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_USERSPACE;
test_param.min = &oem_data->rawdata_min;
test_param.max = &oem_data->rawdata_max;
@ -458,7 +457,6 @@ static void do_selftest(struct cts_oem_data *oem_data)
CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_USERSPACE;
test_param.max = &oem_data->noise_max;
test_param.test_data_buf = oem_data->noise_test_data;
@ -485,7 +483,6 @@ static void do_selftest(struct cts_oem_data *oem_data)
CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_USERSPACE;
test_param.min = &oem_data->open_min;
test_param.test_data_buf = oem_data->open_test_data;
@ -508,7 +505,6 @@ static void do_selftest(struct cts_oem_data *oem_data)
CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_USERSPACE;
test_param.min = &oem_data->short_min;
test_param.test_data_buf = oem_data->short_test_data;
@ -532,7 +528,6 @@ static void do_selftest(struct cts_oem_data *oem_data)
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_USERSPACE;
test_param.min = &oem_data->comp_cap_min;
test_param.max = &oem_data->comp_cap_max;
@ -1243,7 +1238,7 @@ static const struct proc_ops cts_limit_ops = {
static int cts_factory_test_show(struct seq_file *m, void *v)
{
#define TOUCH_DATA_DIRECTORY_PREFIX "/sdcard/chipone-tddi/test"
#define TOUCH_DATA_DIRECTORY_PREFIX "/sdcard"
#define RAWDATA_TEST_DATA_FILENAME "rawdata-test-data.txt"
#define NOISE_TEST_DATA_FILENAME "noise-test-data.txt"
#define OPEN_TEST_DATA_FILENAME "open-test-data.txt"
@ -1275,7 +1270,6 @@ static int cts_factory_test_show(struct seq_file *m, void *v)
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_FILE,
.test_data_filepath = NULL,
.num_invalid_node = 0,
@ -1294,7 +1288,6 @@ static int cts_factory_test_show(struct seq_file *m, void *v)
.flags = CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_FILE,
.test_data_filepath = NULL,
.num_invalid_node = 0,
@ -1309,7 +1302,6 @@ static int cts_factory_test_show(struct seq_file *m, void *v)
.flags = CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_FILE,
.test_data_filepath = NULL,
.num_invalid_node = 0,
@ -1322,7 +1314,6 @@ static int cts_factory_test_show(struct seq_file *m, void *v)
.flags = CTS_TEST_FLAG_VALIDATE_DATA |
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_FILE,
.test_data_filepath = NULL,
.num_invalid_node = 0,
@ -1336,7 +1327,6 @@ static int cts_factory_test_show(struct seq_file *m, void *v)
CTS_TEST_FLAG_VALIDATE_MIN |
CTS_TEST_FLAG_VALIDATE_MAX |
CTS_TEST_FLAG_STOP_TEST_IF_VALIDATE_FAILED |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_CONSOLE |
CTS_TEST_FLAG_DUMP_TEST_DATA_TO_FILE,
.test_data_filepath = NULL,
.num_invalid_node = 0,

View file

@ -951,7 +951,6 @@ int cts_tcs_polling_data(struct cts_device *cts_dev,
break;
mdelay(10);
} while (!ready && --retries);
cts_info("get data rdy, retries left %d", retries);
if (!ready) {
cts_err("time out wait for data rdy");
@ -1217,6 +1216,20 @@ int cts_tcs_set_workmode(const struct cts_device *cts_dev, u8 workmode)
&workmode, sizeof(workmode));
}
int cts_tcs_get_curr_mode(const struct cts_device *cts_dev, u8 *currmode)
{
u8 buf = 0;
int ret;
ret = cts_tcs_read(cts_dev, CMD_SYS_STS_CURRENT_WORKMODE_RO,
&buf, sizeof(buf));
if (ret == 0) {
*currmode = buf;
}
return ret;
}
int cts_tcs_set_openshort_mode(const struct cts_device *cts_dev, u8 mode)
{
return cts_tcs_write(cts_dev, CMD_OPENSHORT_MODE_SEL_RW, &mode,

View file

@ -49,6 +49,7 @@ int cts_tcs_get_fw_id(const struct cts_device *cts_dev, u16 *fwid);
int cts_tcs_get_workmode(const struct cts_device *cts_dev, u8 *workmode);
int cts_tcs_set_workmode(const struct cts_device *cts_dev, u8 workmode);
int cts_tcs_set_openshort_mode(const struct cts_device *cts_dev, u8 mode);
int cts_tcs_get_curr_mode(const struct cts_device *cts_dev, u8 *currmode);
int cts_tcs_set_tx_vol(const struct cts_device *cts_dev, u8 txvol);
int cts_tcs_set_short_test_type(const struct cts_device *cts_dev, u8 short_type);

View file

@ -637,6 +637,32 @@ static int wait_fw_to_normal_work(struct cts_device *cts_dev)
return ret ? ret : -ETIMEDOUT;
}
static int wait_fw_to_curr_mode(struct cts_device *cts_dev)
{
int i = 0;
int ret;
cts_info("Wait fw to curr work mode");
do {
u8 work_mode;
ret = cts_tcs_get_curr_mode(cts_dev, &work_mode);
if (ret) {
cts_err("Get fw curr work mode failed %d", work_mode);
continue;
} else {
if (work_mode == CTS_FIRMWARE_WORK_MODE_OPEN_SHORT)
return 0;
}
mdelay(10);
} while (++i < 100);
return ret ? ret : -ETIMEDOUT;
}
static int prepare_test(struct cts_device *cts_dev)
{
int ret;
@ -1388,6 +1414,12 @@ int cts_test_open(struct cts_device *cts_dev, struct cts_test_param *param)
goto err_recovery_display_state;
}
ret = wait_fw_to_curr_mode(cts_dev);
if (ret) {
cts_err("wait_to_curr_mode failed %d", ret);
goto err_recovery_display_state;
}
cts_set_int_data_types(cts_dev, INT_DATA_TYPE_RAWDATA);
cts_set_int_data_method(cts_dev, INT_DATA_METHOD_POLLING);
@ -1584,7 +1616,7 @@ int cts_test_short(struct cts_device *cts_dev, struct cts_test_param *param)
}
cts_info("Test short to GND");
ret = cts_tcs_set_short_test_type(cts_dev, CTS_SHORT_TEST_BETWEEN_GND);
ret = cts_tcs_set_short_test_type(cts_dev, CTS_SHORT_TEST_UNDEFINED);
if (ret) {
cts_err("Set short test type to SHORT_TO_GND failed %d", ret);
goto recovery_display_state;
@ -1600,8 +1632,21 @@ int cts_test_short(struct cts_device *cts_dev, struct cts_test_param *param)
goto recovery_display_state;
}
ret = wait_fw_to_curr_mode(cts_dev);
if (ret) {
cts_err("wait_to_curr_mode failed %d", ret);
goto recovery_display_state;
}
cts_set_int_data_types(cts_dev, INT_DATA_TYPE_RAWDATA);
cts_set_int_data_method(cts_dev, INT_DATA_METHOD_POLLING);
ret = cts_tcs_set_short_test_type(cts_dev, CTS_SHORT_TEST_BETWEEN_GND);
if (ret) {
cts_err("Set short test type to SHORT_TO_GND failed %d", ret);
goto recovery_display_state;
}
ret = cts_tcs_polling_test_data(cts_dev, (u8 *)test_result,
RAWDATA_BUFFER_SIZE(cts_dev));
if (ret) {
@ -1643,16 +1688,6 @@ int cts_test_short(struct cts_device *cts_dev, struct cts_test_param *param)
cts_err("Set short test type to BETWEEN_COLS failed %d", ret);
goto recovery_display_state;
}
// ret = cts_tcs_set_openshort_mode(cts_dev, CTS_TEST_SHORT);
// if (ret) {
// cts_err("Set test type to SHORT failed %d", ret);
// goto recovery_display_state;
// }
// ret = cts_tcs_set_workmode(cts_dev, CTS_FIRMWARE_WORK_MODE_OPEN_SHORT);
// if (ret) {
// cts_err("Set firmware work mode to WORK_MODE_TEST failed %d", ret);
// goto recovery_display_state;
// }
for (loopcnt = 0; loopcnt < SHORT_COLS_TEST_LOOP; loopcnt++) {
ret = cts_tcs_polling_test_data(cts_dev, (u8 *)test_result,
@ -1688,22 +1723,13 @@ int cts_test_short(struct cts_device *cts_dev, struct cts_test_param *param)
/* Short between rows */
cts_info("Test short between rows");
ret = cts_tcs_set_short_test_type(cts_dev, CTS_SHORT_TEST_BETWEEN_ROWS);
if (ret) {
cts_err("Set short test type to BETWEEN_ROWS failed %d", ret);
goto recovery_display_state;
}
for (loopcnt = 0; loopcnt < SHORT_ROWS_TEST_LOOP; loopcnt++) {
ret = cts_tcs_set_short_test_type(cts_dev, CTS_SHORT_TEST_BETWEEN_ROWS);
if (ret) {
cts_err("Set short test type to BETWEEN_ROWS failed %d", ret);
goto recovery_display_state;
}
// ret = cts_tcs_set_openshort_mode(cts_dev, CTS_TEST_SHORT);
// if (ret) {
// cts_err("Set test type to SHORT failed %d", ret);
// goto recovery_display_state;
// }
// ret = cts_tcs_set_workmode(cts_dev, CTS_FIRMWARE_WORK_MODE_OPEN_SHORT);
// if (ret) {
// cts_err("Set firmware work mode to WORK_MODE_TEST failed %d", ret);
// goto recovery_display_state;
// }
ret = cts_tcs_polling_test_data(cts_dev, (u8 *)test_result,
RAWDATA_BUFFER_SIZE(cts_dev));
if (ret) {

View file

@ -40,6 +40,7 @@ enum cts_test_item {
CTS_TEST_COMPENSATE_CAP,
};
#pragma pack(1)
struct cts_test_param {
int test_item;
@ -67,6 +68,7 @@ struct cts_test_param {
void *priv_param;
int priv_param_size;
};
#pragma pack()
struct cts_rawdata_test_priv_param {
__u32 frames;

View file

@ -1195,7 +1195,7 @@ int cts_tool_init(struct chipone_ts_data *cts_data)
cts_info("Init");
cts_data->procfs_entry = proc_create_data(CFG_CTS_TOOL_PROC_FILENAME,
0660, NULL, &cts_tool_fops, cts_data);
0666, NULL, &cts_tool_fops, cts_data);
if (cts_data->procfs_entry == NULL) {
cts_err("Create proc entry failed");
return -EFAULT;

View file

@ -45,7 +45,7 @@ ifeq ($(TOUCHSCREEN_LAST_TIME),true)
KERNEL_CFLAGS += CONFIG_ILI_TOUCH_LAST_TIME=y
endif
ifneq ($(findstring touchscreen_mmi.ko,$(BOARD_VENDOR_KERNEL_MODULES)),)
ifneq ($(findstring mmi_info.ko,$(BOARD_VENDOR_KERNEL_MODULES)),)
KBUILD_OPTIONS += CONFIG_INPUT_TOUCHSCREEN_MMI=y
endif