V4L/DVB (8146): lgdt330x: add additional FEC control configuration option
authorMichael Krufky <mkrufky@linuxtv.org>
Sat, 28 Jun 2008 05:06:50 +0000 (02:06 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 20 Jul 2008 10:14:05 +0000 (07:14 -0300)
Allow the following configuration, by passing clock_polarity_flip = 2:

Enable FEC automatic reset. Disable spectrum inversion.
Enable viterbi resynchronization. Set polarity indicator high.
Enable error flag insertion.

Thanks to Daniel Gimpelevich, for discovering that this configuration
is used on the AVerMedia AVerTVHD Volar.

Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
CC: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/frontends/lgdt330x.c

index f0195c8272f4486c4c67d402025f50e0bfe64d75..056387b41a8fc516e36e8b02d0835562a77eb8ec 100644 (file)
@@ -226,11 +226,16 @@ static int lgdt330x_init(struct dvb_frontend* fe)
                0x4c, 0x14
        };
 
-       static u8 flip_lgdt3303_init_data[] = {
+       static u8 flip_1_lgdt3303_init_data[] = {
                0x4c, 0x14,
                0x87, 0xf3
        };
 
+       static u8 flip_2_lgdt3303_init_data[] = {
+               0x4c, 0x14,
+               0x87, 0xda
+       };
+
        struct lgdt330x_state* state = fe->demodulator_priv;
        char  *chip_name;
        int    err;
@@ -243,10 +248,19 @@ static int lgdt330x_init(struct dvb_frontend* fe)
                break;
        case LGDT3303:
                chip_name = "LGDT3303";
-               if (state->config->clock_polarity_flip) {
-                       err = i2c_write_demod_bytes(state, flip_lgdt3303_init_data,
-                                                   sizeof(flip_lgdt3303_init_data));
-               } else {
+               switch (state->config->clock_polarity_flip) {
+               case 2:
+                       err = i2c_write_demod_bytes(state,
+                                       flip_2_lgdt3303_init_data,
+                                       sizeof(flip_2_lgdt3303_init_data));
+                       break;
+               case 1:
+                       err = i2c_write_demod_bytes(state,
+                                       flip_1_lgdt3303_init_data,
+                                       sizeof(flip_1_lgdt3303_init_data));
+                       break;
+               case 0:
+               default:
                        err = i2c_write_demod_bytes(state, lgdt3303_init_data,
                                                    sizeof(lgdt3303_init_data));
                }