aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/ivtv/ivtv-i2c.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/media/video/ivtv/ivtv-i2c.c b/drivers/media/video/ivtv/ivtv-i2c.c
index fa5ab1eb1800..9824eafee021 100644
--- a/drivers/media/video/ivtv/ivtv-i2c.c
+++ b/drivers/media/video/ivtv/ivtv-i2c.c
@@ -177,10 +177,16 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx)
177 } 177 }
178 178
179 if (id != I2C_DRIVERID_TUNER) { 179 if (id != I2C_DRIVERID_TUNER) {
180 c = i2c_new_device(&itv->i2c_adap, &info); 180 if (id == I2C_DRIVERID_UPD64031A ||
181 if (c->driver == NULL) 181 id == I2C_DRIVERID_UPD64083) {
182 unsigned short addrs[2] = { info.addr, I2C_CLIENT_END };
183
184 c = i2c_new_probed_device(&itv->i2c_adap, &info, addrs);
185 } else
186 c = i2c_new_device(&itv->i2c_adap, &info);
187 if (c && c->driver == NULL)
182 i2c_unregister_device(c); 188 i2c_unregister_device(c);
183 else 189 else if (c)
184 itv->i2c_clients[i] = c; 190 itv->i2c_clients[i] = c;
185 return itv->i2c_clients[i] ? 0 : -ENODEV; 191 return itv->i2c_clients[i] ? 0 : -ENODEV;
186 } 192 }