diff options
| author | vsalve <vsalve@nvidia.com> | 2011-03-15 15:29:43 +0530 |
|---|---|---|
| committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:46:34 -0800 |
| commit | d0ef3a47f977409e09bdd787f48a2abb3c016ddf (patch) | |
| tree | 6125cf4cbf4904c9b137daa46425d089b4a01668 /drivers/misc/mpu3050/mpuirq.c | |
| parent | ce3ac927c70422baafcf9911d174e9e4f1919574 (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.c | 27 |
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; } |
