]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/i2c/busses/i2c-omap.c
i2c: i2c-omap.c modified for 2430 I2C controller
[linux-2.6-omap-h63xx.git] / drivers / i2c / busses / i2c-omap.c
index fa5a4f25e821730be1b2984bacc5bd8eaaac104d..cd299d29906ce2905b6fd631a14c2999618c0122 100644 (file)
@@ -478,9 +478,14 @@ omap_i2c_isr(int this_irq, void *dev_id)
                        if (dev->buf_len) {
                                *dev->buf++ = w;
                                dev->buf_len--;
-                               if (dev->buf_len) {
-                                       *dev->buf++ = w >> 8;
-                                       dev->buf_len--;
+                               /*
+                                * Data reg in 2430 is 8 bit wide,
+                                */
+                               if (!cpu_is_omap2430()) {
+                                       if (dev->buf_len) {
+                                               *dev->buf++ = w >> 8;
+                                               dev->buf_len--;
+                                       }
                                }
                        } else
                                dev_err(dev->dev, "RRDY IRQ while no data"
@@ -493,9 +498,14 @@ omap_i2c_isr(int this_irq, void *dev_id)
                        if (dev->buf_len) {
                                w = *dev->buf++;
                                dev->buf_len--;
-                               if (dev->buf_len) {
-                                       w |= *dev->buf++ << 8;
-                                       dev->buf_len--;
+                               /*
+                                * Data reg in 2430 is 8 bit wide,
+                                */
+                               if (!cpu_is_omap2430()) {
+                                       if (dev->buf_len) {
+                                               w |= *dev->buf++ << 8;
+                                               dev->buf_len--;
+                                       }
                                }
                        } else
                                dev_err(dev->dev, "XRDY IRQ while no"