From 0afb0fbeb66b1d5cbf4b9898d524aadcd63a4b19 Mon Sep 17 00:00:00 2001 From: hujing3 Date: Wed, 30 Sep 2020 12:45:39 +0800 Subject: [PATCH] ili9882_mmi: capri txd/tm ili9882 touch bringup Capri: input touch ili9882 bringup txd ili9882h & ili9882n NO_PROP_NEEDED: needn't for shm2018 Change-Id: I622299f653b3b79fc9b8f53f07374b08680b01df Signed-off-by: hujing3 Reviewed-on: https://gerrit.mot.com/1764048 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- .../input/touchscreen/ili9882_mmi/Android.mk | 4 ++ drivers/input/touchscreen/ili9882_mmi/Kbuild | 3 ++ .../ili9882_mmi/firmware/ili9882_fw.h | 40 +++++++++++++++++ .../input/touchscreen/ili9882_mmi/ili9882.c | 45 +++++++++++++++++++ .../input/touchscreen/ili9882_mmi/ili9882.h | 5 +++ .../touchscreen/ili9882_mmi/ili9882_spi.c | 43 ++++++++++++++++++ 6 files changed, 140 insertions(+) diff --git a/drivers/input/touchscreen/ili9882_mmi/Android.mk b/drivers/input/touchscreen/ili9882_mmi/Android.mk index 71e71d35d7b6..ec6e0b7d6843 100644 --- a/drivers/input/touchscreen/ili9882_mmi/Android.mk +++ b/drivers/input/touchscreen/ili9882_mmi/Android.mk @@ -13,6 +13,10 @@ ifneq ($(DL_FW_BY_DISPLAY),) KERNEL_CFLAGS += CONFIG_ILITEK_RESUME_BY_DDI=y endif +ifeq ($(ILITEK_FW_PANEL),true) + KERNEL_CFLAGS += CONFIG_ILITEK_FW_PANEL=y +endif + ifeq ($(ILITEK_ESD),true) KERNEL_CFLAGS += CONFIG_ILITEK_ESD=y endif diff --git a/drivers/input/touchscreen/ili9882_mmi/Kbuild b/drivers/input/touchscreen/ili9882_mmi/Kbuild index 046e1e6d8fa8..1c7802521c05 100644 --- a/drivers/input/touchscreen/ili9882_mmi/Kbuild +++ b/drivers/input/touchscreen/ili9882_mmi/Kbuild @@ -17,6 +17,9 @@ endif ifneq ($(filter m y,$(CONFIG_ILITEK_RESUME_BY_DDI)),) EXTRA_CFLAGS += -DILI_CONFIG_RESUME_BY_DDI endif +ifneq ($(filter m y,$(CONFIG_ILITEK_FW_PANEL)),) +EXTRA_CFLAGS += -DILI_FW_PANEL +endif ifneq ($(filter m y,$(CONFIG_ILITEK_ESD)),) EXTRA_CFLAGS += -DILI_CONFIG_ESD endif diff --git a/drivers/input/touchscreen/ili9882_mmi/firmware/ili9882_fw.h b/drivers/input/touchscreen/ili9882_mmi/firmware/ili9882_fw.h index f2729b8b2319..a9b4f1ae3d39 100755 --- a/drivers/input/touchscreen/ili9882_mmi/firmware/ili9882_fw.h +++ b/drivers/input/touchscreen/ili9882_mmi/firmware/ili9882_fw.h @@ -79,6 +79,46 @@ static unsigned char CTPM_FW_TXD[] = { 0xFF, }; +#define TXD_9882H_INI_NAME_PATH "/sdcard/mp_txd_9882h.ini" +#define TXD_9882H_FW_FILP_PATH "/sdcard/ILITEK_FW_TXD_9882H" +#define TXD_9882H_INI_REQUEST_PATH "mp_txd_9882h.ini" +#define TXD_9882H_FW_REQUEST_PATH "ILITEK_FW_TXD_9882H" +static unsigned char CTPM_FW_TXD_9882N[] = { + 0xFF, +}; + +#define TXD_9882N_INI_NAME_PATH "/sdcard/mp_txd_9882n.ini" +#define TXD_9882N_FW_FILP_PATH "/sdcard/ILITEK_FW_TXD_9882N" +#define TXD_9882N_INI_REQUEST_PATH "mp_txd_9882n.ini" +#define TXD_9882N_FW_REQUEST_PATH "ILITEK_FW_TXD_9882N" +static unsigned char CTPM_FW_TXD_9882H[] = { + 0xFF, +}; + +#define TM_9882H_INI_NAME_PATH "/sdcard/mp_tm_9882h.ini" +#define TM_9882H_FW_FILP_PATH "/sdcard/ILITEK_FW_TM_9882H" +#define TM_9882H_INI_REQUEST_PATH "mp_tm_9882h.ini" +#define TM_9882H_FW_REQUEST_PATH "ILITEK_FW_TM_9882H" +static unsigned char CTPM_FW_TM_9882N[] = { + 0xFF, +}; + +#define TM_9882N_INI_NAME_PATH "/sdcard/mp_tm_9882n.ini" +#define TM_9882N_FW_FILP_PATH "/sdcard/ILITEK_FW_TM_9882N" +#define TM_9882N_INI_REQUEST_PATH "mp_tm_9882n.ini" +#define TM_9882N_FW_REQUEST_PATH "ILITEK_FW_TM_9882N" +static unsigned char CTPM_FW_TM_9882H[] = { + 0xFF, +}; + +#define TIANMA_9882N_INI_NAME_PATH "/sdcard/mp_tianma_9882n.ini" +#define TIANMA_9882N_FW_FILP_PATH "/sdcard/ILITEK_FW_TIANMA_9882N" +#define TIANMA_9882N_INI_REQUEST_PATH "mp_tianma_9882n.ini" +#define TIANMA_9882N_FW_REQUEST_PATH "ILITEK_FW_TIANMA_9882N" +static unsigned char CTPM_FW_TIANMA_9882N[] = { + 0xFF, +}; + #define TM_INI_NAME_PATH "/sdcard/mp_tm.ini" #define TM_FW_FILP_PATH "/sdcard/ILITEK_FW_TM" #define TM_INI_REQUEST_PATH "mp_tm.ini" diff --git a/drivers/input/touchscreen/ili9882_mmi/ili9882.c b/drivers/input/touchscreen/ili9882_mmi/ili9882.c index 3a09cdb8e86a..6926803619bf 100755 --- a/drivers/input/touchscreen/ili9882_mmi/ili9882.c +++ b/drivers/input/touchscreen/ili9882_mmi/ili9882.c @@ -944,6 +944,24 @@ static void ili_update_tp_module_info(void) ilits->md_fw_ili = CTPM_FW_TXD; ilits->md_fw_ili_size = sizeof(CTPM_FW_TXD); break; + case MODEL_TXD_9882H: + ilits->md_name = "TXD_9882H"; + ilits->md_fw_filp_path = TXD_9882H_FW_FILP_PATH; + ilits->md_fw_rq_path = TXD_9882H_FW_REQUEST_PATH; + ilits->md_ini_path = TXD_9882H_INI_NAME_PATH; + ilits->md_ini_rq_path = TXD_9882H_FW_REQUEST_PATH; + ilits->md_fw_ili = CTPM_FW_TXD_9882H; + ilits->md_fw_ili_size = sizeof(CTPM_FW_TXD_9882H); + break; + case MODEL_TXD_9882N: + ilits->md_name = "TXD_9882N"; + ilits->md_fw_filp_path = TXD_9882N_FW_FILP_PATH; + ilits->md_fw_rq_path = TXD_9882N_FW_REQUEST_PATH; + ilits->md_ini_path = TXD_9882N_INI_NAME_PATH; + ilits->md_ini_rq_path = TXD_9882N_FW_REQUEST_PATH; + ilits->md_fw_ili = CTPM_FW_TXD_9882N; + ilits->md_fw_ili_size = sizeof(CTPM_FW_TXD_9882N); + break; case MODEL_TM: ilits->md_name = "ILITEK_TDDI_TM"; ilits->md_fw_filp_path = TM_FW_REQUEST_PATH; @@ -953,6 +971,33 @@ static void ili_update_tp_module_info(void) ilits->md_fw_ili = CTPM_FW_TM; ilits->md_fw_ili_size = sizeof(CTPM_FW_TM); break; + case MODEL_TM_9882N: + ilits->md_name = "TM_9882N"; + ilits->md_fw_filp_path = TM_9882N_FW_FILP_PATH; + ilits->md_fw_rq_path = TM_9882N_FW_REQUEST_PATH; + ilits->md_ini_path = TM_9882N_INI_NAME_PATH; + ilits->md_ini_rq_path = TM_9882N_FW_REQUEST_PATH; + ilits->md_fw_ili = CTPM_FW_TM_9882N; + ilits->md_fw_ili_size = sizeof(CTPM_FW_TM_9882N); + break; + case MODEL_TM_9882H: + ilits->md_name = "TM_9882H"; + ilits->md_fw_filp_path = TM_9882H_FW_FILP_PATH; + ilits->md_fw_rq_path = TM_9882H_FW_REQUEST_PATH; + ilits->md_ini_path = TM_9882H_INI_NAME_PATH; + ilits->md_ini_rq_path = TM_9882H_FW_REQUEST_PATH; + ilits->md_fw_ili = CTPM_FW_TM_9882H; + ilits->md_fw_ili_size = sizeof(CTPM_FW_TM_9882H); + break; + case MODEL_TIANMA_9882N: + ilits->md_name = "TIANMA_9882N"; + ilits->md_fw_filp_path = TIANMA_9882N_FW_FILP_PATH; + ilits->md_fw_rq_path = TIANMA_9882N_FW_REQUEST_PATH; + ilits->md_ini_path = TIANMA_9882N_INI_NAME_PATH; + ilits->md_ini_rq_path = TIANMA_9882N_FW_REQUEST_PATH; + ilits->md_fw_ili = CTPM_FW_TIANMA_9882N; + ilits->md_fw_ili_size = sizeof(CTPM_FW_TIANMA_9882N); + break; case MODEL_HLT: ilits->md_name = "ILITEK_TDDI_HLT"; ilits->md_fw_filp_path = HLT_FW_REQUEST_PATH; diff --git a/drivers/input/touchscreen/ili9882_mmi/ili9882.h b/drivers/input/touchscreen/ili9882_mmi/ili9882.h index 1be3f82ba6a7..4021e8172e24 100755 --- a/drivers/input/touchscreen/ili9882_mmi/ili9882.h +++ b/drivers/input/touchscreen/ili9882_mmi/ili9882.h @@ -338,7 +338,12 @@ enum TP_MODEL { MODEL_INX, MODEL_DJ, MODEL_TXD, + MODEL_TXD_9882H, + MODEL_TXD_9882N, MODEL_TM, + MODEL_TM_9882N, + MODEL_TM_9882H, + MODEL_TIANMA_9882N, MODEL_HLT }; diff --git a/drivers/input/touchscreen/ili9882_mmi/ili9882_spi.c b/drivers/input/touchscreen/ili9882_mmi/ili9882_spi.c index dc0fc43e121b..e8a9a403d7d1 100755 --- a/drivers/input/touchscreen/ili9882_mmi/ili9882_spi.c +++ b/drivers/input/touchscreen/ili9882_mmi/ili9882_spi.c @@ -23,6 +23,7 @@ #include "ili9882.h" #ifdef CONFIG_DRM struct drm_panel *ili_active_panel; +static const char *active_panel_name = NULL; static int check_dt(struct device_node *np); #endif @@ -438,6 +439,34 @@ int ili_core_spi_setup(int num) return 0; } +#ifdef ILI_FW_PANEL +static int ili_parse_tp_module() +{ + int tp_module = 0; + if(active_panel_name) { + if (strstr(active_panel_name, "txd")) { + if (strstr(active_panel_name, "ili9882h")) { + tp_module = MODEL_TXD_9882H; + } else if (strstr(active_panel_name, "ili9882n")) { + tp_module = MODEL_TXD_9882N; + } + } else if (strstr(active_panel_name, "tm")) { // || strstr(active_panel_name, "tianma")) { + if (strstr(active_panel_name, "ili9882n")) { + tp_module = MODEL_TM_9882N; + } else if (strstr(active_panel_name, "ili9882h")) { + tp_module = MODEL_TM_9882H; + } + } else if (strstr(active_panel_name, "tianma")) { + if (strstr(active_panel_name, "ili9882n")) { + tp_module = MODEL_TIANMA_9882N; + } + } + } + ILI_INFO("ili_parse_tp_module=%d\n", tp_module); + return tp_module; +} +#endif //ILI_FW_PANEL + #ifdef CONFIG_DRM static int check_dt(struct device_node *np) { @@ -454,6 +483,14 @@ static int check_dt(struct device_node *np) node = of_parse_phandle(np, "panel", i); panel = of_drm_find_panel(node); of_node_put(node); +#ifdef ILI_FW_PANEL + if (!IS_ERR(panel)) { + ili_active_panel = panel; + active_panel_name = node->name; + ILI_INFO("%s: actived\n", active_panel_name); + return 0; + } +#else if (!IS_ERR(panel)) { ili_active_panel = panel; pr_err("%s: ili9882h HLT actived\n", __func__); @@ -468,6 +505,7 @@ static int check_dt(struct device_node *np) return MODEL_TM; } } +#endif //ILI_FW_PANEL } if (node) pr_err("%s: %s not actived\n", __func__, node->name); @@ -540,6 +578,11 @@ static int ilitek_spi_probe(struct spi_device *spi) return -ENOMEM; } +//---parse tp module--- +#ifdef ILI_FW_PANEL + tp_module = ili_parse_tp_module(); +#endif + ilits->i2c = NULL; ilits->spi = spi; ilits->dev = &spi->dev;