From: liuji <liuji@rock-chips.com> Date: Wed, 10 Aug 2011 09:40:48 +0000 (+0800) Subject: fix mpu issues on 1495c383330d098039a56fb0aa3f765bd3a21b6e X-Git-Tag: firefly_0821_release~9772^2~20^2~17 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=823f1142ef4989b2dec6907b5a7129f76e1776f5;p=firefly-linux-kernel-4.4.55.git fix mpu issues on 1495c383330d098039a56fb0aa3f765bd3a21b6e --- diff --git a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c index 06a4a62e2b9b..f4e883fa9fee 100755 --- a/arch/arm/mach-rk29/board-rk29-ddr3sdk.c +++ b/arch/arm/mach-rk29/board-rk29-ddr3sdk.c @@ -492,7 +492,7 @@ static int mma8452_init_platform_hw(void) static struct mma8452_platform_data mma8452_info = { .model= 8452, - .swap_xy = 1, + .swap_xy = 0, .init_platform_hw= mma8452_init_platform_hw, }; diff --git a/arch/arm/mach-rk29/board-rk29sdk.c b/arch/arm/mach-rk29/board-rk29sdk.c index 302d76384b2f..064441f203b5 100755 --- a/arch/arm/mach-rk29/board-rk29sdk.c +++ b/arch/arm/mach-rk29/board-rk29sdk.c @@ -497,7 +497,7 @@ static int mma8452_init_platform_hw(void) static struct mma8452_platform_data mma8452_info = { .model= 8452, - .swap_xy = 1, + .swap_xy = 0, .init_platform_hw= mma8452_init_platform_hw, }; diff --git a/drivers/misc/mpu3050/accel/mma845x.c b/drivers/misc/mpu3050/accel/mma845x.c index 27150ad86994..648cddbaa935 100755 --- a/drivers/misc/mpu3050/accel/mma845x.c +++ b/drivers/misc/mpu3050/accel/mma845x.c @@ -35,11 +35,11 @@ #include <linux/module.h> #endif -#include <stdlib.h> +//#include <stdlib.h> #include "mpu.h" #include "mlsl.h" #include "mlos.h" -#include <string.h> +//#include <string.h> #include <log.h> #undef MPL_LOG_TAG diff --git a/drivers/misc/mpu3050/mpuirq.c b/drivers/misc/mpu3050/mpuirq.c index ce1ad409cbf4..1aaaa685b827 100755 --- a/drivers/misc/mpu3050/mpuirq.c +++ b/drivers/misc/mpu3050/mpuirq.c @@ -29,6 +29,8 @@ #include <linux/i2c-dev.h> #include <linux/workqueue.h> #include <linux/poll.h> +#include <linux/gpio.h> +#include <mach/gpio.h> #include <linux/errno.h> #include <linux/fs.h> @@ -72,6 +74,9 @@ static int mpuirq_open(struct inode *inode, struct file *file) "%s current->pid %d\n", __func__, current->pid); mpuirq_dev_data.pid = current->pid; file->private_data = &mpuirq_dev_data; + /* we could do some checking on the flags supplied by "open" */ + /* i.e. O_NONBLOCK */ + /* -> set some flag to disable interruptible_sleep_on in mpuirq_read */ return 0; } @@ -274,10 +279,24 @@ int mpuirq_init(struct i2c_client *mpu_client) flags = IRQF_TRIGGER_FALLING; else flags = IRQF_TRIGGER_RISING; - - res = - request_irq(mpuirq_dev_data.irq, mpuirq_handler, flags, - interface, &mpuirq_dev_data.irq); + /* mpu irq register xxm*/ + res = gpio_request(mpuirq_dev_data.irq, "mpu3050_int"); + if(res) + { + printk("failed to request mpu3050_int GPIO %d\n", + gpio_to_irq(mpuirq_dev_data.irq)); + return res; + } + res = gpio_direction_input(mpuirq_dev_data.irq); + if(res) + { + printk("failed to set mpu3050_int GPIO input\n"); + return res; + } + printk("gpio_to_irq(mpuirq_dev_data.irq) == %d \r\n", + gpio_to_irq(mpuirq_dev_data.irq)); + res =request_irq(gpio_to_irq(mpuirq_dev_data.irq), mpuirq_handler, flags, + interface,&mpuirq_dev_data.irq); if (res) { dev_err(&mpu_client->adapter->dev, "myirqtest: cannot register IRQ %d\n", diff --git a/drivers/misc/mpu3050/slaveirq.c b/drivers/misc/mpu3050/slaveirq.c index a3c7bfec4b4b..0276ddb173fc 100755 --- a/drivers/misc/mpu3050/slaveirq.c +++ b/drivers/misc/mpu3050/slaveirq.c @@ -28,6 +28,8 @@ #include <linux/i2c.h> #include <linux/i2c-dev.h> #include <linux/poll.h> +#include <linux/gpio.h> +#include <mach/gpio.h> #include <linux/errno.h> #include <linux/fs.h> @@ -225,10 +227,25 @@ int slaveirq_init(struct i2c_adapter *slave_adapter, data->data_ready = 0; data->timeout = 0; + /* mpu irq register xxm*/ + res = gpio_request(data->irq, name); + if(res) + { + printk("failed to request %s GPIO %d\n", + name,data->irq); + return res; + } + res = gpio_direction_input(data->irq); + if(res) + { + printk("failed to set %s GPIO input\n",name); + return res; + } + printk("%s registing irq == %d \r\n",name,gpio_to_irq(data->irq)); + //gpio_pull_updown(data->irq, GPIOPullUp); + //gpio_set_value(data->irq,GPIO_HIGH); init_waitqueue_head(&data->slaveirq_wait); - - res = request_irq(data->irq, slaveirq_handler, IRQF_TRIGGER_RISING, - data->dev.name, data); + res = request_irq(gpio_to_irq(data->irq), slaveirq_handler, IRQF_TRIGGER_FALLING,data->dev.name, data); if (res) { dev_err(&slave_adapter->dev,