V4L/DVB (5525): Usbvision: fix confusion over 7-bit vs 8-bit TDDA9887 addresses
authorTrent Piepho <xyzzy@speakeasy.org>
Sun, 15 Apr 2007 13:09:56 +0000 (10:09 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 27 Apr 2007 18:45:40 +0000 (15:45 -0300)
The code was testing an 8-bit address against a 7-bit address.  Will the
confusion of the two never cease?
Biggest flaw of the I2C protocol:  the R/W bit is the LSB instead of the
MSB.  No one can ever agree if addresses are 7-bits and the R/W bit
follows them, or if they are 8-bit and the R/W bit is OR-ed into the
address byte.  If the R/W bit was first, it wouldn't make any difference!

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/usbvision/usbvision-i2c.c

index ff8468093f462ae641e8ed294f951c248d5301b9..846e51bfe3fbc491c548a40c5172f0ca47205db7 100644 (file)
@@ -278,9 +278,10 @@ static int attach_inform(struct i2c_client *client)
 
        usbvision = i2c_get_adapdata(client->adapter);
        switch (client->addr << 1) {
-               case 0x86:
-               case 0x43:
-               case 0x4b:
+               case 0x42 << 1:
+               case 0x43 << 1:
+               case 0x4a << 1:
+               case 0x4b << 1:
                {
                        struct tuner_setup tun_setup;