diff options
Diffstat (limited to 'drivers/media/video/ivtv/ivtv-i2c.c')
-rw-r--r-- | drivers/media/video/ivtv/ivtv-i2c.c | 12 |
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 | } |