|
@@ -0,0 +1,27 @@
|
|
|
|
+diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
|
|
+index 2979cf3..b1de293 100644
|
|
|
|
+--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
|
|
++++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
|
|
+@@ -4065,6 +4065,7 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|
|
|
+ {
|
|
|
|
+ struct mxt_data *data;
|
|
|
|
+ int error;
|
|
|
|
++ int mxt_initialize_loops = 3; /* loopcount for mxt_initialize */
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Ignore devices that do not have device properties attached to
|
|
|
|
+@@ -4147,6 +4148,14 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ error = mxt_initialize(data);
|
|
|
|
++ while (error && mxt_initialize_loops) {
|
|
|
|
++ dev_info(&client->dev, "Retry mxt_initialize %d !!!\n", mxt_initialize_loops);
|
|
|
|
++ msleep(100);
|
|
|
|
++ error = mxt_initialize(data);
|
|
|
|
++ --mxt_initialize_loops;
|
|
|
|
++ }
|
|
|
|
++
|
|
|
|
++
|
|
|
|
+ if (error)
|
|
|
|
+ return error;
|
|
|
|
+
|