diff options
| -rw-r--r-- | drivers/media/video/bt8xx/bttv-cards.c | 92 | ||||
| -rw-r--r-- | drivers/media/video/bt8xx/bttv-driver.c | 1 | ||||
| -rw-r--r-- | drivers/media/video/bt8xx/bttv.h | 1 |
3 files changed, 50 insertions, 44 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c index fdb4adff3d28..ca6558c394be 100644 --- a/drivers/media/video/bt8xx/bttv-cards.c +++ b/drivers/media/video/bt8xx/bttv-cards.c | |||
| @@ -3324,8 +3324,6 @@ void __devinit bttv_init_card1(struct bttv *btv) | |||
| 3324 | /* initialization part two -- after registering i2c bus */ | 3324 | /* initialization part two -- after registering i2c bus */ |
| 3325 | void __devinit bttv_init_card2(struct bttv *btv) | 3325 | void __devinit bttv_init_card2(struct bttv *btv) |
| 3326 | { | 3326 | { |
| 3327 | int addr=ADDR_UNSET; | ||
| 3328 | |||
| 3329 | btv->tuner_type = UNSET; | 3327 | btv->tuner_type = UNSET; |
| 3330 | 3328 | ||
| 3331 | if (BTTV_BOARD_UNKNOWN == btv->c.type) { | 3329 | if (BTTV_BOARD_UNKNOWN == btv->c.type) { |
| @@ -3470,9 +3468,6 @@ void __devinit bttv_init_card2(struct bttv *btv) | |||
| 3470 | btv->pll.pll_current = -1; | 3468 | btv->pll.pll_current = -1; |
| 3471 | 3469 | ||
| 3472 | /* tuner configuration (from card list / autodetect / insmod option) */ | 3470 | /* tuner configuration (from card list / autodetect / insmod option) */ |
| 3473 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr) | ||
| 3474 | addr = bttv_tvcards[btv->c.type].tuner_addr; | ||
| 3475 | |||
| 3476 | if (UNSET != bttv_tvcards[btv->c.type].tuner_type) | 3471 | if (UNSET != bttv_tvcards[btv->c.type].tuner_type) |
| 3477 | if (UNSET == btv->tuner_type) | 3472 | if (UNSET == btv->tuner_type) |
| 3478 | btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; | 3473 | btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; |
| @@ -3496,40 +3491,6 @@ void __devinit bttv_init_card2(struct bttv *btv) | |||
| 3496 | if (UNSET == btv->tuner_type) | 3491 | if (UNSET == btv->tuner_type) |
| 3497 | btv->tuner_type = TUNER_ABSENT; | 3492 | btv->tuner_type = TUNER_ABSENT; |
| 3498 | 3493 | ||
| 3499 | if (btv->tuner_type != TUNER_ABSENT) { | ||
| 3500 | struct tuner_setup tun_setup; | ||
| 3501 | |||
| 3502 | /* Load tuner module before issuing tuner config call! */ | ||
| 3503 | if (bttv_tvcards[btv->c.type].has_radio) | ||
| 3504 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3505 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3506 | v4l2_i2c_tuner_addrs(ADDRS_RADIO)); | ||
| 3507 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3508 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3509 | v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); | ||
| 3510 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3511 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3512 | v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD)); | ||
| 3513 | |||
| 3514 | tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; | ||
| 3515 | tun_setup.type = btv->tuner_type; | ||
| 3516 | tun_setup.addr = addr; | ||
| 3517 | |||
| 3518 | if (bttv_tvcards[btv->c.type].has_radio) | ||
| 3519 | tun_setup.mode_mask |= T_RADIO; | ||
| 3520 | |||
| 3521 | bttv_call_all(btv, tuner, s_type_addr, &tun_setup); | ||
| 3522 | } | ||
| 3523 | |||
| 3524 | if (btv->tda9887_conf) { | ||
| 3525 | struct v4l2_priv_tun_config tda9887_cfg; | ||
| 3526 | |||
| 3527 | tda9887_cfg.tuner = TUNER_TDA9887; | ||
| 3528 | tda9887_cfg.priv = &btv->tda9887_conf; | ||
| 3529 | |||
| 3530 | bttv_call_all(btv, tuner, s_config, &tda9887_cfg); | ||
| 3531 | } | ||
| 3532 | |||
| 3533 | btv->dig = bttv_tvcards[btv->c.type].has_dig_in ? | 3494 | btv->dig = bttv_tvcards[btv->c.type].has_dig_in ? |
| 3534 | bttv_tvcards[btv->c.type].video_inputs - 1 : UNSET; | 3495 | bttv_tvcards[btv->c.type].video_inputs - 1 : UNSET; |
| 3535 | btv->svhs = bttv_tvcards[btv->c.type].svhs == NO_SVHS ? | 3496 | btv->svhs = bttv_tvcards[btv->c.type].svhs == NO_SVHS ? |
| @@ -3540,15 +3501,15 @@ void __devinit bttv_init_card2(struct bttv *btv) | |||
| 3540 | btv->has_remote = remote[btv->c.nr]; | 3501 | btv->has_remote = remote[btv->c.nr]; |
| 3541 | 3502 | ||
| 3542 | if (bttv_tvcards[btv->c.type].has_radio) | 3503 | if (bttv_tvcards[btv->c.type].has_radio) |
| 3543 | btv->has_radio=1; | 3504 | btv->has_radio = 1; |
| 3544 | if (bttv_tvcards[btv->c.type].has_remote) | 3505 | if (bttv_tvcards[btv->c.type].has_remote) |
| 3545 | btv->has_remote=1; | 3506 | btv->has_remote = 1; |
| 3546 | if (!bttv_tvcards[btv->c.type].no_gpioirq) | 3507 | if (!bttv_tvcards[btv->c.type].no_gpioirq) |
| 3547 | btv->gpioirq=1; | 3508 | btv->gpioirq = 1; |
| 3548 | if (bttv_tvcards[btv->c.type].volume_gpio) | 3509 | if (bttv_tvcards[btv->c.type].volume_gpio) |
| 3549 | btv->volume_gpio=bttv_tvcards[btv->c.type].volume_gpio; | 3510 | btv->volume_gpio = bttv_tvcards[btv->c.type].volume_gpio; |
| 3550 | if (bttv_tvcards[btv->c.type].audio_mode_gpio) | 3511 | if (bttv_tvcards[btv->c.type].audio_mode_gpio) |
| 3551 | btv->audio_mode_gpio=bttv_tvcards[btv->c.type].audio_mode_gpio; | 3512 | btv->audio_mode_gpio = bttv_tvcards[btv->c.type].audio_mode_gpio; |
| 3552 | 3513 | ||
| 3553 | if (btv->tuner_type == TUNER_ABSENT) | 3514 | if (btv->tuner_type == TUNER_ABSENT) |
| 3554 | return; /* no tuner or related drivers to load */ | 3515 | return; /* no tuner or related drivers to load */ |
| @@ -3666,6 +3627,49 @@ no_audio: | |||
| 3666 | } | 3627 | } |
| 3667 | 3628 | ||
| 3668 | 3629 | ||
| 3630 | /* initialize the tuner */ | ||
| 3631 | void __devinit bttv_init_tuner(struct bttv *btv) | ||
| 3632 | { | ||
| 3633 | int addr = ADDR_UNSET; | ||
| 3634 | |||
| 3635 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr) | ||
| 3636 | addr = bttv_tvcards[btv->c.type].tuner_addr; | ||
| 3637 | |||
| 3638 | if (btv->tuner_type != TUNER_ABSENT) { | ||
| 3639 | struct tuner_setup tun_setup; | ||
| 3640 | |||
| 3641 | /* Load tuner module before issuing tuner config call! */ | ||
| 3642 | if (bttv_tvcards[btv->c.type].has_radio) | ||
| 3643 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3644 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3645 | v4l2_i2c_tuner_addrs(ADDRS_RADIO)); | ||
| 3646 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3647 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3648 | v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); | ||
| 3649 | v4l2_i2c_new_probed_subdev(&btv->c.v4l2_dev, | ||
| 3650 | &btv->c.i2c_adap, "tuner", "tuner", | ||
| 3651 | v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD)); | ||
| 3652 | |||
| 3653 | tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; | ||
| 3654 | tun_setup.type = btv->tuner_type; | ||
| 3655 | tun_setup.addr = addr; | ||
| 3656 | |||
| 3657 | if (bttv_tvcards[btv->c.type].has_radio) | ||
| 3658 | tun_setup.mode_mask |= T_RADIO; | ||
| 3659 | |||
| 3660 | bttv_call_all(btv, tuner, s_type_addr, &tun_setup); | ||
| 3661 | } | ||
| 3662 | |||
| 3663 | if (btv->tda9887_conf) { | ||
| 3664 | struct v4l2_priv_tun_config tda9887_cfg; | ||
| 3665 | |||
| 3666 | tda9887_cfg.tuner = TUNER_TDA9887; | ||
| 3667 | tda9887_cfg.priv = &btv->tda9887_conf; | ||
| 3668 | |||
| 3669 | bttv_call_all(btv, tuner, s_config, &tda9887_cfg); | ||
| 3670 | } | ||
| 3671 | } | ||
| 3672 | |||
| 3669 | /* ----------------------------------------------------------------------- */ | 3673 | /* ----------------------------------------------------------------------- */ |
| 3670 | 3674 | ||
| 3671 | static void modtec_eeprom(struct bttv *btv) | 3675 | static void modtec_eeprom(struct bttv *btv) |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index d147d29bb0d3..8cc6dd28d6a7 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
| @@ -4419,6 +4419,7 @@ static int __devinit bttv_probe(struct pci_dev *dev, | |||
| 4419 | 4419 | ||
| 4420 | /* some card-specific stuff (needs working i2c) */ | 4420 | /* some card-specific stuff (needs working i2c) */ |
| 4421 | bttv_init_card2(btv); | 4421 | bttv_init_card2(btv); |
| 4422 | bttv_init_tuner(btv); | ||
| 4422 | init_irqreg(btv); | 4423 | init_irqreg(btv); |
| 4423 | 4424 | ||
| 4424 | /* register video4linux + input */ | 4425 | /* register video4linux + input */ |
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h index 3d36daf206f3..3ec2402c6b4a 100644 --- a/drivers/media/video/bt8xx/bttv.h +++ b/drivers/media/video/bt8xx/bttv.h | |||
| @@ -283,6 +283,7 @@ extern struct tvcard bttv_tvcards[]; | |||
| 283 | extern void bttv_idcard(struct bttv *btv); | 283 | extern void bttv_idcard(struct bttv *btv); |
| 284 | extern void bttv_init_card1(struct bttv *btv); | 284 | extern void bttv_init_card1(struct bttv *btv); |
| 285 | extern void bttv_init_card2(struct bttv *btv); | 285 | extern void bttv_init_card2(struct bttv *btv); |
| 286 | extern void bttv_init_tuner(struct bttv *btv); | ||
| 286 | 287 | ||
| 287 | /* card-specific funtions */ | 288 | /* card-specific funtions */ |
| 288 | extern void tea5757_set_freq(struct bttv *btv, unsigned short freq); | 289 | extern void tea5757_set_freq(struct bttv *btv, unsigned short freq); |
