Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (6675): Allow selecting the proper SCode table for DTV

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

+33
+18
drivers/media/video/tuner-xc2028.c
··· 914 914 T_ANALOG_TV, type, p->std); 915 915 } 916 916 917 + static unsigned int demod_type [] = { 918 + [XC3028_FE_DEFAULT] = 0, 919 + [XC3028_FE_LG60] = LG60, 920 + [XC3028_FE_ATI638] = ATI638, 921 + [XC3028_FE_OREN538] = OREN538, 922 + [XC3028_FE_OREN36] = OREN36, 923 + [XC3028_FE_TOYOTA388] = TOYOTA388, 924 + [XC3028_FE_TOYOTA794] = TOYOTA794, 925 + [XC3028_FE_DIBCOM52] = DIBCOM52, 926 + [XC3028_FE_ZARLINK456] = ZARLINK456, 927 + [XC3028_FE_CHINA] = CHINA, 928 + }; 929 + 917 930 static int xc2028_set_params(struct dvb_frontend *fe, 918 931 struct dvb_frontend_parameters *p) 919 932 { ··· 977 964 default: 978 965 tuner_err("error: bandwidth not supported.\n"); 979 966 }; 967 + 968 + if (priv->ctrl.demod < 0 || priv->ctrl.demod > ARRAY_SIZE(demod_type)) 969 + tuner_err("error: demod type invalid. Assuming default.\n"); 970 + else 971 + type |= demod_type[priv->ctrl.demod]; 980 972 981 973 return generic_set_freq(fe, p->frequency, 982 974 T_DIGITAL_TV, type, 0);
+15
drivers/media/video/tuner-xc2028.h
··· 11 11 12 12 #define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw" 13 13 14 + enum xc2028_demod_types 15 + { 16 + XC3028_FE_DEFAULT = 0, 17 + XC3028_FE_LG60, /* IF = 6.00 MHz */ 18 + XC3028_FE_ATI638, /* IF = 6.38 MHz */ 19 + XC3028_FE_OREN538, /* IF = 5.38 MHz */ 20 + XC3028_FE_OREN36, /* IF = 3.60 MHz */ 21 + XC3028_FE_TOYOTA388, /* IF = 3.88 MHz */ 22 + XC3028_FE_TOYOTA794, /* IF = 7.94 MHz */ 23 + XC3028_FE_DIBCOM52, /* IF = 5.20 MHz */ 24 + XC3028_FE_ZARLINK456, /* IF = 4.56 MHz */ 25 + XC3028_FE_CHINA, /* IF = 5.20 MHz */ 26 + }; 27 + 14 28 struct xc2028_ctrl { 15 29 char *fname; 16 30 int max_len; ··· 32 18 unsigned int mts :1; 33 19 unsigned int d2633 :1; 34 20 unsigned int input1:1; 21 + enum xc2028_demod_types demod; 35 22 }; 36 23 37 24 struct xc2028_config {