Kevin Hilman wrote:
Dirk Behme <[EMAIL PROTECTED]> writes:


Remove I2C zero length transfer "HACK" and do real zero length
transfers. This fixes Oops at kernel startup while "scanning" for
TLV320AIC23IDx addresses.


Dirk,

I reworked this slightly, but hopefully didn't change any
functionality.

Rather than undo the DAVINCI_HACK stuff and add your fixups in the
same patch, I'd rather see separate commits for removal of the hack,
and your fixups.

So, what I did in a temporary branch[1] is do a 'git revert' of the
original commit which added the DAVINCI_HACK[2], thus undoing the
hack, then applying your patch.  Note that most of your patch failed
to apply because of the revert, so I just blindly applied the patch,
and ignored the failures.  Can you sanity check my branch and make
sure I didn't miss any of your fixups?  If it looks OK to you, I'll
merge that branch with the master branch.

Kevin


[1] see branch 'khilman/temp/dirk-i2c'  Also visible via the gitweb
    interface under the 'heads' section at the bottom of the summary page.
[2] by running 'git-revert a8e67c9d0e13a774d19e594f43ff7a29993782c4'

I compared

http://source.mvista.com/git/?p=linux-davinci-2.6.git;a=blob;f=drivers/i2c/busses/i2c-davinci.c;h=485a9a1f5801525ff1800f0e92b85791a37ffd3e;hb=2a681dfdfec2160d473c2b09ba37a816bc840f65

with my local version of i2c-davinci.c after locally applying the patch and get diff in attachment. Do you kindly like to check?

Many thanks

Dirk

--- ./drivers/i2c/busses/i2c-davinci.c_after_merge      2008-04-02 
19:49:15.000000000 +0200
+++ ./drivers/i2c/busses/i2c-davinci.c  2008-04-02 19:48:55.000000000 +0200
@@ -246,9 +246,6 @@ i2c_davinci_xfer_msg(struct i2c_adapter 
        u16 w;
        int r;
 
-       if (msg->len == 0)
-               return -EINVAL;
-
        if (!pdata)
                pdata = &davinci_i2c_platform_data_default;
        /* Introduce a delay, required for some boards (e.g Davinci EVM) */
@@ -260,6 +257,7 @@ i2c_davinci_xfer_msg(struct i2c_adapter 
 
        dev->buf = msg->buf;
        dev->buf_len = msg->len;
+       dev->stop = stop;
 
        davinci_i2c_write_reg(dev, DAVINCI_I2C_CNT_REG, dev->buf_len);
 
@@ -373,7 +371,7 @@ i2c_davinci_xfer(struct i2c_adapter *ada
 
 static u32 i2c_davinci_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 terminate_read(struct davinci_i2c_dev *dev)
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to