V4L/DVB (7534): ivtv: the upd* modules have to be probed to properly autodetect some...
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 7 Apr 2008 11:32:14 +0000 (08:32 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:08:00 +0000 (14:08 -0300)
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/ivtv/ivtv-i2c.c

index fa5ab1eb180005049db0412df19b8279303b7aec..9824eafee02131eb88b67045de9ce32de8f0e93e 100644 (file)
@@ -177,10 +177,16 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx)
        }
 
        if (id != I2C_DRIVERID_TUNER) {
-               c = i2c_new_device(&itv->i2c_adap, &info);
-               if (c->driver == NULL)
+               if (id == I2C_DRIVERID_UPD64031A ||
+                   id == I2C_DRIVERID_UPD64083) {
+                       unsigned short addrs[2] = { info.addr, I2C_CLIENT_END };
+
+                       c = i2c_new_probed_device(&itv->i2c_adap, &info, addrs);
+               } else
+                       c = i2c_new_device(&itv->i2c_adap, &info);
+               if (c && c->driver == NULL)
                        i2c_unregister_device(c);
-               else
+               else if (c)
                        itv->i2c_clients[i] = c;
                return itv->i2c_clients[i] ? 0 : -ENODEV;
        }