From d8c24ac71e3e010b077532cf84e1ad8603bc8a7f Mon Sep 17 00:00:00 2001 From: Weixin Zhou Date: Wed, 30 Dec 2020 11:21:03 +0800 Subject: [PATCH] driver: input: touchscreen: gslx680_pad add early suspend support Signed-off-by: Weixin Zhou Change-Id: I4b4cc3594fdf00efdbcce349c9f4cdc942524096 --- drivers/input/touchscreen/gslx680_pad.c | 27 ++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/gslx680_pad.c b/drivers/input/touchscreen/gslx680_pad.c index 76af925d9ebc..2fd1a2193a56 100644 --- a/drivers/input/touchscreen/gslx680_pad.c +++ b/drivers/input/touchscreen/gslx680_pad.c @@ -938,6 +938,24 @@ static int gsl_ts_resume(struct device *dev) return 0; } +static int gsl_ts_early_suspend(struct tp_device *tp_d) +{ + struct gsl_ts *ts = container_of(tp_d, struct gsl_ts, tp); + + gsl_ts_suspend(&ts->client->dev); + + return 0; +} + +static int gsl_ts_late_resume(struct tp_device *tp_d) +{ + struct gsl_ts *ts = container_of(tp_d, struct gsl_ts, tp); + + gsl_ts_resume(&ts->client->dev); + + return 0; +} + static void gsl_download_fw_work(struct work_struct *work) { struct gsl_ts *ts = dev_get_drvdata(&gsl_client->dev); @@ -981,7 +999,6 @@ static void gsl_resume_work(struct work_struct *work) enable_irq(ts->irq); } - static int gsl_ts_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -1097,6 +1114,10 @@ static int gsl_ts_probe(struct i2c_client *client, gpio_set_value(ts->irq_pin, 0); enable_irq(ts->irq); + ts->tp.tp_resume = gsl_ts_late_resume; + ts->tp.tp_suspend = gsl_ts_early_suspend; + tp_register_fb(&ts->tp); + return 0; //exit_set_irq_mode: @@ -1136,17 +1157,21 @@ static const struct i2c_device_id gsl_ts_id[] = { }; MODULE_DEVICE_TABLE(i2c, gsl_ts_id); +#if !defined(CONFIG_DRM_FBDEV_EMULATION) && defined(CONFIG_PM) static const struct dev_pm_ops gsl_pm_ops = { .suspend = gsl_ts_suspend, .resume = gsl_ts_resume, }; +#endif static struct i2c_driver gsl_ts_driver = { .driver = { .name = GSLX680_I2C_NAME, .owner = THIS_MODULE, .of_match_table = of_match_ptr(gsl_ts_ids), +#if !defined(CONFIG_DRM_FBDEV_EMULATION) && defined(CONFIG_PM) .pm = &gsl_pm_ops, +#endif }, .probe = gsl_ts_probe, .remove = gsl_ts_remove,