From 36aaa54056c4f4e150f6ee0636610d9a68470a08 Mon Sep 17 00:00:00 2001
From: lin <lin@kickpi.com>
Date: Fri, 21 Mar 2025 02:07:15 +0000
Subject: [PATCH] fix(touchscreen) fixed the problem of gt9xx touch abnormality

---
 longan/kernel/linux-4.9/drivers/input/touchscreen/gt9xx/gt9xx.c |   42 +++++++++++++++++++++++-------------------
 1 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/longan/kernel/linux-4.9/drivers/input/touchscreen/gt9xx/gt9xx.c b/longan/kernel/linux-4.9/drivers/input/touchscreen/gt9xx/gt9xx.c
index 27d2068..9111b01 100755
--- a/longan/kernel/linux-4.9/drivers/input/touchscreen/gt9xx/gt9xx.c
+++ b/longan/kernel/linux-4.9/drivers/input/touchscreen/gt9xx/gt9xx.c
@@ -1087,17 +1087,19 @@
 static int goodix_ts_resume(struct device *dev);
 extern void gt9xx_resume_extern(void);
 extern void gt9xx_suspend_extern(void);
-struct goodix_ts_data *cur_ts;
+struct goodix_ts_data *cur_ts= NULL;
 
 void gt9xx_suspend_extern(void)
 {
 	// goodix_ts_suspend(config_info.dev);
-	
-	gtp_irq_disable(cur_ts);
-	cancel_work_sync(&goodix_resume_work);
-	flush_workqueue(goodix_resume_wq);
-	cancel_work_sync(&cur_ts->work);
-	flush_workqueue(goodix_wq);
+	if (cur_ts == NULL) {return;}
+	else {
+		gtp_irq_disable(cur_ts);
+		cancel_work_sync(&goodix_resume_work);
+		flush_workqueue(goodix_resume_wq);
+		cancel_work_sync(&cur_ts->work);
+		flush_workqueue(goodix_wq);
+	}
 
 }
 EXPORT_SYMBOL(gt9xx_suspend_extern);
@@ -1105,13 +1107,15 @@
 void gt9xx_resume_extern(void)
 {
 	// goodix_ts_resume(config_info.dev);
-	printk("%s goodix_ts_resume v1\n", goodix_ts_name);
-	__gpio_set_value(config_info.wakeup_gpio.gpio, 1);
-	input_set_power_enable(&(config_info.input_type), 1);
-	msleep(10);
-	// goodix_resume_events
-	queue_work(goodix_resume_wq, &goodix_resume_work);//gandy
-
+	if (cur_ts == NULL) {return;}
+	else {
+		printk("%s goodix_ts_resume v1\n", goodix_ts_name);
+		__gpio_set_value(config_info.wakeup_gpio.gpio, 1);
+		input_set_power_enable(&(config_info.input_type), 1);
+		msleep(10);
+		// goodix_resume_events
+		queue_work(goodix_resume_wq, &goodix_resume_work);//gandy
+	}
 }
 EXPORT_SYMBOL(gt9xx_resume_extern);
 
@@ -1579,11 +1583,11 @@
 		return ret;
 	}
 #else
-	//ret = of_property_read_u32(np, "ctp_screen_max_x", &screen_max_x);
-	//of_property_read_u32(np, "ctp_screen_max_y", &screen_max_y);
-	//of_property_read_u32(np, "ctp_revert_x_flag", &revert_x_flag);
-	//of_property_read_u32(np, "ctp_revert_y_flag", &revert_y_flag);
-	//of_property_read_u32(np, "ctp_exchange_x_y_flag", &exchange_x_y_flag);
+	ret = of_property_read_u32(np, "ctp_screen_max_x", &screen_max_x);
+	of_property_read_u32(np, "ctp_screen_max_y", &screen_max_y);
+	of_property_read_u32(np, "ctp_revert_x_flag", &revert_x_flag);
+	of_property_read_u32(np, "ctp_revert_y_flag", &revert_y_flag);
+	of_property_read_u32(np, "ctp_exchange_x_y_flag", &exchange_x_y_flag);
 #endif
 	sunxi_gpio_to_name(CTP_IRQ_NUMBER,irq_pin_name);
 	pr_err("gt %s, line:%d irq_pin_name = %s \n",__FUNCTION__, __LINE__, irq_pin_name);

--
Gitblit v1.6.2