Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB: lgdt3305: consolidate init functions

Signed-off-by: Michael Krufky <mkrufky@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Michael Krufky and committed by
Mauro Carvalho Chehab
d99a2118 241b0f41

+69 -100
+69 -100
drivers/media/dvb/frontends/lgdt3305.c
··· 587 587 return 0; 588 588 } 589 589 590 - static int lgdt3304_init(struct dvb_frontend *fe) 591 - { 592 - struct lgdt3305_state *state = fe->demodulator_priv; 593 - int ret; 594 - 595 - static struct lgdt3305_reg lgdt3304_init_data[] = { 596 - { .reg = LGDT3305_GEN_CTRL_1, .val = 0x03, }, 597 - { .reg = 0x000d, .val = 0x02, }, 598 - { .reg = 0x000e, .val = 0x02, }, 599 - { .reg = LGDT3305_DGTL_AGC_REF_1, .val = 0x32, }, 600 - { .reg = LGDT3305_DGTL_AGC_REF_2, .val = 0xc4, }, 601 - { .reg = LGDT3305_CR_CTR_FREQ_1, .val = 0x00, }, 602 - { .reg = LGDT3305_CR_CTR_FREQ_2, .val = 0x00, }, 603 - { .reg = LGDT3305_CR_CTR_FREQ_3, .val = 0x00, }, 604 - { .reg = LGDT3305_CR_CTR_FREQ_4, .val = 0x00, }, 605 - { .reg = LGDT3305_CR_CTRL_7, .val = 0xf9, }, 606 - { .reg = 0x0112, .val = 0x17, }, 607 - { .reg = 0x0113, .val = 0x15, }, 608 - { .reg = 0x0114, .val = 0x18, }, 609 - { .reg = 0x0115, .val = 0xff, }, 610 - { .reg = 0x0116, .val = 0x3c, }, 611 - { .reg = 0x0214, .val = 0x67, }, 612 - { .reg = 0x0424, .val = 0x8d, }, 613 - { .reg = 0x0427, .val = 0x12, }, 614 - { .reg = 0x0428, .val = 0x4f, }, 615 - { .reg = LGDT3305_IFBW_1, .val = 0x80, }, 616 - { .reg = LGDT3305_IFBW_2, .val = 0x00, }, 617 - { .reg = 0x030a, .val = 0x08, }, 618 - { .reg = 0x030b, .val = 0x9b, }, 619 - { .reg = 0x030d, .val = 0x00, }, 620 - { .reg = 0x030e, .val = 0x1c, }, 621 - { .reg = 0x0314, .val = 0xe1, }, 622 - { .reg = 0x000d, .val = 0x82, }, 623 - { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, }, 624 - { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, }, 625 - }; 626 - 627 - lg_dbg("\n"); 628 - 629 - ret = lgdt3305_write_regs(state, lgdt3304_init_data, 630 - ARRAY_SIZE(lgdt3304_init_data)); 631 - if (lg_fail(ret)) 632 - goto fail; 633 - 634 - ret = lgdt3305_soft_reset(state); 635 - fail: 636 - return ret; 637 - } 638 - 639 590 static int lgdt3305_init(struct dvb_frontend *fe) 640 591 { 641 592 struct lgdt3305_state *state = fe->demodulator_priv; 642 593 int ret; 643 594 595 + static struct lgdt3305_reg lgdt3304_init_data[] = { 596 + { .reg = LGDT3305_GEN_CTRL_1, .val = 0x03, }, 597 + { .reg = 0x000d, .val = 0x02, }, 598 + { .reg = 0x000e, .val = 0x02, }, 599 + { .reg = LGDT3305_DGTL_AGC_REF_1, .val = 0x32, }, 600 + { .reg = LGDT3305_DGTL_AGC_REF_2, .val = 0xc4, }, 601 + { .reg = LGDT3305_CR_CTR_FREQ_1, .val = 0x00, }, 602 + { .reg = LGDT3305_CR_CTR_FREQ_2, .val = 0x00, }, 603 + { .reg = LGDT3305_CR_CTR_FREQ_3, .val = 0x00, }, 604 + { .reg = LGDT3305_CR_CTR_FREQ_4, .val = 0x00, }, 605 + { .reg = LGDT3305_CR_CTRL_7, .val = 0xf9, }, 606 + { .reg = 0x0112, .val = 0x17, }, 607 + { .reg = 0x0113, .val = 0x15, }, 608 + { .reg = 0x0114, .val = 0x18, }, 609 + { .reg = 0x0115, .val = 0xff, }, 610 + { .reg = 0x0116, .val = 0x3c, }, 611 + { .reg = 0x0214, .val = 0x67, }, 612 + { .reg = 0x0424, .val = 0x8d, }, 613 + { .reg = 0x0427, .val = 0x12, }, 614 + { .reg = 0x0428, .val = 0x4f, }, 615 + { .reg = LGDT3305_IFBW_1, .val = 0x80, }, 616 + { .reg = LGDT3305_IFBW_2, .val = 0x00, }, 617 + { .reg = 0x030a, .val = 0x08, }, 618 + { .reg = 0x030b, .val = 0x9b, }, 619 + { .reg = 0x030d, .val = 0x00, }, 620 + { .reg = 0x030e, .val = 0x1c, }, 621 + { .reg = 0x0314, .val = 0xe1, }, 622 + { .reg = 0x000d, .val = 0x82, }, 623 + { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, }, 624 + { .reg = LGDT3305_TP_CTRL_1, .val = 0x5b, }, 625 + }; 626 + 644 627 static struct lgdt3305_reg lgdt3305_init_data[] = { 645 - { .reg = LGDT3305_GEN_CTRL_1, 646 - .val = 0x03, }, 647 - { .reg = LGDT3305_GEN_CTRL_2, 648 - .val = 0xb0, }, 649 - { .reg = LGDT3305_GEN_CTRL_3, 650 - .val = 0x01, }, 651 - { .reg = LGDT3305_GEN_CONTROL, 652 - .val = 0x6f, }, 653 - { .reg = LGDT3305_GEN_CTRL_4, 654 - .val = 0x03, }, 655 - { .reg = LGDT3305_DGTL_AGC_REF_1, 656 - .val = 0x32, }, 657 - { .reg = LGDT3305_DGTL_AGC_REF_2, 658 - .val = 0xc4, }, 659 - { .reg = LGDT3305_CR_CTR_FREQ_1, 660 - .val = 0x00, }, 661 - { .reg = LGDT3305_CR_CTR_FREQ_2, 662 - .val = 0x00, }, 663 - { .reg = LGDT3305_CR_CTR_FREQ_3, 664 - .val = 0x00, }, 665 - { .reg = LGDT3305_CR_CTR_FREQ_4, 666 - .val = 0x00, }, 667 - { .reg = LGDT3305_CR_CTRL_7, 668 - .val = 0x79, }, 669 - { .reg = LGDT3305_AGC_POWER_REF_1, 670 - .val = 0x32, }, 671 - { .reg = LGDT3305_AGC_POWER_REF_2, 672 - .val = 0xc4, }, 673 - { .reg = LGDT3305_AGC_DELAY_PT_1, 674 - .val = 0x0d, }, 675 - { .reg = LGDT3305_AGC_DELAY_PT_2, 676 - .val = 0x30, }, 677 - { .reg = LGDT3305_RFAGC_LOOP_FLTR_BW_1, 678 - .val = 0x80, }, 679 - { .reg = LGDT3305_RFAGC_LOOP_FLTR_BW_2, 680 - .val = 0x00, }, 681 - { .reg = LGDT3305_IFBW_1, 682 - .val = 0x80, }, 683 - { .reg = LGDT3305_IFBW_2, 684 - .val = 0x00, }, 685 - { .reg = LGDT3305_AGC_CTRL_1, 686 - .val = 0x30, }, 687 - { .reg = LGDT3305_AGC_CTRL_4, 688 - .val = 0x61, }, 689 - { .reg = LGDT3305_FEC_BLOCK_CTRL, 690 - .val = 0xff, }, 691 - { .reg = LGDT3305_TP_CTRL_1, 692 - .val = 0x1b, }, 628 + { .reg = LGDT3305_GEN_CTRL_1, .val = 0x03, }, 629 + { .reg = LGDT3305_GEN_CTRL_2, .val = 0xb0, }, 630 + { .reg = LGDT3305_GEN_CTRL_3, .val = 0x01, }, 631 + { .reg = LGDT3305_GEN_CONTROL, .val = 0x6f, }, 632 + { .reg = LGDT3305_GEN_CTRL_4, .val = 0x03, }, 633 + { .reg = LGDT3305_DGTL_AGC_REF_1, .val = 0x32, }, 634 + { .reg = LGDT3305_DGTL_AGC_REF_2, .val = 0xc4, }, 635 + { .reg = LGDT3305_CR_CTR_FREQ_1, .val = 0x00, }, 636 + { .reg = LGDT3305_CR_CTR_FREQ_2, .val = 0x00, }, 637 + { .reg = LGDT3305_CR_CTR_FREQ_3, .val = 0x00, }, 638 + { .reg = LGDT3305_CR_CTR_FREQ_4, .val = 0x00, }, 639 + { .reg = LGDT3305_CR_CTRL_7, .val = 0x79, }, 640 + { .reg = LGDT3305_AGC_POWER_REF_1, .val = 0x32, }, 641 + { .reg = LGDT3305_AGC_POWER_REF_2, .val = 0xc4, }, 642 + { .reg = LGDT3305_AGC_DELAY_PT_1, .val = 0x0d, }, 643 + { .reg = LGDT3305_AGC_DELAY_PT_2, .val = 0x30, }, 644 + { .reg = LGDT3305_RFAGC_LOOP_FLTR_BW_1, .val = 0x80, }, 645 + { .reg = LGDT3305_RFAGC_LOOP_FLTR_BW_2, .val = 0x00, }, 646 + { .reg = LGDT3305_IFBW_1, .val = 0x80, }, 647 + { .reg = LGDT3305_IFBW_2, .val = 0x00, }, 648 + { .reg = LGDT3305_AGC_CTRL_1, .val = 0x30, }, 649 + { .reg = LGDT3305_AGC_CTRL_4, .val = 0x61, }, 650 + { .reg = LGDT3305_FEC_BLOCK_CTRL, .val = 0xff, }, 651 + { .reg = LGDT3305_TP_CTRL_1, .val = 0x1b, }, 693 652 }; 694 653 695 654 lg_dbg("\n"); 696 655 697 - ret = lgdt3305_write_regs(state, lgdt3305_init_data, 698 - ARRAY_SIZE(lgdt3305_init_data)); 656 + switch (state->cfg->demod_chip) { 657 + case LGDT3304: 658 + ret = lgdt3305_write_regs(state, lgdt3304_init_data, 659 + ARRAY_SIZE(lgdt3304_init_data)); 660 + break; 661 + case LGDT3305: 662 + ret = lgdt3305_write_regs(state, lgdt3305_init_data, 663 + ARRAY_SIZE(lgdt3305_init_data)); 664 + break; 665 + default: 666 + ret = -EINVAL; 667 + } 699 668 if (lg_fail(ret)) 700 669 goto fail; 701 670 ··· 1167 1198 .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB 1168 1199 }, 1169 1200 .i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl, 1170 - .init = lgdt3304_init, 1201 + .init = lgdt3305_init, 1171 1202 .set_frontend = lgdt3304_set_parameters, 1172 1203 .get_frontend = lgdt3305_get_frontend, 1173 1204 .get_tune_settings = lgdt3305_get_tune_settings,