focaltech_v2_mmi: disable focaltech driver drm notify

- disable focaltech driver drm nofity, use touchscreen mmi drm notify
- reduce tp reset time, if tp is invalid, retry
- add pintrl function for touchscreen mmi, to reset touch ic

Change-Id: I2a9c6fdb806905d2e55cee6aa1908941c1c4242f
Signed-off-by: wangyq13 <wangyq13@lenovo.com>
Reviewed-on: https://gerrit.mot.com/2003119
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: litong <litong20@motorola.com>
Reviewed-by: Jun Weng <wengjun1@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
wangyq13 2021-07-06 12:03:47 +08:00 • committed by Yeqing Wang
commit f67f735d4e
2 changed files with 39 additions and 6 deletions

View file

@ -61,7 +61,7 @@ extern void fts_mmi_dev_unregister(struct fts_ts_data *ts_data);
* Private constant and macro definitions using #define
*****************************************************************************/
#define FTS_DRIVER_NAME "fts_ts"
#define INTERVAL_READ_REG 200 /* unit:ms */
#define INTERVAL_READ_REG 50 /* unit:ms */
#define TIMEOUT_READ_REG 1000 /* unit:ms */
#if FTS_POWER_SOURCE_CUST_EN
#define FTS_VTG_MIN_UV 3000000
@ -79,8 +79,10 @@ struct fts_ts_data *fts_data;
/*****************************************************************************
* Static function prototypes
*****************************************************************************/
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
static int fts_ts_suspend(struct device *dev);
static int fts_ts_resume(struct device *dev);
#endif
/*****************************************************************************
* Name: fts_wait_tp_to_valid
@ -1297,6 +1299,7 @@ static int fts_power_source_exit(struct fts_ts_data *ts_data)
return 0;
}
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
static int fts_power_source_suspend(struct fts_ts_data *ts_data)
{
int ret = 0;
@ -1328,6 +1331,7 @@ static int fts_power_source_resume(struct fts_ts_data *ts_data)
return ret;
}
#endif
#endif /* FTS_POWER_SOURCE_CUST_EN */
static int fts_gpio_configure(struct fts_ts_data *data)
@ -1498,6 +1502,7 @@ static int fts_parse_dt(struct device *dev, struct fts_ts_platform_data *pdata)
return 0;
}
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
static void fts_resume_work(struct work_struct *work)
{
struct fts_ts_data *ts_data = container_of(work, struct fts_ts_data,
@ -1690,6 +1695,7 @@ static void fts_ts_late_resume(struct early_suspend *handler)
queue_work(fts_data->ts_workqueue, &fts_data->resume_work);
}
#endif
#endif
static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
{
@ -1709,6 +1715,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
if (ret)
FTS_ERROR("device-tree parse fail");
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
#if defined(CONFIG_DRM)
#if defined(CONFIG_DRM_PANEL)
ret = drm_check_dt(ts_data->dev->of_node);
@ -1716,6 +1723,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
FTS_ERROR("parse drm-panel fail");
}
#endif
#endif
#endif
} else {
if (ts_data->dev->platform_data) {
@ -1769,7 +1777,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
#endif
#if (!FTS_CHIP_IDC)
fts_reset_proc(200);
fts_reset_proc(150);
#endif
ret = fts_get_ic_information(ts_data);
@ -1831,15 +1839,18 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
FTS_ERROR("init fw upgrade fail");
}
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
if (ts_data->ts_workqueue) {
INIT_WORK(&ts_data->resume_work, fts_resume_work);
}
#endif
#if defined(CONFIG_PM) && FTS_PATCH_COMERR_PM
init_completion(&ts_data->pm_completion);
ts_data->pm_suspend = false;
#endif
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
#if defined(CONFIG_DRM)
ts_data->fb_notif.notifier_call = drm_notifier_callback;
#if defined(CONFIG_DRM_PANEL)
@ -1866,6 +1877,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data)
ts_data->early_suspend.resume = fts_ts_late_resume;
register_early_suspend(&ts_data->early_suspend);
#endif
#endif
#ifdef CONFIG_INPUT_TOUCHSCREEN_MMI
fts_mmi_dev_register(ts_data);
@ -1936,6 +1948,7 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
if (ts_data->ts_workqueue)
destroy_workqueue(ts_data->ts_workqueue);
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
#if defined(CONFIG_DRM)
#if defined(CONFIG_DRM_PANEL)
if (active_panel)
@ -1949,6 +1962,7 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
FTS_ERROR("[FB]Error occurred while unregistering fb_notifier.");
#elif defined(CONFIG_HAS_EARLYSUSPEND)
unregister_early_suspend(&ts_data->early_suspend);
#endif
#endif
if (gpio_is_valid(ts_data->pdata->reset_gpio))
@ -1972,6 +1986,7 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
return 0;
}
#ifndef CONFIG_INPUT_TOUCHSCREEN_MMI
static int fts_ts_suspend(struct device *dev)
{
int ret = 0;
@ -2061,7 +2076,7 @@ static int fts_ts_resume(struct device *dev)
#if FTS_POWER_SOURCE_CUST_EN
fts_power_source_resume(ts_data);
#endif
fts_reset_proc(200);
fts_reset_proc(150);
}
fts_wait_tp_to_valid();
@ -2085,6 +2100,7 @@ static int fts_ts_resume(struct device *dev)
FTS_FUNC_EXIT();
return 0;
}
#endif
#if defined(CONFIG_PM) && FTS_PATCH_COMERR_PM
static int fts_pm_suspend(struct device *dev)

View file

@ -173,6 +173,23 @@ static int fts_mmi_methods_reset(struct device *dev, int type)
return 0;
}
static int fts_mmi_methods_pinctrl(struct device *dev, int on)
{
struct fts_ts_data *ts_data;
struct input_dev *input_dev;
GET_TS_DATA(dev);
input_dev = ts_data->input_dev;
if (on == TS_MMI_PINCTL_ON) {
mutex_lock(&input_dev->mutex);
fts_reset_proc(150);
mutex_unlock(&input_dev->mutex);
}
return 0;
}
static int fts_mmi_firmware_update(struct device *dev, char *fwname)
{
struct fts_ts_data *ts_data;
@ -216,11 +233,9 @@ static int fts_mmi_panel_state(struct device *dev,
switch (to) {
case TS_MMI_PM_DEEPSLEEP:
ret = fts_write_reg(FTS_REG_POWER_MODE, FTS_REG_POWER_MODE_SLEEP);
ts_data->gesture_mode = false;
if (ret < 0)
FTS_ERROR("set TP to sleep mode fail, ret=%d", ret);
/* TP delay 50ms then lcd entery suspend*/
mdelay(50);
break;
case TS_MMI_PM_GESTURE:
@ -229,6 +244,7 @@ static int fts_mmi_panel_state(struct device *dev,
/* Enter into gesture mode(suspend) */
#ifdef FOCALTECH_SENSOR_EN
ts_data->wakeable = true;
ts_data->gesture_mode = true;
#endif
}
#endif
@ -362,6 +378,7 @@ static struct ts_mmi_methods fts_mmi_methods = {
.get_poweron = fts_mmi_methods_get_poweron,
/* SET methods */
.reset = fts_mmi_methods_reset,
.pinctrl = fts_mmi_methods_pinctrl,
.drv_irq = fts_mmi_methods_drv_irq,
#if FTS_POWER_SOURCE_CUST_EN
.power = fts_mmi_methods_power,