qtouch: process open call once during firmware upgrade
authormakarand.karvekar <makarand.karvekar@motorola.com>
Fri, 5 Nov 2010 03:59:55 +0000 (22:59 -0500)
committerBenoit Goby <benoit@android.com>
Fri, 5 Nov 2010 04:16:17 +0000 (21:16 -0700)
atomic flag process_open to process open call once.

Signed-off-by: makarand.karvekar <makarand.karvekar@motorola.com>
drivers/input/touchscreen/qtouch_obp_ts.c

index e8d2f5b4ab5b60e3b418950d2619f03b157ed7b8..7f110095b8a06444c2f4338796059f655c5f6576 100644 (file)
@@ -88,6 +88,7 @@ struct qtouch_ts_data {
        uint8_t                         ypos_lshift_msb;
 
        atomic_t                        irq_enabled;
+       atomic_t                        process_open;
        int                             status;
 
        uint8_t                         mode;
@@ -995,6 +996,9 @@ int qtouch_input_open(struct input_dev *input)
        int err;
        struct qtouch_ts_data *ts = input_get_drvdata(input);
 
+       if (!atomic_xchg(&ts->process_open, 0))
+               return 0;
+
        if (ts->touch_fw_image == NULL)
                goto finish_touch_upgrade;
 
@@ -1631,6 +1635,7 @@ static int qtouch_ts_probe(struct i2c_client *client,
        ts->x_delta = ts->pdata->x_delta;
        ts->y_delta = ts->pdata->y_delta;
        atomic_set(&ts->irq_enabled, 1);
+       atomic_set(&ts->process_open, 1);
        ts->status = 0xfe;
        ts->touch_fw_size = 0;
        ts->touch_fw_image = NULL;