[Armadeus-commitlog] armadeus branch, master, updated. release-3.3-163-g8ee9438
Brought to you by:
sszy
|
From: Fabien M <fa...@us...> - 2010-12-13 11:15:08
|
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 8ee94381d0788e9cb242c9f0dead9864bc0f5adc (commit)
via 1bdbe5fcc2bdc503e43af74468aaf0a0034f25d2 (commit)
via b259a44be9179ea45cb7b39417c863e11c04935d (commit)
via 05a302115b359ca0cf85a40bd4fbd276dd172e69 (commit)
from 7e202a6e1025065f9648249abc0d5fbfabe610c0 (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 8ee94381d0788e9cb242c9f0dead9864bc0f5adc
Merge: 1bdbe5fcc2bdc503e43af74468aaf0a0034f25d2 7e202a6e1025065f9648249abc0d5fbfabe610c0
Author: Fabien Marteau <fab...@ar...>
Date: Mon Dec 13 12:14:42 2010 +0100
Merge branch 'master' of ssh://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus
commit 1bdbe5fcc2bdc503e43af74468aaf0a0034f25d2
Author: Fabien Marteau <fab...@ar...>
Date: Mon Dec 13 11:35:30 2010 +0100
[linux] Adding mangling capability on i2c-imx Part 3: adding mangling capability flag
commit b259a44be9179ea45cb7b39417c863e11c04935d
Author: Fabien Marteau <fab...@ar...>
Date: Mon Dec 13 11:13:53 2010 +0100
[linux] Adding mangling capability on i2c-imx Part 2
commit 05a302115b359ca0cf85a40bd4fbd276dd172e69
Author: Fabien Marteau <fab...@ar...>
Date: Fri Dec 10 18:25:32 2010 +0100
[linux][i2c-imx]Â Adding mangling capability part1: ignore Ack
-----------------------------------------------------------------------
Summary of changes:
...ing_mangling_capability_on_i2c_imx_driver.patch | 83 ++++++++++++++++++++
1 files changed, 83 insertions(+), 0 deletions(-)
create mode 100644 buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch
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
new file mode 100644
index 0000000..2b5c280
--- /dev/null
+++ b/buildroot/target/device/armadeus/linux/kernel-patches/2.6.36/358-armadeus-imx-adding_mangling_capability_on_i2c_imx_driver.patch
@@ -0,0 +1,83 @@
+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);
+
+ /* 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);
+- if (result)
++ if ( (result != 0) && ((msgs[0].flags & I2C_M_IGNORE_NAK) == 0))
+ return result;
+ dev_dbg(&i2c_imx->adapter.dev, "<%s> write data\n", __func__);
+
+@@ -323,7 +326,7 @@
+ if (result)
+ return result;
+ result = i2c_imx_acked(i2c_imx);
+- if (result)
++ if ( (result != 0) && ((msgs[i].flags & I2C_M_IGNORE_NAK) == 0))
+ return result;
+ }
+ return 0;
+@@ -339,12 +342,15 @@
+ __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);
+- if (result)
++ if ( (result != 0) && ((msgs[0].flags & I2C_M_IGNORE_NAK) == 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 @@
+
+ /* read/write data */
+ for (i = 0; i < num; i++) {
+- if (i) {
++ if (i && ((msgs[i].flags & I2C_M_NOSTART)==0)) {
+ dev_dbg(&i2c_imx->adapter.dev,
+ "<%s> repeated start\n", __func__);
+ temp = readb(i2c_imx->base + IMX_I2C_I2CR);
+@@ -454,7 +462,7 @@
+
+ static u32 i2c_imx_func(struct i2c_adapter *adapter)
+ {
+- return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
++ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | I2C_FUNC_PROTOCOL_MANGLING;
+ }
+
+ static struct i2c_algorithm i2c_imx_algo = {
hooks/post-receive
--
armadeus
|