V4L/DVB (11987): au8522: add support for QAM-64 modulation type
Add support for QAM64 modulation type to the au8522 demod driver. Signed-off-by: Frank Dischner <phaedrus961@gmail.com> Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
24dff657e7
Коммит
040d4cbfb3
|
@ -367,11 +367,90 @@ static struct {
|
|||
{ 0x8231, 0x13 },
|
||||
};
|
||||
|
||||
/* QAM Modulation table */
|
||||
/* QAM64 Modulation table */
|
||||
static struct {
|
||||
u16 reg;
|
||||
u16 data;
|
||||
} QAM_mod_tab[] = {
|
||||
} QAM64_mod_tab[] = {
|
||||
{ 0x00a3, 0x09 },
|
||||
{ 0x00a4, 0x00 },
|
||||
{ 0x0081, 0xc4 },
|
||||
{ 0x00a5, 0x40 },
|
||||
{ 0x00aa, 0x77 },
|
||||
{ 0x00ad, 0x77 },
|
||||
{ 0x00a6, 0x67 },
|
||||
{ 0x0262, 0x20 },
|
||||
{ 0x021c, 0x30 },
|
||||
{ 0x00b8, 0x3e },
|
||||
{ 0x00b9, 0xf0 },
|
||||
{ 0x00ba, 0x01 },
|
||||
{ 0x00bb, 0x18 },
|
||||
{ 0x00bc, 0x50 },
|
||||
{ 0x00bd, 0x00 },
|
||||
{ 0x00be, 0xea },
|
||||
{ 0x00bf, 0xef },
|
||||
{ 0x00c0, 0xfc },
|
||||
{ 0x00c1, 0xbd },
|
||||
{ 0x00c2, 0x1f },
|
||||
{ 0x00c3, 0xfc },
|
||||
{ 0x00c4, 0xdd },
|
||||
{ 0x00c5, 0xaf },
|
||||
{ 0x00c6, 0x00 },
|
||||
{ 0x00c7, 0x38 },
|
||||
{ 0x00c8, 0x30 },
|
||||
{ 0x00c9, 0x05 },
|
||||
{ 0x00ca, 0x4a },
|
||||
{ 0x00cb, 0xd0 },
|
||||
{ 0x00cc, 0x01 },
|
||||
{ 0x00cd, 0xd9 },
|
||||
{ 0x00ce, 0x6f },
|
||||
{ 0x00cf, 0xf9 },
|
||||
{ 0x00d0, 0x70 },
|
||||
{ 0x00d1, 0xdf },
|
||||
{ 0x00d2, 0xf7 },
|
||||
{ 0x00d3, 0xc2 },
|
||||
{ 0x00d4, 0xdf },
|
||||
{ 0x00d5, 0x02 },
|
||||
{ 0x00d6, 0x9a },
|
||||
{ 0x00d7, 0xd0 },
|
||||
{ 0x0250, 0x0d },
|
||||
{ 0x0251, 0xcd },
|
||||
{ 0x0252, 0xe0 },
|
||||
{ 0x0253, 0x05 },
|
||||
{ 0x0254, 0xa7 },
|
||||
{ 0x0255, 0xff },
|
||||
{ 0x0256, 0xed },
|
||||
{ 0x0257, 0x5b },
|
||||
{ 0x0258, 0xae },
|
||||
{ 0x0259, 0xe6 },
|
||||
{ 0x025a, 0x3d },
|
||||
{ 0x025b, 0x0f },
|
||||
{ 0x025c, 0x0d },
|
||||
{ 0x025d, 0xea },
|
||||
{ 0x025e, 0xf2 },
|
||||
{ 0x025f, 0x51 },
|
||||
{ 0x0260, 0xf5 },
|
||||
{ 0x0261, 0x06 },
|
||||
{ 0x021a, 0x00 },
|
||||
{ 0x0546, 0x40 },
|
||||
{ 0x0210, 0xc7 },
|
||||
{ 0x0211, 0xaa },
|
||||
{ 0x0212, 0xab },
|
||||
{ 0x0213, 0x02 },
|
||||
{ 0x0502, 0x00 },
|
||||
{ 0x0121, 0x04 },
|
||||
{ 0x0122, 0x04 },
|
||||
{ 0x052e, 0x10 },
|
||||
{ 0x00a4, 0xca },
|
||||
{ 0x00a7, 0x40 },
|
||||
{ 0x0526, 0x01 },
|
||||
};
|
||||
|
||||
/* QAM256 Modulation table */
|
||||
static struct {
|
||||
u16 reg;
|
||||
u16 data;
|
||||
} QAM256_mod_tab[] = {
|
||||
{ 0x80a3, 0x09 },
|
||||
{ 0x80a4, 0x00 },
|
||||
{ 0x8081, 0xc4 },
|
||||
|
@ -464,12 +543,19 @@ static int au8522_enable_modulation(struct dvb_frontend *fe,
|
|||
au8522_set_if(fe, state->config->vsb_if);
|
||||
break;
|
||||
case QAM_64:
|
||||
case QAM_256:
|
||||
dprintk("%s() QAM 64/256\n", __func__);
|
||||
for (i = 0; i < ARRAY_SIZE(QAM_mod_tab); i++)
|
||||
dprintk("%s() QAM 64\n", __func__);
|
||||
for (i = 0; i < ARRAY_SIZE(QAM64_mod_tab); i++)
|
||||
au8522_writereg(state,
|
||||
QAM_mod_tab[i].reg,
|
||||
QAM_mod_tab[i].data);
|
||||
QAM64_mod_tab[i].reg,
|
||||
QAM64_mod_tab[i].data);
|
||||
au8522_set_if(fe, state->config->qam_if);
|
||||
break;
|
||||
case QAM_256:
|
||||
dprintk("%s() QAM 256\n", __func__);
|
||||
for (i = 0; i < ARRAY_SIZE(QAM256_mod_tab); i++)
|
||||
au8522_writereg(state,
|
||||
QAM256_mod_tab[i].reg,
|
||||
QAM256_mod_tab[i].data);
|
||||
au8522_set_if(fe, state->config->qam_if);
|
||||
break;
|
||||
default:
|
||||
|
|
Загрузка…
Ссылка в новой задаче