mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 14:19:09 -04:00
dlkm: Add novatek touch info node for Moto Care
- Now we need ic_ver node to points out Product ID, Build ID and Config ID for moto care, so add /sys/class/touchscreen/NVT-ts/ic_ver for this requirement. Change-Id: I9637276ccd968008b40d5f10609c2d4a52f5e502 Signed-off-by: wengjun1 <wengjun1@motorola.com> Reviewed-on: https://gerrit.mot.com/1606371 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Yeqing Wang <wangyq13@motorola.com> Reviewed-by: Huosheng Liao <liaohs@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
34686a0745
commit
c347ce6333
3 changed files with 59 additions and 23 deletions
|
|
@ -686,7 +686,7 @@ info_retry:
|
|||
ts->abs_x_max = (uint16_t)((buf[5] << 8) | buf[6]);
|
||||
ts->abs_y_max = (uint16_t)((buf[7] << 8) | buf[8]);
|
||||
ts->max_button_num = buf[11];
|
||||
|
||||
ts->fw_type = buf[14];
|
||||
//---clear x_num, y_num if fw info is broken---
|
||||
if ((buf[1] + buf[2]) != 0xFF) {
|
||||
NVT_ERR("FW info is broken! fw_ver=0x%02X, ~fw_ver=0x%02X\n", buf[1], buf[2]);
|
||||
|
|
@ -696,6 +696,7 @@ info_retry:
|
|||
ts->abs_x_max = TOUCH_DEFAULT_MAX_WIDTH;
|
||||
ts->abs_y_max = TOUCH_DEFAULT_MAX_HEIGHT;
|
||||
ts->max_button_num = TOUCH_KEY_NUM;
|
||||
ts->fw_type = 1;
|
||||
|
||||
if(retry_count < 3) {
|
||||
retry_count++;
|
||||
|
|
@ -1130,6 +1131,22 @@ static int32_t nvt_parse_dt(struct device *dev)
|
|||
}
|
||||
NVT_LOG("novatek,def-max-resolution=%d,%d\n", ts->abs_x_max, ts->abs_y_max);
|
||||
|
||||
ret = of_property_read_u32(np, "novatek,def-build-id", &ts->build_id);
|
||||
if (ret) {
|
||||
ts->build_id = 0;
|
||||
NVT_LOG("novatek,build_id undefined.\n");
|
||||
} else {
|
||||
NVT_LOG("novatek,build_id=0x%04X\n", ts->build_id);
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(np, "novatek,def-config-id", &ts->config_id);
|
||||
if (ret) {
|
||||
ts->config_id = 0;
|
||||
NVT_LOG("novatek,config_id undefined.\n");
|
||||
} else {
|
||||
NVT_LOG("novatek,config_id=0x%04X\n", ts->config_id);
|
||||
}
|
||||
|
||||
ret = of_property_read_u32(np, "novatek,spi-rd-fast-addr", &SPI_RD_FAST_ADDR);
|
||||
if (ret) {
|
||||
NVT_LOG("not support novatek,spi-rd-fast-addr\n");
|
||||
|
|
@ -1566,6 +1583,7 @@ static int8_t nvt_ts_check_chip_ver_trim(void)
|
|||
ts->mmap = trim_id_table[list].mmap;
|
||||
ts->carrier_system = trim_id_table[list].hwinfo->carrier_system;
|
||||
ts->hw_crc = trim_id_table[list].hwinfo->hw_crc;
|
||||
strncpy(ts->product_id, trim_id_table[list].trim_id, 10);
|
||||
ret = 0;
|
||||
goto out;
|
||||
} else {
|
||||
|
|
@ -1697,9 +1715,22 @@ static ssize_t vendor_show(struct device *dev,
|
|||
return scnprintf(buf, PAGE_SIZE, "novatek_ts");
|
||||
}
|
||||
|
||||
static ssize_t ic_ver_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
int buildid;
|
||||
|
||||
buildid = ts->fw_ver << 8 | ts->fw_type;
|
||||
return scnprintf(buf, PAGE_SIZE, "%s%s\n%s%04x\n%s%04x\n",
|
||||
"Product ID: ", ts->product_id,
|
||||
"Build ID: ", buildid ? buildid : ts->build_id,
|
||||
"Config ID: ", ts->nvt_pid ? ts->nvt_pid : ts->config_id);
|
||||
}
|
||||
|
||||
static struct device_attribute touchscreen_attributes[] = {
|
||||
__ATTR_RO(path),
|
||||
__ATTR_RO(vendor),
|
||||
__ATTR_RO(ic_ver),
|
||||
__ATTR_NULL
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -196,6 +196,10 @@ struct nvt_ts_data {
|
|||
struct mutex state_mutex;
|
||||
struct nvt_sensor_platform_data *sensor_pdata;
|
||||
#endif
|
||||
char product_id[10];
|
||||
uint8_t fw_type;
|
||||
uint32_t build_id;
|
||||
uint32_t config_id;
|
||||
};
|
||||
|
||||
#if NVT_TOUCH_PROC
|
||||
|
|
|
|||
|
|
@ -246,6 +246,7 @@ static struct nvt_ts_hw_info NT36676F_hw_info = {
|
|||
|
||||
#define NVT_ID_BYTE_MAX 6
|
||||
struct nvt_ts_trim_id_table {
|
||||
char trim_id[10];
|
||||
uint8_t id[NVT_ID_BYTE_MAX];
|
||||
uint8_t mask[NVT_ID_BYTE_MAX];
|
||||
const struct nvt_ts_mem_map *mmap;
|
||||
|
|
@ -253,48 +254,48 @@ struct nvt_ts_trim_id_table {
|
|||
};
|
||||
|
||||
static const struct nvt_ts_trim_id_table trim_id_table[] = {
|
||||
{.id = {0x0C, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672C",.id = {0x0C, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36675_memory_map, .hwinfo = &NT36675_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x26, 0x65, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36526",.id = {0xFF, 0xFF, 0xFF, 0x26, 0x65, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36526_memory_map, .hwinfo = &NT36526_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x75, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36675",.id = {0xFF, 0xFF, 0xFF, 0x75, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36675_memory_map, .hwinfo = &NT36675_hw_info},
|
||||
{.id = {0x0B, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0B, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0B, 0xFF, 0xFF, 0x82, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0B, 0xFF, 0xFF, 0x82, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0B, 0xFF, 0xFF, 0x25, 0x65, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36525B",.id = {0x0B, 0xFF, 0xFF, 0x25, 0x65, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0A, 0xFF, 0xFF, 0x72, 0x65, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0A, 0xFF, 0xFF, 0x72, 0x65, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0A, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0A, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0A, 0xFF, 0xFF, 0x82, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0A, 0xFF, 0xFF, 0x82, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0A, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0A, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0B, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0B, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x0A, 0xFF, 0xFF, 0x72, 0x67, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36672A",.id = {0x0A, 0xFF, 0xFF, 0x72, 0x67, 0x03}, .mask = {1, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36672A_memory_map, .hwinfo = &NT36672A_hw_info},
|
||||
{.id = {0x55, 0x00, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0x55, 0x00, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0x55, 0x72, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0x55, 0x72, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xAA, 0x00, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xAA, 0x00, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xAA, 0x72, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xAA, 0x72, 0xFF, 0x00, 0x00, 0x00}, .mask = {1, 1, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x72, 0x67, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xFF, 0xFF, 0xFF, 0x72, 0x67, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xFF, 0xFF, 0xFF, 0x70, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x70, 0x67, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xFF, 0xFF, 0xFF, 0x70, 0x67, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36772",.id = {0xFF, 0xFF, 0xFF, 0x72, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36772_memory_map, .hwinfo = &NT36772_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x25, 0x65, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36525",.id = {0xFF, 0xFF, 0xFF, 0x25, 0x65, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36525_memory_map, .hwinfo = &NT36525_hw_info},
|
||||
{.id = {0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
{.trim_id = "NT36676F",.id = {0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x03}, .mask = {0, 0, 0, 1, 1, 1},
|
||||
.mmap = &NT36676F_memory_map, .hwinfo = &NT36676F_hw_info}
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue