[media] si2165: set list of DVB-T registers together
authorMatthias Schwarzott <zzam@gentoo.org>
Thu, 19 Nov 2015 20:04:00 +0000 (18:04 -0200)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Thu, 3 Dec 2015 14:17:07 +0000 (12:17 -0200)
Use si2165_write_reg_list() to do the DVB-T mode initialization altogether.

Signed-off-by: Matthias Schwarzott <zzam@gentoo.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/si2165.c

index 807a3c9275bdafdbec51e308092e611db1f5ea36..a0e6ad8a10f106e8ce6d2ce67775b9345b1c7091 100644 (file)
@@ -803,6 +803,29 @@ static const struct si2165_reg_value_pair agc_rewrite[] = {
        { 0x0123, 0x70 }
 };
 
+static const struct si2165_reg_value_pair dvbt_regs[] = {
+       /* standard = DVB-T */
+       { 0x00ec, 0x01 },
+       { 0x08f8, 0x00 },
+       /* impulsive_noise_remover */
+       { 0x031c, 0x01 },
+       { 0x00cb, 0x00 },
+       /* agc2 */
+       { 0x016e, 0x41 },
+       { 0x016c, 0x0e },
+       { 0x016d, 0x10 },
+       /* agc */
+       { 0x015b, 0x03 },
+       { 0x0150, 0x78 },
+       /* agc */
+       { 0x01a0, 0x78 },
+       { 0x01c8, 0x68 },
+       /* freq_sync_range */
+       REG16(0x030c, 0x0064),
+       /* gp_reg0 */
+       { 0x0387, 0x00 }
+};
+
 static int si2165_set_frontend(struct dvb_frontend *fe)
 {
        int ret;
@@ -825,18 +848,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
                bw10k = 800;
        }
 
-       /* standard = DVB-T */
-       ret = si2165_writereg8(state, 0x00ec, 0x01);
-       if (ret < 0)
-               return ret;
        ret = si2165_adjust_pll_divl(state, 12);
        if (ret < 0)
                return ret;
 
        ret = si2165_set_if_freq_shift(state);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x08f8, 0x00);
        if (ret < 0)
                return ret;
        /* bandwidth in 10KHz steps */
@@ -846,48 +862,11 @@ static int si2165_set_frontend(struct dvb_frontend *fe)
        ret = si2165_set_oversamp(state, dvb_rate);
        if (ret < 0)
                return ret;
-       /* impulsive_noise_remover */
-       ret = si2165_writereg8(state, 0x031c, 0x01);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x00cb, 0x00);
-       if (ret < 0)
-               return ret;
-       /* agc2 */
-       ret = si2165_writereg8(state, 0x016e, 0x41);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x016c, 0x0e);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x016d, 0x10);
-       if (ret < 0)
-               return ret;
-       /* agc */
-       ret = si2165_writereg8(state, 0x015b, 0x03);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x0150, 0x78);
-       if (ret < 0)
-               return ret;
-       /* agc */
-       ret = si2165_writereg8(state, 0x01a0, 0x78);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x01c8, 0x68);
-       if (ret < 0)
-               return ret;
-       /* freq_sync_range */
-       ret = si2165_writereg16(state, 0x030c, 0x0064);
-       if (ret < 0)
-               return ret;
-       /* gp_reg0 */
-       ret = si2165_readreg8(state, 0x0387, val);
-       if (ret < 0)
-               return ret;
-       ret = si2165_writereg8(state, 0x0387, 0x00);
+
+       ret = si2165_write_reg_list(state, dvbt_regs, ARRAY_SIZE(dvbt_regs));
        if (ret < 0)
                return ret;
+
        /* dsp_addr_jump */
        ret = si2165_writereg32(state, 0x0348, 0xf4000000);
        if (ret < 0)