summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/distro/openomap.conf3
-rw-r--r--conf/machine/omap5912osk.conf2
-rw-r--r--packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch56
-rw-r--r--packages/linux/linux-omap1_2.6.19-omap1.bb3
4 files changed, 59 insertions, 5 deletions
diff --git a/conf/distro/openomap.conf b/conf/distro/openomap.conf
index f73a980c52..5819b5ad59 100644
--- a/conf/distro/openomap.conf
+++ b/conf/distro/openomap.conf
@@ -23,8 +23,7 @@ PREFERRED_PROVIDER_virtual/arm-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
# use latest booting kernel but allow to override it in local.conf
-PREFERRED_VERSION_linux-omap1_omap5912osk ?= "2.6.18-omap1"
-#PREFERRED_VERSION_linux-omap1_omap5912osk ?= "2.6.18+git"
+#PREFERRED_VERSION_linux-omap1_omap5912osk ?= "2.6.19-omap1"
#use EABI toolchain
diff --git a/conf/machine/omap5912osk.conf b/conf/machine/omap5912osk.conf
index f8a3472f78..6e704a1f4e 100644
--- a/conf/machine/omap5912osk.conf
+++ b/conf/machine/omap5912osk.conf
@@ -11,7 +11,7 @@ PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-omap1"
PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}depmod:module-init-tools-cross"
-PREFERRED_VERSION_u-boot = "LABEL.2006.06.30.2020"
+# PREFERRED_VERSION_u-boot = "1.1.6"
SERIAL_CONSOLE ?= "115200 ttyS0"
EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
diff --git a/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch b/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch
new file mode 100644
index 0000000000..3b35ce23a2
--- /dev/null
+++ b/packages/linux/linux-omap1-2.6.19-omap1/i2c-fix.patch
@@ -0,0 +1,56 @@
+Hack to add I2C zero length transfers and SMBus quick mode
+necessary for AIC23 sound again.
+
+Signed-off-by: Dirk Behme <dirk.behme_at_gmail.com>
+
+
+-------------- next part --------------
+Index: linux-osk/drivers/i2c/busses/i2c-omap.c
+===================================================================
+--- linux-osk.orig/drivers/i2c/busses/i2c-omap.c
++++ linux-osk/drivers/i2c/busses/i2c-omap.c
+@@ -285,20 +285,29 @@ static int omap_i2c_xfer_msg(struct i2c_
+ struct i2c_msg *msg, int stop)
+ {
+ struct omap_i2c_dev *dev = i2c_get_adapdata(adap);
++ u8 zero_byte = 0;
+ int r;
+ u16 w;
+
+ dev_dbg(dev->dev, "addr: 0x%04x, len: %d, flags: 0x%x, stop: %d\n",
+ msg->addr, msg->len, msg->flags, stop);
+
+- if (msg->len == 0)
+- return -EINVAL;
+-
+ omap_i2c_write_reg(dev, OMAP_I2C_SA_REG, msg->addr);
+
+- /* REVISIT: Could the STB bit of I2C_CON be used with probing? */
+- dev->buf = msg->buf;
+- dev->buf_len = msg->len;
++ /* Sigh, seems we can't do zero length transactions. Thus, we
++ * can't probe for devices w/o actually sending/receiving at least
++ * a single byte. So we'll set count to 1 for the zero length
++ * transaction case and hope we don't cause grief for some
++ * arbitrary device due to random byte write/read during
++ * probes.
++ */
++ if (msg->len == 0) {
++ dev->buf = &zero_byte;
++ dev->buf_len = 1;
++ } else {
++ dev->buf = msg->buf;
++ dev->buf_len = msg->len;
++ }
+
+ omap_i2c_write_reg(dev, OMAP_I2C_CNT_REG, dev->buf_len);
+
+@@ -383,7 +392,7 @@ out:
+ static u32
+ omap_i2c_func(struct i2c_adapter *adap)
+ {
+- return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
++ return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
+ }
+
+ static inline void
diff --git a/packages/linux/linux-omap1_2.6.19-omap1.bb b/packages/linux/linux-omap1_2.6.19-omap1.bb
index ca43d567c0..cfe0723770 100644
--- a/packages/linux/linux-omap1_2.6.19-omap1.bb
+++ b/packages/linux/linux-omap1_2.6.19-omap1.bb
@@ -1,10 +1,9 @@
require linux-omap1.inc
-DEFAULT_PREFERENCE = "-1"
-
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.19.tar.bz2 \
http://www.muru.com/linux/omap/patches/patch-2.6.19-omap1.bz2;patch=1 \
file://another-ide-cs-ids.patch;patch=1 \
+ file://i2c-fix.patch;patch=1 \
file://defconfig \
file://defconfig.eabi"