summaryrefslogtreecommitdiff
path: root/drivers/misc/mpu3050/mpuirq.c
diff options
context:
space:
mode:
authorvsalve <vsalve@nvidia.com>2011-03-15 15:29:43 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:34 -0800
commitd0ef3a47f977409e09bdd787f48a2abb3c016ddf (patch)
tree6125cf4cbf4904c9b137daa46425d089b4a01668 /drivers/misc/mpu3050/mpuirq.c
parentce3ac927c70422baafcf9911d174e9e4f1919574 (diff)
misc: mpu3050: Invensense MPU code update v3.3.3
Update Invensense Motion Library (MPL) to production version v3.3.3. Previous version was engineering release and is not suitable for mass production. This version of the MPL most notably fixes problems with suspend/resume where touch screen would quit working during a suspend/resume cycle. Original-Change-Id: Ia33433a677862b3d1e31d410aac7176d7a381a8f Reviewed-on: http://git-master/r/22987 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: R8832ce6cbb6eaec0afb32a2265c55b45f7391cb3
Diffstat (limited to 'drivers/misc/mpu3050/mpuirq.c')
-rw-r--r--drivers/misc/mpu3050/mpuirq.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/drivers/misc/mpu3050/mpuirq.c b/drivers/misc/mpu3050/mpuirq.c
index b6f21856cf32..691e5bc5b052 100644
--- a/drivers/misc/mpu3050/mpuirq.c
+++ b/drivers/misc/mpu3050/mpuirq.c
@@ -61,7 +61,7 @@ struct mpuirq_dev_data {
};
static struct mpuirq_dev_data mpuirq_dev_data;
-static struct irq_data mpuirq_data;
+static struct mpuirq_data mpuirq_data;
static char *interface = MPUIRQ_NAME;
static void mpu_accel_data_work_fcn(struct work_struct *work);
@@ -206,23 +206,20 @@ static irqreturn_t mpuirq_handler(int irq, void *dev_id)
/* wake up (unblock) for reading data from userspace */
/* and ignore first interrupt generated in module init */
- if (mpuirq_data.interruptcount > 1) {
- mpuirq_dev_data.data_ready = 1;
-
- do_gettimeofday(&irqtime);
- mpuirq_data.irqtime = (((long long) irqtime.tv_sec) << 32);
- mpuirq_data.irqtime += irqtime.tv_usec;
-
- if ((mpuirq_dev_data.accel_divider >= 0) &&
- (0 ==
- (mycount % (mpuirq_dev_data.accel_divider + 1)))) {
- schedule_work((struct work_struct
- *) (&mpuirq_dev_data));
- }
+ mpuirq_dev_data.data_ready = 1;
+
+ do_gettimeofday(&irqtime);
+ mpuirq_data.irqtime = (((long long) irqtime.tv_sec) << 32);
+ mpuirq_data.irqtime += irqtime.tv_usec;
- wake_up_interruptible(&mpuirq_wait);
+ if ((mpuirq_dev_data.accel_divider >= 0) &&
+ (0 == (mycount % (mpuirq_dev_data.accel_divider + 1)))) {
+ schedule_work((struct work_struct
+ *) (&mpuirq_dev_data));
}
+ wake_up_interruptible(&mpuirq_wait);
+
return IRQ_HANDLED;
}