Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=57f8dcf90bdf4c6b23ea2af3d307d1d137b696b9
Commit:     57f8dcf90bdf4c6b23ea2af3d307d1d137b696b9
Parent:     d40860f8e2edb31196f4233d3691704d313dbdd6
Author:     Trent Piepho <[EMAIL PROTECTED]>
AuthorDate: Mon Mar 12 12:13:12 2007 -0300
Committer:  Mauro Carvalho Chehab <[EMAIL PROTECTED]>
CommitDate: Fri Apr 27 15:44:43 2007 -0300

    V4L/DVB (5428): M920x: Detect zero-length I2C messages and fix a typo
    
    Change a 00 to just 0
    Detect zero-length I2C messages and return not supported.  I think I know
    how to send one, but the problem is getting the slave's ack.  The only
    point of a zero-length message is for probing; too see if the slave will
    ack its address.  Since we don't know how to get the ack, we can't
    support zero-length messages in a useful way, so it's probably best to
    just return not supported for them.
    
    Signed-off-by: Trent Piepho <[EMAIL PROTECTED]>
    Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
 drivers/media/dvb/dvb-usb/m920x.c |    9 +++++++--
 1 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb/dvb-usb/m920x.c 
b/drivers/media/dvb/dvb-usb/m920x.c
index 08469cc..8c95481 100644
--- a/drivers/media/dvb/dvb-usb/m920x.c
+++ b/drivers/media/dvb/dvb-usb/m920x.c
@@ -148,13 +148,18 @@ static int m9206_i2c_xfer(struct i2c_adapter *adap, 
struct i2c_msg msg[],
                return -EAGAIN;
 
        for (i = 0; i < num; i++) {
-               if (msg[i].flags & 
(I2C_M_NO_RD_ACK|I2C_M_IGNORE_NAK|I2C_M_TEN)) {
+               if (msg[i].flags & (I2C_M_NO_RD_ACK|I2C_M_IGNORE_NAK|I2C_M_TEN) 
||
+                   msg[i].len == 0) {
+                       /* For a 0 byte message, I think sending the address to 
index 0x80|0x40
+                        * would be the correct thing to do.  However, zero 
byte messages are
+                        * only used for probing, and since we don't know how 
to get the slave's
+                        * ack, we can't probe. */
                        ret = -ENOTSUPP;
                        goto unlock;
                }
                /* Send START & address/RW bit */
                if (!(msg[i].flags & I2C_M_NOSTART)) {
-                       if ((ret = m9206_write(d->udev, M9206_I2C, 
(msg[i].addr<<1)|(msg[i].flags&I2C_M_RD?0x01:00), 0x80)) != 0)
+                       if ((ret = m9206_write(d->udev, M9206_I2C, 
(msg[i].addr<<1)|(msg[i].flags&I2C_M_RD?0x01:0), 0x80)) != 0)
                                goto unlock;
                        /* Should check for ack here, if we knew how. */
                }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to