[media] rtl2832: support for tua9001 tuner
authorAntti Palosaari <crope@iki.fi>
Wed, 12 Sep 2012 01:27:08 +0000 (22:27 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 23 Sep 2012 22:45:34 +0000 (19:45 -0300)
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb-frontends/rtl2832.c
drivers/media/dvb-frontends/rtl2832.h
drivers/media/dvb-frontends/rtl2832_priv.h

index d670fe76860de7d3ef6e330c86f0f3518d19da1c..8f8a5b0c7f3f13ffdcc35bd5713c4db6530fa439 100644 (file)
@@ -462,15 +462,17 @@ static int rtl2832_init(struct dvb_frontend *fe)
                len = ARRAY_SIZE(rtl2832_tuner_init_fc0012);
                init = rtl2832_tuner_init_fc0012;
                break;
+       case RTL2832_TUNER_TUA9001:
+               len = ARRAY_SIZE(rtl2832_tuner_init_tua9001);
+               init = rtl2832_tuner_init_tua9001;
+               break;
        default:
                ret = -EINVAL;
                goto err;
        }
 
        for (i = 0; i < len; i++) {
-               ret = rtl2832_wr_demod_reg(priv,
-                               rtl2832_tuner_init_fc0012[i].reg,
-                               rtl2832_tuner_init_fc0012[i].value);
+               ret = rtl2832_wr_demod_reg(priv, init[i].reg, init[i].value);
                if (ret)
                        goto err;
        }
index 270fd1e440de9a3c671d6ed480531455e1e327ad..f7cb09a2cb6efedf346ab45913ff1201ef5b1cd8 100644 (file)
@@ -47,6 +47,7 @@ struct rtl2832_config {
         * tuner
         * XXX: This must be keep sync with dvb_usb_rtl28xxu demod driver.
         */
+#define RTL2832_TUNER_TUA9001   0x24
 #define RTL2832_TUNER_FC0012    0x26
 #define RTL2832_TUNER_FC0013    0x29
        u8 tuner;
index 65dd62a65684341b4893213bc6b0c86ec2baa2db..75af963f444f4ca64ba76aed421364613a47bb1d 100644 (file)
@@ -257,6 +257,33 @@ enum DVBT_REG_BIT_NAME {
        DVBT_REG_BIT_NAME_ITEM_TERMINATOR,
 };
 
+static const struct rtl2832_reg_value rtl2832_tuner_init_tua9001[] = {
+       {DVBT_DAGC_TRG_VAL,             0x39},
+       {DVBT_AGC_TARG_VAL_0,            0x0},
+       {DVBT_AGC_TARG_VAL_8_1,         0x5a},
+       {DVBT_AAGC_LOOP_GAIN,           0x16},
+       {DVBT_LOOP_GAIN2_3_0,            0x6},
+       {DVBT_LOOP_GAIN2_4,              0x1},
+       {DVBT_LOOP_GAIN3,               0x16},
+       {DVBT_VTOP1,                    0x35},
+       {DVBT_VTOP2,                    0x21},
+       {DVBT_VTOP3,                    0x21},
+       {DVBT_KRF1,                      0x0},
+       {DVBT_KRF2,                     0x40},
+       {DVBT_KRF3,                     0x10},
+       {DVBT_KRF4,                     0x10},
+       {DVBT_IF_AGC_MIN,               0x80},
+       {DVBT_IF_AGC_MAX,               0x7f},
+       {DVBT_RF_AGC_MIN,               0x9c},
+       {DVBT_RF_AGC_MAX,               0x7f},
+       {DVBT_POLAR_RF_AGC,              0x0},
+       {DVBT_POLAR_IF_AGC,              0x0},
+       {DVBT_AD7_SETTING,            0xe9f4},
+       {DVBT_OPT_ADC_IQ,                0x1},
+       {DVBT_AD_AVI,                    0x0},
+       {DVBT_AD_AVQ,                    0x0},
+};
+
 static const struct rtl2832_reg_value rtl2832_tuner_init_fc0012[] = {
        {DVBT_DAGC_TRG_VAL,             0x5a},
        {DVBT_AGC_TARG_VAL_0,            0x0},