V4L/DVB (6675): Allow selecting the proper SCode table for DTV
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
@@ -914,6 +914,19 @@ static int xc2028_set_analog_freq(struct dvb_frontend *fe,
|
|||||||
T_ANALOG_TV, type, p->std);
|
T_ANALOG_TV, type, p->std);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int demod_type [] = {
|
||||||
|
[XC3028_FE_DEFAULT] = 0,
|
||||||
|
[XC3028_FE_LG60] = LG60,
|
||||||
|
[XC3028_FE_ATI638] = ATI638,
|
||||||
|
[XC3028_FE_OREN538] = OREN538,
|
||||||
|
[XC3028_FE_OREN36] = OREN36,
|
||||||
|
[XC3028_FE_TOYOTA388] = TOYOTA388,
|
||||||
|
[XC3028_FE_TOYOTA794] = TOYOTA794,
|
||||||
|
[XC3028_FE_DIBCOM52] = DIBCOM52,
|
||||||
|
[XC3028_FE_ZARLINK456] = ZARLINK456,
|
||||||
|
[XC3028_FE_CHINA] = CHINA,
|
||||||
|
};
|
||||||
|
|
||||||
static int xc2028_set_params(struct dvb_frontend *fe,
|
static int xc2028_set_params(struct dvb_frontend *fe,
|
||||||
struct dvb_frontend_parameters *p)
|
struct dvb_frontend_parameters *p)
|
||||||
{
|
{
|
||||||
@@ -965,6 +978,11 @@ static int xc2028_set_params(struct dvb_frontend *fe,
|
|||||||
tuner_err("error: bandwidth not supported.\n");
|
tuner_err("error: bandwidth not supported.\n");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (priv->ctrl.demod < 0 || priv->ctrl.demod > ARRAY_SIZE(demod_type))
|
||||||
|
tuner_err("error: demod type invalid. Assuming default.\n");
|
||||||
|
else
|
||||||
|
type |= demod_type[priv->ctrl.demod];
|
||||||
|
|
||||||
return generic_set_freq(fe, p->frequency,
|
return generic_set_freq(fe, p->frequency,
|
||||||
T_DIGITAL_TV, type, 0);
|
T_DIGITAL_TV, type, 0);
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,20 @@
|
|||||||
|
|
||||||
#define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
|
#define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
|
||||||
|
|
||||||
|
enum xc2028_demod_types
|
||||||
|
{
|
||||||
|
XC3028_FE_DEFAULT = 0,
|
||||||
|
XC3028_FE_LG60, /* IF = 6.00 MHz */
|
||||||
|
XC3028_FE_ATI638, /* IF = 6.38 MHz */
|
||||||
|
XC3028_FE_OREN538, /* IF = 5.38 MHz */
|
||||||
|
XC3028_FE_OREN36, /* IF = 3.60 MHz */
|
||||||
|
XC3028_FE_TOYOTA388, /* IF = 3.88 MHz */
|
||||||
|
XC3028_FE_TOYOTA794, /* IF = 7.94 MHz */
|
||||||
|
XC3028_FE_DIBCOM52, /* IF = 5.20 MHz */
|
||||||
|
XC3028_FE_ZARLINK456, /* IF = 4.56 MHz */
|
||||||
|
XC3028_FE_CHINA, /* IF = 5.20 MHz */
|
||||||
|
};
|
||||||
|
|
||||||
struct xc2028_ctrl {
|
struct xc2028_ctrl {
|
||||||
char *fname;
|
char *fname;
|
||||||
int max_len;
|
int max_len;
|
||||||
@@ -18,6 +32,7 @@ struct xc2028_ctrl {
|
|||||||
unsigned int mts :1;
|
unsigned int mts :1;
|
||||||
unsigned int d2633 :1;
|
unsigned int d2633 :1;
|
||||||
unsigned int input1:1;
|
unsigned int input1:1;
|
||||||
|
enum xc2028_demod_types demod;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xc2028_config {
|
struct xc2028_config {
|
||||||
|
Reference in New Issue
Block a user