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>
This commit is contained in:
Родитель
dd6ed861d6
Коммит
f0289efa19
|
@ -1352,8 +1352,7 @@ static int dst_get_tuna(struct dst_state *state)
|
|||
return retval;
|
||||
}
|
||||
if ((state->type_flags & DST_TYPE_HAS_VLF) &&
|
||||
!(state->dst_type == DST_TYPE_IS_CABLE) &&
|
||||
!(state->dst_type == DST_TYPE_IS_ATSC)) {
|
||||
!(state->dst_type == DST_TYPE_IS_ATSC)) {
|
||||
|
||||
if (state->rx_tuna[9] != dst_check_sum(&state->rx_tuna[0], 9)) {
|
||||
dprintk(verbose, DST_INFO, 1, "checksum failure ? ");
|
||||
|
@ -1820,8 +1819,13 @@ static struct dvb_frontend_ops dst_dvbc_ops = {
|
|||
.frequency_max = 858000000,
|
||||
.symbol_rate_min = 1000000,
|
||||
.symbol_rate_max = 45000000,
|
||||
/* . symbol_rate_tolerance = ???,*/
|
||||
.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO
|
||||
.caps = FE_CAN_FEC_AUTO |
|
||||
FE_CAN_QAM_AUTO |
|
||||
FE_CAN_QAM_16 |
|
||||
FE_CAN_QAM_32 |
|
||||
FE_CAN_QAM_64 |
|
||||
FE_CAN_QAM_128 |
|
||||
FE_CAN_QAM_256
|
||||
},
|
||||
|
||||
.release = dst_release,
|
||||
|
|
Загрузка…
Ссылка в новой задаче