diff options
-rw-r--r-- | drivers/media/video/bttv-i2c.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/media/video/bttv-i2c.c b/drivers/media/video/bttv-i2c.c index d6cccce48041..e509ed91a290 100644 --- a/drivers/media/video/bttv-i2c.c +++ b/drivers/media/video/bttv-i2c.c | |||
@@ -291,11 +291,14 @@ static struct i2c_adapter bttv_i2c_adap_hw_template = { | |||
291 | static int attach_inform(struct i2c_client *client) | 291 | static int attach_inform(struct i2c_client *client) |
292 | { | 292 | { |
293 | struct bttv *btv = i2c_get_adapdata(client->adapter); | 293 | struct bttv *btv = i2c_get_adapdata(client->adapter); |
294 | int radio_addr=ADDR_UNSET; | 294 | int radio_addr=ADDR_UNSET, addr=ADDR_UNSET; |
295 | 295 | ||
296 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].radio_addr) | 296 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].radio_addr) |
297 | radio_addr = bttv_tvcards[btv->c.type].radio_addr; | 297 | radio_addr = bttv_tvcards[btv->c.type].radio_addr; |
298 | 298 | ||
299 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr) | ||
300 | addr = bttv_tvcards[btv->c.type].tuner_addr; | ||
301 | |||
299 | if (bttv_debug) | 302 | if (bttv_debug) |
300 | printk(KERN_DEBUG "bttv%d: %s i2c attach [addr=0x%x,client=%s]\n", | 303 | printk(KERN_DEBUG "bttv%d: %s i2c attach [addr=0x%x,client=%s]\n", |
301 | btv->c.nr,client->driver->name,client->addr, | 304 | btv->c.nr,client->driver->name,client->addr, |
@@ -306,14 +309,20 @@ static int attach_inform(struct i2c_client *client) | |||
306 | if (btv->tuner_type != UNSET) { | 309 | if (btv->tuner_type != UNSET) { |
307 | struct tuner_setup tun_setup; | 310 | struct tuner_setup tun_setup; |
308 | 311 | ||
309 | tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; | 312 | if ((addr==ADDR_UNSET)||(addr==client->addr)) { |
310 | tun_setup.type = btv->tuner_type; | 313 | tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; |
311 | tun_setup.addr = ADDR_UNSET; | 314 | tun_setup.type = btv->tuner_type; |
315 | tun_setup.addr = ADDR_UNSET; | ||
312 | 316 | ||
313 | if (client->addr == radio_addr) | 317 | client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup); |
314 | tun_setup.mode_mask = T_RADIO; | 318 | } |
319 | if ((radio_addr==ADDR_UNSET)||(radio_addr==client->addr)) { | ||
320 | tun_setup.mode_mask = T_RADIO; | ||
321 | tun_setup.type = btv->tuner_type; | ||
322 | tun_setup.addr = ADDR_UNSET; | ||
315 | 323 | ||
316 | client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup); | 324 | client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup); |
325 | } | ||
317 | } | 326 | } |
318 | 327 | ||
319 | if (btv->pinnacle_id != UNSET) | 328 | if (btv->pinnacle_id != UNSET) |