summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Wu <quic_zwy@quicinc.com>2022-12-15 16:12:18 +0800
committerYu Wu <quic_zwy@quicinc.com>2022-12-15 17:57:20 +0800
commitf650cebc8149ce698ad5545983485d049d1f0b76 (patch)
tree59f3bef6d8b1155bae88c619d7e2c8a8b3627293
parente74f386766a8ced6147a27641c88de940fbadabf (diff)
downloadtouch-f650cebc8149ce698ad5545983485d049d1f0b76.tar.gz
touch: goodix: move qts initialization to after touch power on
qts initialization will contain an event notifier, sometimes the qupv engine init fail and causes goodix_ts_power_on failure, it leads to touch probe function failure. In this case there is no need to register this notifier, otherwise the resume function may access resource like irqs, which are not ready because probe failure, it may cause crash. Change-Id: I65bf39ec3ca3e2ea92eb84366b75a98ba43b8816 Signed-off-by: Yu Wu <quic_zwy@quicinc.com>
-rw-r--r--goodix_berlin_driver/goodix_ts_core.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/goodix_berlin_driver/goodix_ts_core.c b/goodix_berlin_driver/goodix_ts_core.c
index e61fe7e..a3ffc05 100644
--- a/goodix_berlin_driver/goodix_ts_core.c
+++ b/goodix_berlin_driver/goodix_ts_core.c
@@ -2509,18 +2509,6 @@ static int goodix_ts_probe(struct platform_device *pdev)
}
core_data->bus = bus_interface;
- qts_en = of_property_read_bool(node, "goodix,qts_en");
- if (qts_en) {
- mutex_init(&core_data->tui_transition_lock);
- goodix_ts_fill_qts_vendor_data(&qts_vendor_data, core_data);
-
- ret = qts_client_register(qts_vendor_data);
- if (ret) {
- pr_err("qts client register failed, rc %d\n", ret);
- goto err_out;
- }
- core_data->qts_en = qts_en;
- }
if (IS_ENABLED(CONFIG_OF) && bus_interface->dev->of_node) {
/* parse devicetree property */
@@ -2575,6 +2563,19 @@ static int goodix_ts_probe(struct platform_device *pdev)
goto err_out;
}
+ qts_en = of_property_read_bool(node, "goodix,qts_en");
+ if (qts_en) {
+ mutex_init(&core_data->tui_transition_lock);
+ goodix_ts_fill_qts_vendor_data(&qts_vendor_data, core_data);
+
+ ret = qts_client_register(qts_vendor_data);
+ if (ret) {
+ pr_err("qts client register failed, rc %d\n", ret);
+ goto err_out;
+ }
+ core_data->qts_en = qts_en;
+ }
+
#ifdef CONFIG_ARCH_QTI_VM
skip_to_power_gpio_setup:
#endif