diff --git a/drivers/input/touchscreen/cyttsp5_cs445a/cyttsp5_core.c b/drivers/input/touchscreen/cyttsp5_cs445a/cyttsp5_core.c
old mode 100644
new mode 100755
index 0a73be33a460185ca81bae20792c2281f2dde25b..1f5c8642a95dff31f6a8cf49c20e16e613ac425a
--- a/drivers/input/touchscreen/cyttsp5_cs445a/cyttsp5_core.c
+++ b/drivers/input/touchscreen/cyttsp5_cs445a/cyttsp5_core.c
@@ -51,6 +51,8 @@ extern struct dsm_client *tp_cyp_dclient;
 extern ssize_t cyttsp5_dsm_record_basic_err_info(struct device *dev);
 extern int cyttsp5_tp_report_dsm_err(struct device *dev, int type, int err_numb);
 #endif/*CONFIG_HUAWEI_DSM*/
+static int _fast_startup(struct cyttsp5_core_data *cd);
+
 struct device *gdev = NULL;
 struct device *cyttsp5_core_dev = NULL;
 struct cyttsp5_hid_field {
@@ -4309,7 +4311,13 @@ static int cyttsp5_core_wake_device_from_easy_wakeup_(
 			cd->easy_wakeup_gesture, &status);
 	if (rc || status == 1){
 		tp_log_err("%s: failed, rc=%d, status=%d\n", __func__, rc, status);
-		return -EBUSY;
+		rc = cyttsp5_reset_and_wait(cd);
+		if (rc < 0) {
+			dev_err(cd->dev, "%s: Error on h/w reset r=%d\n",__func__, rc);
+			return rc;
+		}
+		_fast_startup(cd);
+		return 0;
 	}
 
 	if (device_may_wakeup(cd->dev)) {