diff --git a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Android.mk b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Android.mk index 4860f9a563c6..e10443c7c046 100644 --- a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Android.mk +++ b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Android.mk @@ -27,6 +27,10 @@ ifneq ($(BOARD_USES_PANEL_NOTIFICATIONS),) KERNEL_CFLAGS += CONFIG_INPUT_FOCALTECH_PANEL_NOTIFICATIONS=y endif +ifneq ($(FOCALTECH_PINCTRL_ENABLE),) + KERNEL_CFLAGS += CONFIG_INPUT_FOCALTECH_PINCTRL_EN=y +endif + include $(CLEAR_VARS) LOCAL_MODULE := focaltech_0flash_v2_mmi.ko LOCAL_MODULE_TAGS := optional diff --git a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Kbuild b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Kbuild index 16295184a919..e7937ae3dafa 100644 --- a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Kbuild +++ b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/Kbuild @@ -38,4 +38,8 @@ endif ifneq ($(filter ft8057,$(CONFIG_INPUT_FOCALTECH_0FLASH_MMI_IC_NAME)),) EXTRA_CFLAGS += -DCONFIG_INPUT_FOCALTECH_0FLASH_MMI_IC_NAME_FT8057 endif + +ifneq ($(filter m y,$(CONFIG_INPUT_FOCALTECH_PINCTRL_EN)),) +EXTRA_CFLAGS += -DFOCALTECH_PINCTRL_EN +endif KBUILD_EXTRA_SYMBOLS += $(CURDIR)/../../kernel/msm-$(MODULE_KERNEL_VERSION)/Module.symvers diff --git a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_config.h b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_config.h index b10920cafc61..4d61613c758f 100644 --- a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_config.h +++ b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_config.h @@ -251,8 +251,11 @@ * Pinctrl enable * default: disable */ +#ifdef FOCALTECH_PINCTRL_EN +#define FTS_PINCTRL_EN 1 +#else #define FTS_PINCTRL_EN 0 - +#endif /* * Customer power enable * enable it when customer need control TP power diff --git a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_core.c b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_core.c index 3c2b17967b92..39bcc71cf083 100644 --- a/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_core.c +++ b/drivers/input/touchscreen/focaltech_0flash_v2_mmi/focaltech_core.c @@ -1164,10 +1164,6 @@ static int fts_buffer_init(struct fts_ts_data *ts_data) return 0; } -#if FTS_POWER_SOURCE_CUST_EN -/***************************************************************************** -* Power Control -*****************************************************************************/ #if FTS_PINCTRL_EN static int fts_pinctrl_init(struct fts_ts_data *ts) { @@ -1260,6 +1256,10 @@ static int fts_pinctrl_select_release(struct fts_ts_data *ts) } #endif /* FTS_PINCTRL_EN */ +/***************************************************************************** +* Power Control +*****************************************************************************/ +#if FTS_POWER_SOURCE_CUST_EN static int fts_power_source_ctrl(struct fts_ts_data *ts_data, int enable) { int ret = 0; @@ -1960,6 +1960,11 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data) } #endif +#if FTS_PINCTRL_EN && (!FTS_POWER_SOURCE_CUST_EN) + fts_pinctrl_init(ts_data); + fts_pinctrl_select_normal(ts_data); +#endif + #if (!FTS_CHIP_IDC) fts_reset_proc(200); #endif @@ -2084,6 +2089,11 @@ err_irq_req: err_power_init: fts_power_source_exit(ts_data); #endif + +#if FTS_PINCTRL_EN && (!FTS_POWER_SOURCE_CUST_EN) + fts_pinctrl_select_release(ts_data); +#endif + if (gpio_is_valid(ts_data->pdata->reset_gpio)) gpio_free(ts_data->pdata->reset_gpio); if (gpio_is_valid(ts_data->pdata->irq_gpio)) @@ -2173,6 +2183,10 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data) fts_power_source_exit(ts_data); #endif +#if FTS_PINCTRL_EN && (!FTS_POWER_SOURCE_CUST_EN) + fts_pinctrl_select_release(ts_data); +#endif + kfree_safe(ts_data->touch_buf); kfree_safe(ts_data->pdata); kfree_safe(ts_data); @@ -2247,6 +2261,9 @@ static int fts_ts_suspend(struct device *dev) #endif } +#if FTS_PINCTRL_EN && (!FTS_POWER_SOURCE_CUST_EN) + fts_pinctrl_select_suspend(ts_data); +#endif fts_release_all_finger(); ts_data->suspended = true; FTS_FUNC_EXIT(); @@ -2284,6 +2301,11 @@ static int fts_ts_resume(struct device *dev) fts_reset_proc(200); } + +#if FTS_PINCTRL_EN && (!FTS_POWER_SOURCE_CUST_EN) + fts_pinctrl_select_normal(ts_data); +#endif + fts_wait_tp_to_valid(); fts_ex_mode_recovery(ts_data);