diff options
author | Yen-Chao Chen <davidycchen@google.com> | 2023-03-29 14:35:51 +0800 |
---|---|---|
committer | Yen-Chao Chen <davidycchen@google.com> | 2023-03-29 15:50:45 +0800 |
commit | b0daec73af9d8c9acbc7ad51833f1cebf8e9b4aa (patch) | |
tree | ddb9b8ebccc953125a235688a83739e7baca7455 | |
parent | 9ce883f2336406ab653308f53db3a9522c35cd99 (diff) | |
download | synaptics_touch-android-gs-lynx-5.10-u-qpr1-beta2.tar.gz |
synaptics: request interrupt at the later stage of probe functionandroid-u-qpr2-beta-1_r0.6android-u-qpr2-beta-1_r0.5android-u-qpr2-beta-1_r0.4android-u-qpr2-beta-1_r0.3android-u-qpr2-beta-1_r0.2android-u-qpr2-beta-1_r0.1android-u-qpr1-beta-2_r0.7android-u-qpr1-beta-2_r0.5android-u-qpr1-beta-2_r0.4android-u-qpr1-beta-2_r0.3android-u-qpr1-beta-2_r0.2android-u-qpr1-beta-2_r0.1android-u-qpr1-beta-2.2_r0.6android-u-qpr1-beta-2.2_r0.5android-u-qpr1-beta-2.2_r0.4android-u-qpr1-beta-2.2_r0.3android-u-qpr1-beta-2.2_r0.2android-u-qpr1-beta-2.2_r0.1android-u-qpr1-beta-2.1_r0.7android-u-qpr1-beta-2.1_r0.5android-u-qpr1-beta-2.1_r0.4android-u-qpr1-beta-2.1_r0.3android-u-qpr1-beta-2.1_r0.2android-u-qpr1-beta-2.1_r0.1android-u-qpr1-beta-1_r0.7android-u-qpr1-beta-1_r0.5android-u-qpr1-beta-1_r0.4android-u-qpr1-beta-1_r0.3android-u-qpr1-beta-1_r0.2android-u-qpr1-beta-1_r0.1android-u-beta-5.3_r0.7android-u-beta-5.3_r0.5android-u-beta-5.3_r0.4android-u-beta-5.3_r0.2android-u-beta-5.3_r0.1android-u-beta-4_r0.7android-u-beta-4_r0.5android-u-beta-4_r0.4android-u-beta-4_r0.3android-u-beta-4_r0.2android-u-beta-4_r0.1android-u-beta-3_r0.3android-u-beta-3_r0.2android-u-beta-2_r0.4android-u-beta-2_r0.3android-u-beta-2_r0.2android-u-beta-2.1_r0.4android-u-beta-2.1_r0.3android-u-beta-2.1_r0.2android-14.0.0_r0.7android-14.0.0_r0.6android-14.0.0_r0.5android-14.0.0_r0.44android-14.0.0_r0.43android-14.0.0_r0.42android-14.0.0_r0.41android-14.0.0_r0.40android-14.0.0_r0.4android-14.0.0_r0.39android-14.0.0_r0.37android-14.0.0_r0.36android-14.0.0_r0.35android-14.0.0_r0.34android-14.0.0_r0.33android-14.0.0_r0.31android-14.0.0_r0.3android-14.0.0_r0.25android-14.0.0_r0.23android-14.0.0_r0.22android-14.0.0_r0.21android-14.0.0_r0.2android-14.0.0_r0.19android-14.0.0_r0.17android-14.0.0_r0.16android-14.0.0_r0.15android-14.0.0_r0.14android-14.0.0_r0.13android-14.0.0_r0.11android-gs-tangorpro-android14-releaseandroid-gs-tangorpro-5.10-u-qpr1-beta2android-gs-tangorpro-5.10-u-beta5.3android-gs-tangorpro-5.10-u-beta4android-gs-tangorpro-5.10-android14-qpr1-betaandroid-gs-tangorpro-5.10-android14-qpr1android-gs-tangorpro-5.10-android14android-gs-raviole-android14-releaseandroid-gs-raviole-5.10-u-qpr1-beta2android-gs-raviole-5.10-u-beta5.3android-gs-raviole-5.10-u-beta4android-gs-raviole-5.10-u-beta3android-gs-raviole-5.10-u-beta2android-gs-raviole-5.10-android14-qpr1-betaandroid-gs-raviole-5.10-android14-qpr1android-gs-raviole-5.10-android14android-gs-pantah-android14-releaseandroid-gs-pantah-5.10-u-qpr1-beta2android-gs-pantah-5.10-u-beta5.3android-gs-pantah-5.10-u-beta4android-gs-pantah-5.10-u-beta2android-gs-pantah-5.10-android14-qpr1-betaandroid-gs-pantah-5.10-android14-qpr1android-gs-pantah-5.10-android14android-gs-lynx-android14-releaseandroid-gs-lynx-5.10-u-qpr1-beta2android-gs-lynx-5.10-u-beta4android-gs-lynx-5.10-android14-qpr1-betaandroid-gs-lynx-5.10-android14-qpr1android-gs-lynx-5.10-android14android-gs-felix-android14-releaseandroid-gs-felix-5.10-u-qpr1-beta2android-gs-felix-5.10-u-beta5.3android-gs-felix-5.10-u-beta4android-gs-felix-5.10-android14-qpr1-betaandroid-gs-felix-5.10-android14-qpr1android-gs-felix-5.10-android14android-gs-bluejay-android14-releaseandroid-gs-bluejay-5.10-u-qpr1-beta2android-gs-bluejay-5.10-u-beta5.3android-gs-bluejay-5.10-u-beta4android-gs-bluejay-5.10-u-beta3android-gs-bluejay-5.10-u-beta2android-gs-bluejay-5.10-android14-qpr1-betaandroid-gs-bluejay-5.10-android14-qpr1android-gs-bluejay-5.10-android14
Make sure everything has been setup before request interrupt.
Bug: 271332558
Test: touch works fine.
Change-Id: I9ad3c4dc9f87154472f37e5aee6223ce7f841e34
Signed-off-by: Yen-Chao Chen <davidycchen@google.com>
-rw-r--r-- | syna_tcm2.c | 81 |
1 files changed, 42 insertions, 39 deletions
diff --git a/syna_tcm2.c b/syna_tcm2.c index 5c6e1ea..a594bac 100644 --- a/syna_tcm2.c +++ b/syna_tcm2.c @@ -2872,16 +2872,6 @@ static int syna_dev_disconnect(struct syna_tcm *tcm) return 0; } -#ifdef STARTUP_REFLASH - cancel_delayed_work_sync(&tcm->reflash_work); - flush_workqueue(tcm->reflash_workqueue); - destroy_workqueue(tcm->reflash_workqueue); -#endif - - /* free interrupt line */ - if (hw_if->bdata_attn.irq_id) - syna_dev_release_irq(tcm); - /* unregister input device */ syna_dev_release_input_device(tcm); @@ -2982,26 +2972,6 @@ static int syna_dev_connect(struct syna_tcm *tcm) break; } - /* register the interrupt handler */ - retval = syna_dev_request_irq(tcm); - if (retval < 0) { - LOGE("Fail to request the interrupt line\n"); - goto err_request_irq; - } - - /* for the reference, - * create a delayed work to perform fw update during the startup time - */ -#ifdef STARTUP_REFLASH - tcm->force_reflash = false; - tcm->reflash_count = 0; - tcm->reflash_workqueue = - create_singlethread_workqueue("syna_reflash"); - INIT_DELAYED_WORK(&tcm->reflash_work, syna_dev_reflash_startup_work); - queue_delayed_work(tcm->reflash_workqueue, &tcm->reflash_work, - msecs_to_jiffies(STARTUP_REFLASH_DELAY_TIME_MS)); -#endif - tcm->pwr_state = PWR_ON; tcm->is_connected = true; tcm->bus_refmask = SYNA_BUS_REF_SCREEN_ON; @@ -3015,10 +2985,6 @@ static int syna_dev_connect(struct syna_tcm *tcm) return 0; -err_request_irq: - /* unregister input device */ - syna_dev_release_input_device(tcm); - err_setup_input_dev: err_detect_dev: if (hw_if->ops_power_on) @@ -3240,6 +3206,29 @@ static int syna_dev_probe(struct platform_device *pdev) tcm->touch_report_rate_config = CONFIG_HIGH_REPORT_RATE; INIT_DELAYED_WORK(&tcm->set_report_rate_work, syna_set_report_rate_work); + retval = syna_dev_request_irq(tcm); + if (retval < 0) { + LOGE("Fail to request the interrupt line\n"); + goto err_request_irq; + } + + tcm->enable_fw_grip = 0x00; + tcm->enable_fw_palm = 0x01; + syna_dev_restore_feature_setting(tcm, RESP_IN_POLLING); + + /* for the reference, + * create a delayed work to perform fw update during the startup time + */ +#ifdef STARTUP_REFLASH + tcm->force_reflash = false; + tcm->reflash_count = 0; + tcm->reflash_workqueue = + create_singlethread_workqueue("syna_reflash"); + INIT_DELAYED_WORK(&tcm->reflash_work, syna_dev_reflash_startup_work); + queue_delayed_work(tcm->reflash_workqueue, &tcm->reflash_work, + msecs_to_jiffies(STARTUP_REFLASH_DELAY_TIME_MS)); +#endif + #ifdef HAS_SYSFS_INTERFACE /* create the device file and register to char device classes */ retval = syna_cdev_create_sysfs(tcm, pdev); @@ -3250,10 +3239,6 @@ static int syna_dev_probe(struct platform_device *pdev) } #endif - tcm->enable_fw_grip = 0x00; - tcm->enable_fw_palm = 0x01; - syna_dev_restore_feature_setting(tcm, RESP_IN_POLLING); - #if defined(USE_DRM_BRIDGE) retval = syna_register_panel_bridge(tcm); #elif defined(ENABLE_DISP_NOTIFIER) @@ -3299,9 +3284,17 @@ static int syna_dev_probe(struct platform_device *pdev) #ifdef HAS_SYSFS_INTERFACE err_create_cdev: - syna_tcm_remove_device(tcm->tcm_dev); +#ifdef STARTUP_REFLASH + cancel_delayed_work_sync(&tcm->reflash_work); + flush_workqueue(tcm->reflash_workqueue); + destroy_workqueue(tcm->reflash_workqueue); #endif + /* free interrupt line */ + if (tcm->hw_if->bdata_attn.irq_id) + syna_dev_release_irq(tcm); +#endif +err_request_irq: #if defined(TCM_CONNECT_IN_PROBE) tcm->dev_disconnect(tcm); @@ -3384,6 +3377,16 @@ static int syna_dev_remove(struct platform_device *pdev) syna_cdev_remove_sysfs(tcm); #endif +#ifdef STARTUP_REFLASH + cancel_delayed_work_sync(&tcm->reflash_work); + flush_workqueue(tcm->reflash_workqueue); + destroy_workqueue(tcm->reflash_workqueue); +#endif + + /* free interrupt line */ + if (tcm->hw_if->bdata_attn.irq_id) + syna_dev_release_irq(tcm); + /* check the connection statusm, and do disconnection */ if (tcm->dev_disconnect(tcm) < 0) LOGE("Fail to do device disconnection\n"); |