From 8a19f9b3768ccc16e0e69e1417640ec9e95ef88f Mon Sep 17 00:00:00 2001 From: haojl2 Date: Tue, 19 Mar 2019 11:40:48 +0800 Subject: [PATCH] input: ets_fpc_mmi: fix rmmod issue When rmmod called, Clear input device regisgered for navigation function. Remove navigation sys entries. Change-Id: I4f101c6f08a81f8c53206edfe5883480ed28cc42 Signed-off-by: haojl2 Reviewed-on: https://gerrit.mot.com/1339672 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jianqi Yang Submit-Approved: Jira Key Reviewed-on: https://gerrit.mot.com/1367087 --- drivers/input/misc/ets_fps_mmi/ets_fps.c | 3 +++ drivers/input/misc/ets_fps_mmi/ets_navi_input.c | 12 ++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/input/misc/ets_fps_mmi/ets_fps.c b/drivers/input/misc/ets_fps_mmi/ets_fps.c index aa6e4a8a7bda..c5be30271c7d 100644 --- a/drivers/input/misc/ets_fps_mmi/ets_fps.c +++ b/drivers/input/misc/ets_fps_mmi/ets_fps.c @@ -903,8 +903,11 @@ static int etspi_create_device(struct etspi_data *etspi, bool create) { return 0; } + +#if EGIS_NAVI_INPUT uinput_egis_destroy(etspi); sysfs_egis_destroy(etspi); +#endif mutex_lock(&device_list_lock); list_del(&etspi->device_entry); mutex_unlock(&device_list_lock); diff --git a/drivers/input/misc/ets_fps_mmi/ets_navi_input.c b/drivers/input/misc/ets_fps_mmi/ets_navi_input.c index a66dd8f797d3..b9f6f5e4b60f 100644 --- a/drivers/input/misc/ets_fps_mmi/ets_navi_input.c +++ b/drivers/input/misc/ets_fps_mmi/ets_navi_input.c @@ -725,12 +725,19 @@ void uinput_egis_destroy(struct etspi_data *etspi) DEBUG_PRINT("Egis navigation driver, %s\n", __func__); + g_DoubleClickJiffies = 0; + g_SingleClickJiffies = 0; + + if (etspi->input_dev != NULL) { + input_unregister_device(etspi->input_dev); + input_free_device(etspi->input_dev); + etspi->input_dev = NULL; + } + #if ENABLE_TRANSLATED_LONG_TOUCH del_timer(&long_touch_timer); #endif - if (etspi->input_dev != NULL) - input_free_device(etspi->input_dev); if (nav_kthread) kthread_stop(nav_kthread); @@ -771,6 +778,7 @@ void sysfs_egis_destroy(struct etspi_data *etspi) DEBUG_PRINT("Egis navigation driver, %s\n", __func__); if (etspi->spi) { + sysfs_remove_group(&etspi->spi->dev.kobj, &attribute_group); platform_device_del(etspi->spi); platform_device_put(etspi->spi); }