[Armadeus-commitlog] armadeus branch, master, updated. release-3.3-192-g3ae0fa6
Brought to you by:
sszy
|
From: Fabien M <fa...@us...> - 2010-12-30 09:15:27
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "armadeus".
The branch, master has been updated
via 3ae0fa607fc883713ec34f0bd65dd0e61c18a13d (commit)
via a1de2a89faf851952ea179ae2183a93c7aa88787 (commit)
via 6189cb96efadda889335d99004c83405ee835021 (commit)
via 91b91f222f254addc3198493627d9479ee737639 (commit)
from d0a58cec1516ad347ee9200292cb0bd40e9dd83d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3ae0fa607fc883713ec34f0bd65dd0e61c18a13d
Merge: a1de2a89faf851952ea179ae2183a93c7aa88787 d0a58cec1516ad347ee9200292cb0bd40e9dd83d
Author: Fabien Marteau <fab...@ar...>
Date: Thu Dec 30 10:14:41 2010 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit a1de2a89faf851952ea179ae2183a93c7aa88787
Author: Fabien Marteau <fab...@ar...>
Date: Thu Dec 30 10:13:37 2010 +0100
[linux][as5011] switch to threaded irq
commit 6189cb96efadda889335d99004c83405ee835021
Author: Fabien Marteau <fab...@ar...>
Date: Thu Dec 30 10:00:30 2010 +0100
[linux] Fix I2C_M_NOSTART bug in i2c-imx driver
commit 91b91f222f254addc3198493627d9479ee737639
Author: Fabien Marteau <fab...@ar...>
Date: Tue Dec 14 18:12:53 2010 +0100
[linux] Fix mangling capability bug in i2c-imx driver
-----------------------------------------------------------------------
Summary of changes:
...ing_mangling_capability_on_i2c_imx_driver.patch | 164 ++++++++++++++------
...us-joystick-adding_as5011_joystick_driver.patch | 131 ++++++++--------
2 files changed, 181 insertions(+), 114 deletions(-)
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch
index 2b5c280..bec8298 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch
@@ -1,69 +1,127 @@
Index: linux-2.6.36/drivers/i2c/busses/i2c-imx.c
===================================================================
--- linux-2.6.36.orig/drivers/i2c/busses/i2c-imx.c 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/i2c/busses/i2c-imx.c 2010-12-13 11:34:17.000000000 +0100
-@@ -304,12 +304,15 @@
- __func__, msgs->addr << 1);
++++ linux-2.6.36/drivers/i2c/busses/i2c-imx.c 2010-12-29 18:36:16.000000000 +0100
+@@ -34,7 +34,6 @@
- /* write slave address */
+ /** Includes *******************************************************************
+ *******************************************************************************/
+-
+ #include <linux/init.h>
+ #include <linux/kernel.h>
+ #include <linux/module.h>
+@@ -214,10 +213,12 @@
+ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
+ {
+ unsigned int temp = 0;
++ int ret;
++
+
+ if (!i2c_imx->stopped) {
+ /* Stop I2C transaction */
+- dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
++ dev_dbg(&i2c_imx->adapter.dev, "<%s>***\n", __func__);
+ temp = readb(i2c_imx->base + IMX_I2C_I2CR);
+ temp &= ~(I2CR_MSTA | I2CR_MTX);
+ writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
+@@ -231,7 +232,9 @@
+ }
+
+ if (!i2c_imx->stopped) {
+- i2c_imx_bus_busy(i2c_imx, 0);
++
++ ret = i2c_imx_bus_busy(i2c_imx, 0);
++
+ i2c_imx->stopped = 1;
+ }
+
+@@ -300,17 +303,27 @@
+ {
+ int i, result;
+
+- dev_dbg(&i2c_imx->adapter.dev, "<%s> write slave address: addr=0x%x\n",
+- __func__, msgs->addr << 1);
++ if ( (msgs->flags & I2C_M_NOSTART) == 0) {
++ /* write slave address */
++ if (msgs->flags & I2C_M_REV_DIR_ADDR) {
++ dev_dbg(&i2c_imx->adapter.dev,
++ "<%s> write slave address: addr=0x%x\n",
++ __func__, msgs->addr << 1 | 0x01);
++ writeb((msgs->addr << 1) | 0x01, i2c_imx->base + IMX_I2C_I2DR);
++ } else {
++ dev_dbg(&i2c_imx->adapter.dev,
++ "<%s> write slave address: addr=0x%x\n",
++ __func__, msgs->addr << 1);
++ writeb((msgs->addr << 1), i2c_imx->base + IMX_I2C_I2DR);
++ }
++ result = i2c_imx_trx_complete(i2c_imx);
++ if (result)
++ return result;
++ result = i2c_imx_acked(i2c_imx);
++ if (result != 0)
++ return result;
++ }
+
+- /* write slave address */
- writeb(msgs->addr << 1, i2c_imx->base + IMX_I2C_I2DR);
-+ if (msgs->flags & I2C_M_REV_DIR_ADDR)
-+ writeb((msgs->addr << 1) | 0x01, i2c_imx->base + IMX_I2C_I2DR);
-+ else
-+ writeb((msgs->addr << 1), i2c_imx->base + IMX_I2C_I2DR);
- result = i2c_imx_trx_complete(i2c_imx);
- if (result)
- return result;
- result = i2c_imx_acked(i2c_imx);
+- result = i2c_imx_trx_complete(i2c_imx);
- if (result)
-+ if ( (result != 0) && ((msgs[0].flags & I2C_M_IGNORE_NAK) == 0))
- return result;
+- return result;
+- result = i2c_imx_acked(i2c_imx);
+- if (result)
+- return result;
dev_dbg(&i2c_imx->adapter.dev, "<%s> write data\n", __func__);
-@@ -323,7 +326,7 @@
+ /* write data */
+@@ -323,7 +336,7 @@
if (result)
return result;
result = i2c_imx_acked(i2c_imx);
- if (result)
-+ if ( (result != 0) && ((msgs[i].flags & I2C_M_IGNORE_NAK) == 0))
++ if ( (result != 0) && ((msgs[0].flags & I2C_M_IGNORE_NAK) == 0))
return result;
}
return 0;
-@@ -339,12 +342,15 @@
- __func__, (msgs->addr << 1) | 0x01);
+@@ -334,18 +347,26 @@
+ int i, result;
+ unsigned int temp;
- /* write slave address */
+- dev_dbg(&i2c_imx->adapter.dev,
+- "<%s> write slave address: addr=0x%x\n",
+- __func__, (msgs->addr << 1) | 0x01);
+-
+- /* write slave address */
- writeb((msgs->addr << 1) | 0x01, i2c_imx->base + IMX_I2C_I2DR);
-+ if (msgs->flags & I2C_M_REV_DIR_ADDR)
-+ writeb((msgs->addr << 1), i2c_imx->base + IMX_I2C_I2DR);
-+ else
-+ writeb((msgs->addr << 1) | 0x01, i2c_imx->base + IMX_I2C_I2DR);
- result = i2c_imx_trx_complete(i2c_imx);
- if (result)
- return result;
- result = i2c_imx_acked(i2c_imx);
+- result = i2c_imx_trx_complete(i2c_imx);
+- if (result)
+- return result;
+- result = i2c_imx_acked(i2c_imx);
- if (result)
-+ if ( (result != 0) && ((msgs[0].flags & I2C_M_IGNORE_NAK) == 0))
- return result;
+- return result;
++ if ( (msgs->flags & I2C_M_NOSTART) == 0) {
++ /* write slave address */
++ if (msgs->flags & I2C_M_REV_DIR_ADDR) {
++ dev_dbg(&i2c_imx->adapter.dev,
++ "<%s> write slave address: addr=0x%x\n",
++ __func__, (msgs->addr << 1));
++ writeb((msgs->addr << 1), i2c_imx->base + IMX_I2C_I2DR);
++ } else {
++ dev_dbg(&i2c_imx->adapter.dev,
++ "<%s> write slave address: addr=0x%x\n",
++ __func__, (msgs->addr << 1) | 0x01);
++ writeb((msgs->addr << 1) | 0x01, i2c_imx->base + IMX_I2C_I2DR);
++ }
++ result = i2c_imx_trx_complete(i2c_imx);
++ if (result)
++ return result;
++ result = i2c_imx_acked(i2c_imx);
++ if (result != 0)
++ return result;
++ }
dev_dbg(&i2c_imx->adapter.dev, "<%s> setup bus\n", __func__);
-@@ -354,6 +360,7 @@
- temp &= ~I2CR_MTX;
- if (msgs->len - 1)
- temp &= ~I2CR_TXAK;
-+ if (msgs->flags & I2C_M_NO_RD_ACK) temp |= I2CR_TXAK;
- writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
- readb(i2c_imx->base + IMX_I2C_I2DR); /* dummy read */
-@@ -371,6 +378,7 @@
- "<%s> clear MSTA\n", __func__);
- temp = readb(i2c_imx->base + IMX_I2C_I2CR);
- temp &= ~(I2CR_MSTA | I2CR_MTX);
-+ if (msgs->flags & I2C_M_NO_RD_ACK) temp |= I2CR_TXAK;
- writeb(temp, i2c_imx->base + IMX_I2C_I2CR);
- i2c_imx_bus_busy(i2c_imx, 0);
- i2c_imx->stopped = 1;
-@@ -405,7 +413,7 @@
+@@ -405,7 +426,7 @@
/* read/write data */
for (i = 0; i < num; i++) {
@@ -72,7 +130,21 @@ Index: linux-2.6.36/drivers/i2c/busses/i2c-imx.c
dev_dbg(&i2c_imx->adapter.dev,
"<%s> repeated start\n", __func__);
temp = readb(i2c_imx->base + IMX_I2C_I2CR);
-@@ -454,7 +462,7 @@
+@@ -435,9 +456,13 @@
+ (temp & I2SR_RXAK ? 1 : 0));
+ #endif
+ if (msgs[i].flags & I2C_M_RD)
++ {
+ result = i2c_imx_read(i2c_imx, &msgs[i]);
++ }
+ else
++ {
+ result = i2c_imx_write(i2c_imx, &msgs[i]);
++ }
+ if (result)
+ goto fail0;
+ }
+@@ -454,7 +479,7 @@
static u32 i2c_imx_func(struct i2c_adapter *adapter)
{
diff --git a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
index 958dd72..28e6d8a 100644
--- a/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/359-armadeus-joystick-adding_as5011_joystick_driver.patch
@@ -5,8 +5,8 @@ Signed-off-by: Fabien Marteau <fab...@ar...>
Index: linux-2.6.36/drivers/input/joystick/as5011.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/drivers/input/joystick/as5011.c 2010-11-25 17:47:25.000000000 +0100
-@@ -0,0 +1,427 @@
++++ linux-2.6.36/drivers/input/joystick/as5011.c 2010-12-30 10:12:13.000000000 +0100
+@@ -0,0 +1,418 @@
+/*
+ * Copyright (c) 2010 Fabien Marteau <fab...@ar...>
+ *
@@ -33,7 +33,6 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * TODO:
-+ * - Use threaded IRQ instead of Hard IRQ
+ * - Manage power mode
+ */
+
@@ -57,6 +56,7 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+#include <linux/input.h>
+#include <linux/gpio.h>
+#include <linux/workqueue.h>
++#include <linux/delay.h>
+
+#include <linux/as5011.h>
+#define DRIVER_DESC "Driver for Austria Microsystems AS5011 joystick"
@@ -90,21 +90,20 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ (struct as5011_platform_data *)dev_id;
+ int ret;
+
++ mutex_lock(&plat_dat->button_lock);
+ ret = gpio_get_value(plat_dat->button_gpio);
+ if (ret)
+ input_report_key(plat_dat->input_dev, BTN_JOYSTICK, 0);
+ else
+ input_report_key(plat_dat->input_dev, BTN_JOYSTICK, 1);
+ input_sync(plat_dat->input_dev);
++ mutex_unlock(&plat_dat->button_lock);
++
+ return IRQ_HANDLED;
+}
+
-+static void as5011_update_axes(struct work_struct *work)
++static void as5011_update_axes(struct as5011_platform_data *plat_dat)
+{
-+ struct as5011_platform_data *plat_dat =
-+ container_of(work,
-+ struct as5011_platform_data,
-+ update_axes_work);
+ signed char x, y;
+
+ x = as5011_i2c_read(plat_dat->i2c_client, AS5011_X_RES_INT);
@@ -119,7 +118,9 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ struct as5011_platform_data *plat_dat =
+ (struct as5011_platform_data *)dev_id;
+
-+ queue_work(plat_dat->workqueue, &plat_dat->update_axes_work);
++ mutex_lock(&plat_dat->update_lock);
++ as5011_update_axes(plat_dat);
++ mutex_unlock(&plat_dat->update_lock);
+
+ return IRQ_HANDLED;
+}
@@ -134,12 +135,14 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+{
+ int ret;
+ uint8_t data[2] = { aRegAddr, aValue };
++
+ struct i2c_msg msg = { client->addr,
+ I2C_M_IGNORE_NAK,
+ 2,
+ (uint8_t *)data };
+
+ ret = i2c_transfer(client->adapter, &msg, 1);
++
+ if (ret < 0)
+ return ret;
+ return 1;
@@ -163,7 +166,6 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ data[0] = aRegAddr;
+ msg_set[0] = msg1;
+ msg_set[1] = msg2;
-+
+ ret = i2c_transfer(client->adapter, msg_set, 2);
+ if (ret < 0)
+ return ret;
@@ -183,34 +185,22 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ plat_dat->num = g_num;
+ g_num++;
+
-+ scnprintf(plat_dat->workqueue_name,
-+ SIZE_NAME,
-+ "as5011_%d_workqueue", plat_dat->num);
-+ plat_dat->workqueue =
-+ create_singlethread_workqueue(plat_dat->workqueue_name);
-+ if (plat_dat->workqueue == NULL) {
-+ dev_err(&client->dev, "Failed to create workqueue\n");
-+ retval = -EINVAL;
-+ goto err_out;
-+ }
-+
-+ INIT_WORK(&plat_dat->update_axes_work, as5011_update_axes);
-+
+ if (!i2c_check_functionality(client->adapter,
+ I2C_FUNC_PROTOCOL_MANGLING)) {
+ dev_err(&client->dev,
+ "i2c bus does not support protocol mangling, as5011 can't work\n");
+ retval = -ENODEV;
-+ goto err_destroy_worqueue;
++ goto err_out;
+ }
+ plat_dat->i2c_client = client;
+
++
+ plat_dat->input_dev = input_allocate_device();
+ if (plat_dat->input_dev == NULL) {
+ dev_err(&client->dev,
+ "not enough memory for input devices structure\n");
+ retval = -ENOMEM;
-+ goto err_destroy_worqueue;
++ goto err_out;
+ }
+
+ plat_dat->input_dev->name = "Austria Microsystem as5011 joystick";
@@ -247,11 +237,10 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ "as5011_%d_button",
+ plat_dat->num);
+
-+ retval = request_irq( plat_dat->button_irq,
-+ button_interrupt,
-+ 0,
-+ plat_dat->button_irq_name,
-+ (void *)plat_dat);
++ retval = request_threaded_irq( plat_dat->button_irq,
++ NULL, button_interrupt,
++ 0, plat_dat->button_irq_name,
++ (void *)plat_dat);
+ if (retval < 0) {
+ dev_err(&client->dev, "Can't allocate irq %d\n",
+ plat_dat->button_irq);
@@ -259,33 +248,11 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ goto err_free_button_irq_name;
+ }
+
-+ plat_dat->int_irq_name = kmalloc(SIZE_NAME, GFP_KERNEL);
-+ if (plat_dat->int_irq_name == NULL) {
-+ dev_err(&client->dev,
-+ "not enough memory for input devices int irq name\n");
-+ retval = -ENOMEM;
-+ goto err_free_irq_button_interrupt;
-+ }
-+
-+ scnprintf(plat_dat->int_irq_name,
-+ SIZE_NAME,
-+ "as5011_%d_int",
-+ plat_dat->num);
-+
-+ if (request_irq(plat_dat->int_irq, as5011_int_interrupt,
-+ 0, plat_dat->int_irq_name, (void *)plat_dat)) {
-+ dev_err(&client->dev, "Can't allocate int irq %d\n",
-+ plat_dat->int_irq);
-+ retval = -EBUSY;
-+ goto err_free_int_irq_name;
-+ }
-+
-+
+ if (plat_dat->init_gpio != NULL) {
+ retval = plat_dat->init_gpio();
+ if (retval < 0) {
+ dev_err(&client->dev, "Failed to init gpios\n");
-+ goto err_free_irq_int;
++ goto err_free_irq_button_interrupt;
+ }
+ }
+
@@ -299,6 +266,8 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ goto err_exit_gpio;
+ }
+
++ mdelay(10);
++
+ retval = as5011_i2c_write(plat_dat->i2c_client,
+ AS5011_CTRL1,
+ AS5011_CTRL1_LP_PULSED |
@@ -357,36 +326,59 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+ goto err_exit_gpio;
+ }
+
++ /* request irq */
++ plat_dat->int_irq_name = kmalloc(SIZE_NAME, GFP_KERNEL);
++ if (plat_dat->int_irq_name == NULL) {
++ dev_err(&client->dev,
++ "not enough memory for input devices int irq name\n");
++ retval = -ENOMEM;
++ goto err_exit_gpio;
++ }
++
+
+ /* to free irq gpio in chip*/
+ as5011_i2c_read(plat_dat->i2c_client, AS5011_X_RES_INT);
+
++ /* initialize mutex */
++ mutex_init(&plat_dat->update_lock);
++ mutex_init(&plat_dat->button_lock);
++
++ scnprintf(plat_dat->int_irq_name,
++ SIZE_NAME,
++ "as5011_%d_int",
++ plat_dat->num);
++
++ if (request_threaded_irq(plat_dat->int_irq, NULL,
++ as5011_int_interrupt,
++ 0, plat_dat->int_irq_name, (void *)plat_dat)) {
++ dev_err(&client->dev, "Can't allocate int irq %d\n",
++ plat_dat->int_irq);
++ retval = -EBUSY;
++ goto err_free_int_irq_name;
++ }
++
+ retval = input_register_device(plat_dat->input_dev);
+ if (retval) {
+ dev_err(&client->dev, "Failed to register device\n");
-+ goto err_exit_gpio;
++ goto err_free_irq_int;
+ }
+
+ return 0;
+
+ /* Error management */
-+err_unregister_input_dev:
-+ input_unregister_device(plat_dat->input_dev);
-+err_exit_gpio:
-+ if (plat_dat->exit_gpio != NULL)
-+ plat_dat->exit_gpio();
+err_free_irq_int:
+ free_irq(plat_dat->int_irq, as5011_int_interrupt);
+err_free_int_irq_name:
+ kfree(plat_dat->int_irq_name);
++err_exit_gpio:
++ if (plat_dat->exit_gpio != NULL)
++ plat_dat->exit_gpio();
+err_free_irq_button_interrupt:
+ free_irq(plat_dat->button_irq, button_interrupt);
+err_free_button_irq_name:
+ kfree(plat_dat->button_irq_name);
+err_input_free_device:
+ input_free_device(plat_dat->input_dev);
-+err_destroy_worqueue:
-+ destroy_workqueue(plat_dat->workqueue);
+err_out:
+ return retval;
+}
@@ -394,7 +386,6 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+{
+ struct as5011_platform_data *plat_dat = client->dev.platform_data;
+
-+ destroy_workqueue(plat_dat->workqueue);
+ input_unregister_device(plat_dat->input_dev);
+ free_irq(plat_dat->button_irq, plat_dat);
+ free_irq(plat_dat->int_irq, plat_dat);
@@ -436,8 +427,8 @@ Index: linux-2.6.36/drivers/input/joystick/as5011.c
+module_exit(as5011_exit);
Index: linux-2.6.36/drivers/input/joystick/Kconfig
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/input/joystick/Kconfig 2010-11-25 17:47:25.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Kconfig 2010-12-30 09:55:59.000000000 +0100
++++ linux-2.6.36/drivers/input/joystick/Kconfig 2010-12-30 09:56:09.000000000 +0100
@@ -255,6 +255,15 @@
To compile this driver as a module, choose M here: the
module will be called amijoy.
@@ -456,8 +447,8 @@ Index: linux-2.6.36/drivers/input/joystick/Kconfig
select GAMEPORT
Index: linux-2.6.36/drivers/input/joystick/Makefile
===================================================================
---- linux-2.6.36.orig/drivers/input/joystick/Makefile 2010-10-20 22:30:22.000000000 +0200
-+++ linux-2.6.36/drivers/input/joystick/Makefile 2010-11-25 17:47:25.000000000 +0100
+--- linux-2.6.36.orig/drivers/input/joystick/Makefile 2010-12-30 09:55:59.000000000 +0100
++++ linux-2.6.36/drivers/input/joystick/Makefile 2010-12-30 09:56:09.000000000 +0100
@@ -7,6 +7,7 @@
obj-$(CONFIG_JOYSTICK_A3D) += a3d.o
obj-$(CONFIG_JOYSTICK_ADI) += adi.o
@@ -469,8 +460,8 @@ Index: linux-2.6.36/drivers/input/joystick/Makefile
Index: linux-2.6.36/include/linux/as5011.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.36/include/linux/as5011.h 2010-11-25 17:47:25.000000000 +0100
-@@ -0,0 +1,72 @@
++++ linux-2.6.36/include/linux/as5011.h 2010-12-30 09:56:09.000000000 +0100
+@@ -0,0 +1,76 @@
+#ifndef _AS5011_H
+#define _AS5011_H
+
@@ -482,6 +473,8 @@ Index: linux-2.6.36/include/linux/as5011.h
+ * the Free Software Foundation.
+ */
+
++#include <linux/mutex.h>
++
+#define AS5011_MAX_NAME_LENGTH 64
+#define AS5011_MAX_CNAME_LENGTH 16
+#define AS5011_MAX_PHYS_LENGTH 64
@@ -540,6 +533,8 @@ Index: linux-2.6.36/include/linux/as5011.h
+ char workqueue_name[AS5011_MAX_NAME_LENGTH];
+ struct workqueue_struct *workqueue;
+ struct work_struct update_axes_work;
++ struct mutex update_lock;
++ struct mutex button_lock;
+};
+
+#endif /* _AS5011_H */
hooks/post-receive
--
armadeus
|