diff options
Diffstat (limited to 'drivers/media/dvb/frontends/lgdt330x.c')
-rw-r--r-- | drivers/media/dvb/frontends/lgdt330x.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/drivers/media/dvb/frontends/lgdt330x.c b/drivers/media/dvb/frontends/lgdt330x.c index 7852b83b82d4..6a33f5a19a8d 100644 --- a/drivers/media/dvb/frontends/lgdt330x.c +++ b/drivers/media/dvb/frontends/lgdt330x.c | |||
@@ -26,6 +26,8 @@ | |||
26 | * DViCO FusionHDTV 3 Gold-Q | 26 | * DViCO FusionHDTV 3 Gold-Q |
27 | * DViCO FusionHDTV 3 Gold-T | 27 | * DViCO FusionHDTV 3 Gold-T |
28 | * DViCO FusionHDTV 5 Gold | 28 | * DViCO FusionHDTV 5 Gold |
29 | * DViCO FusionHDTV 5 Lite | ||
30 | * Air2PC/AirStar 2 ATSC 3rd generation (HD5000) | ||
29 | * | 31 | * |
30 | * TODO: | 32 | * TODO: |
31 | * signal strength always returns 0. | 33 | * signal strength always returns 0. |
@@ -222,6 +224,11 @@ static int lgdt330x_init(struct dvb_frontend* fe) | |||
222 | 0x4c, 0x14 | 224 | 0x4c, 0x14 |
223 | }; | 225 | }; |
224 | 226 | ||
227 | static u8 flip_lgdt3303_init_data[] = { | ||
228 | 0x4c, 0x14, | ||
229 | 0x87, 0xf3 | ||
230 | }; | ||
231 | |||
225 | struct lgdt330x_state* state = fe->demodulator_priv; | 232 | struct lgdt330x_state* state = fe->demodulator_priv; |
226 | char *chip_name; | 233 | char *chip_name; |
227 | int err; | 234 | int err; |
@@ -234,8 +241,13 @@ static int lgdt330x_init(struct dvb_frontend* fe) | |||
234 | break; | 241 | break; |
235 | case LGDT3303: | 242 | case LGDT3303: |
236 | chip_name = "LGDT3303"; | 243 | chip_name = "LGDT3303"; |
237 | err = i2c_write_demod_bytes(state, lgdt3303_init_data, | 244 | if (state->config->clock_polarity_flip) { |
238 | sizeof(lgdt3303_init_data)); | 245 | err = i2c_write_demod_bytes(state, flip_lgdt3303_init_data, |
246 | sizeof(flip_lgdt3303_init_data)); | ||
247 | } else { | ||
248 | err = i2c_write_demod_bytes(state, lgdt3303_init_data, | ||
249 | sizeof(lgdt3303_init_data)); | ||
250 | } | ||
239 | break; | 251 | break; |
240 | default: | 252 | default: |
241 | chip_name = "undefined"; | 253 | chip_name = "undefined"; |
@@ -743,9 +755,8 @@ static struct dvb_frontend_ops lgdt3302_ops = { | |||
743 | .frequency_min= 54000000, | 755 | .frequency_min= 54000000, |
744 | .frequency_max= 858000000, | 756 | .frequency_max= 858000000, |
745 | .frequency_stepsize= 62500, | 757 | .frequency_stepsize= 62500, |
746 | /* Symbol rate is for all VSB modes need to check QAM */ | 758 | .symbol_rate_min = 5056941, /* QAM 64 */ |
747 | .symbol_rate_min = 10762000, | 759 | .symbol_rate_max = 10762000, /* VSB 8 */ |
748 | .symbol_rate_max = 10762000, | ||
749 | .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB | 760 | .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB |
750 | }, | 761 | }, |
751 | .init = lgdt330x_init, | 762 | .init = lgdt330x_init, |
@@ -767,9 +778,8 @@ static struct dvb_frontend_ops lgdt3303_ops = { | |||
767 | .frequency_min= 54000000, | 778 | .frequency_min= 54000000, |
768 | .frequency_max= 858000000, | 779 | .frequency_max= 858000000, |
769 | .frequency_stepsize= 62500, | 780 | .frequency_stepsize= 62500, |
770 | /* Symbol rate is for all VSB modes need to check QAM */ | 781 | .symbol_rate_min = 5056941, /* QAM 64 */ |
771 | .symbol_rate_min = 10762000, | 782 | .symbol_rate_max = 10762000, /* VSB 8 */ |
772 | .symbol_rate_max = 10762000, | ||
773 | .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB | 783 | .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB |
774 | }, | 784 | }, |
775 | .init = lgdt330x_init, | 785 | .init = lgdt330x_init, |