diff options
author | Klaas de Waal <klaas.de.waal@gmail.com> | 2010-02-07 12:09:16 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-02-26 13:10:57 -0500 |
commit | f0289efa1938eac27a98883bf33af946b13e1110 (patch) | |
tree | b3096c3fbc99dafb642bed547d2eada49d31f602 | |
parent | dd6ed861d64f86493e7a6bf92c6fcd99d5e3391c (diff) |
V4L/DVB: dst: fixes for DVB-C Twinhan VP2031
Remove check "state->dst_type == DST_DTYPE_IS_CABLE" in function
dst_get_tuna (around line 1352) to select the correct checksum
computation
Fill in the .caps field in struct dst_dvbc_ops (around line 1824) with
all the supported QAM modulation methods to match the capabilities of
the card as implemented in function dst_set_modulation (around line
502). Note that beginning with linux kernel version 2.6.32 the
modulation method is checked (by function
dvb_frontend_check_parameters in file
drivers/media/dvb/dvb-core/dvb_frontend.c) and thus tuning fails if
you use a modulation method that is not present in the .caps field.
This patch has been tested on a Twinhan VP2031A DVB-C card with the
2.6.32.2 kernel.
Signed-off-by: Klaas de Waal <klaas.de.waal@gmail.com>
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/dvb/bt8xx/dst.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/dvb/bt8xx/dst.c b/drivers/media/dvb/bt8xx/dst.c index 91353a6faf1d..8b0cde38984d 100644 --- a/drivers/media/dvb/bt8xx/dst.c +++ b/drivers/media/dvb/bt8xx/dst.c | |||
@@ -1352,8 +1352,7 @@ static int dst_get_tuna(struct dst_state *state) | |||
1352 | return retval; | 1352 | return retval; |
1353 | } | 1353 | } |
1354 | if ((state->type_flags & DST_TYPE_HAS_VLF) && | 1354 | if ((state->type_flags & DST_TYPE_HAS_VLF) && |
1355 | !(state->dst_type == DST_TYPE_IS_CABLE) && | 1355 | !(state->dst_type == DST_TYPE_IS_ATSC)) { |
1356 | !(state->dst_type == DST_TYPE_IS_ATSC)) { | ||
1357 | 1356 | ||
1358 | if (state->rx_tuna[9] != dst_check_sum(&state->rx_tuna[0], 9)) { | 1357 | if (state->rx_tuna[9] != dst_check_sum(&state->rx_tuna[0], 9)) { |
1359 | dprintk(verbose, DST_INFO, 1, "checksum failure ? "); | 1358 | dprintk(verbose, DST_INFO, 1, "checksum failure ? "); |
@@ -1820,8 +1819,13 @@ static struct dvb_frontend_ops dst_dvbc_ops = { | |||
1820 | .frequency_max = 858000000, | 1819 | .frequency_max = 858000000, |
1821 | .symbol_rate_min = 1000000, | 1820 | .symbol_rate_min = 1000000, |
1822 | .symbol_rate_max = 45000000, | 1821 | .symbol_rate_max = 45000000, |
1823 | /* . symbol_rate_tolerance = ???,*/ | 1822 | .caps = FE_CAN_FEC_AUTO | |
1824 | .caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO | 1823 | FE_CAN_QAM_AUTO | |
1824 | FE_CAN_QAM_16 | | ||
1825 | FE_CAN_QAM_32 | | ||
1826 | FE_CAN_QAM_64 | | ||
1827 | FE_CAN_QAM_128 | | ||
1828 | FE_CAN_QAM_256 | ||
1825 | }, | 1829 | }, |
1826 | 1830 | ||
1827 | .release = dst_release, | 1831 | .release = dst_release, |