From faa9b67f15e1d542f250529ff492a48d31be8276 Mon Sep 17 00:00:00 2001 From: Devin Heitmueller Date: Wed, 11 Mar 2009 03:00:56 -0300 Subject: [PATCH] --- yaml --- r: 138208 b: refs/heads/master c: dc8685b565d6526aca6aaefb80059d115c124821 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/au0828/au0828-i2c.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b376993bd33e..edeac2513619 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5a5a4e16fa19fa3789398e8c707168b7da718b64 +refs/heads/master: dc8685b565d6526aca6aaefb80059d115c124821 diff --git a/trunk/drivers/media/video/au0828/au0828-i2c.c b/trunk/drivers/media/video/au0828/au0828-i2c.c index ee3e3040d54c..d57a38f5c738 100644 --- a/trunk/drivers/media/video/au0828/au0828-i2c.c +++ b/trunk/drivers/media/video/au0828/au0828-i2c.c @@ -156,6 +156,24 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap, dprintk(4, "SEND: %02x\n", msg->addr); + /* Deal with i2c_scan */ + if (msg->len == 0) { + /* The analog tuner detection code makes use of the SMBUS_QUICK + message (which involves a zero length i2c write). To avoid + checking the status register when we didn't strobe out any + actual bytes to the bus, just do a read check. This is + consistent with how I saw i2c device checking done in the + USB trace of the Windows driver */ + au0828_write(dev, REG_200, 0x20); + if (!i2c_wait_done(i2c_adap)) + return -EIO; + + if (i2c_wait_read_ack(i2c_adap)) + return -EIO; + + return 0; + } + for (i = 0; i < msg->len;) { dprintk(4, " %02x\n", msg->buf[i]);