summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/input/touchscreen/atmel_mxt_ts.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 31d28bc72b2..b55f5ed11f5 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -326,15 +326,15 @@ struct mxt_data {
u8 T100_reportid_max;
u16 T107_address;
- /* for fw update in bootloader */
- struct completion bl_completion;
-
/* for reset handling */
struct completion reset_completion;
/* for config update handling */
struct completion crc_completion;
+ /* for power up handling */
+ struct completion chg_completion;
+
/* Indicates whether device is in suspend */
bool suspended;
@@ -676,7 +676,7 @@ static int mxt_check_bootloader(struct mxt_data *data, struct mxt_flash *f)
* CHG assertion before reading the status byte.
* Once the status byte has been read, the line is deasserted.
*/
- ret = mxt_wait_for_completion(data, &data->bl_completion,
+ ret = mxt_wait_for_completion(data, &data->chg_completion,
MXT_FW_CHG_TIMEOUT);
if (ret) {
/*
@@ -1488,11 +1488,10 @@ static irqreturn_t mxt_interrupt(int irq, void *dev_id)
{
struct mxt_data *data = dev_id;
- if (data->in_bootloader) {
- /* bootloader state transition completion */
- complete(&data->bl_completion);
+ complete(&data->chg_completion);
+
+ if (data->in_bootloader)
return IRQ_HANDLED;
- }
if (!data->object_table)
return IRQ_HANDLED;
@@ -2236,9 +2235,9 @@ static void mxt_regulator_enable(struct mxt_data *data)
msleep(MXT_CHG_DELAY);
retry_wait:
- INIT_COMPLETION(data->bl_completion);
+ INIT_COMPLETION(data->chg_completion);
data->in_bootloader = true;
- error = mxt_wait_for_completion(data, &data->bl_completion,
+ error = mxt_wait_for_completion(data, &data->chg_completion,
MXT_POWERON_DELAY);
if (error == -EINTR)
goto retry_wait;
@@ -2986,7 +2985,7 @@ static int mxt_enter_bootloader(struct mxt_data *data)
enable_irq(data->irq);
}
- INIT_COMPLETION(data->bl_completion);
+ INIT_COMPLETION(data->chg_completion);
return 0;
}
@@ -3022,7 +3021,7 @@ static int mxt_load_fw(struct device *dev)
}
/* Wait for flash. */
- ret = mxt_wait_for_completion(data, &data->bl_completion,
+ ret = mxt_wait_for_completion(data, &data->chg_completion,
MXT_FW_RESET_TIME);
if (ret)
goto disable_irq;
@@ -3033,7 +3032,7 @@ static int mxt_load_fw(struct device *dev)
* the CHG line after bootloading has finished, so ignore potential
* errors.
*/
- mxt_wait_for_completion(data, &data->bl_completion, MXT_FW_RESET_TIME);
+ mxt_wait_for_completion(data, &data->chg_completion, MXT_FW_RESET_TIME);
data->in_bootloader = false;
disable_irq:
@@ -3496,9 +3495,9 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
data->pdata->cfg_name,
strlen(data->pdata->cfg_name));
- init_completion(&data->bl_completion);
init_completion(&data->reset_completion);
init_completion(&data->crc_completion);
+ init_completion(&data->chg_completion);
mutex_init(&data->debug_msg_lock);
error = request_threaded_irq(client->irq, NULL, mxt_interrupt,