Commit c0dc0c11 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab

V4L/DVB (7432): tda18271: allow device-specific configuration of rf agc top

allow device-specific configuration of rf agc rf top and if top
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 14c74b23
...@@ -70,15 +70,9 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe, ...@@ -70,15 +70,9 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
regs[R_EP4] &= ~0x80; regs[R_EP4] &= ~0x80;
regs[R_EP4] |= map->fm_rfn << 7; regs[R_EP4] |= map->fm_rfn << 7;
/* update RF_TOP / IF_TOP */ /* update rf top / if top */
switch (priv->mode) { regs[R_EB22] = 0x00;
case TDA18271_ANALOG: regs[R_EB22] |= map->rfagc_top;
regs[R_EB22] = 0x2c;
break;
case TDA18271_DIGITAL:
regs[R_EB22] = 0x37;
break;
}
tda18271_write_regs(fe, R_EB22, 1); tda18271_write_regs(fe, R_EB22, 1);
/* --------------------------------------------------------------- */ /* --------------------------------------------------------------- */
......
...@@ -1187,65 +1187,65 @@ int tda18271_lookup_map(struct dvb_frontend *fe, ...@@ -1187,65 +1187,65 @@ int tda18271_lookup_map(struct dvb_frontend *fe,
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
static struct tda18271_std_map tda18271c1_std_map = { static struct tda18271_std_map tda18271c1_std_map = {
.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0, .fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0,
.agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x18 */
.atv_b = { .if_freq = 6750, .fm_rfn = 0, .if_lvl = 0, .atv_b = { .if_freq = 6750, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_dk = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0, .atv_dk = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7,
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0f */
.atv_gh = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0, .atv_gh = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7,
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0f */
.atv_i = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0, .atv_i = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7,
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0f */
.atv_l = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0, .atv_l = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7,
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0f */
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0, .atv_lc = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 7,
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0f */
.atv_mn = { .if_freq = 5750, .fm_rfn = 0, .if_lvl = 0, .atv_mn = { .if_freq = 5750, .fm_rfn = 0, .agc_mode = 1, .std = 5,
.agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0d */
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1, .atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4,
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1c */
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1, .dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4,
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1c */
.dvbt_7 = { .if_freq = 3800, .fm_rfn = 0, .if_lvl = 1, .dvbt_7 = { .if_freq = 3800, .fm_rfn = 0, .agc_mode = 3, .std = 5,
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1d */
.dvbt_8 = { .if_freq = 4300, .fm_rfn = 0, .if_lvl = 1, .dvbt_8 = { .if_freq = 4300, .fm_rfn = 0, .agc_mode = 3, .std = 6,
.agc_mode = 3, .std = 6 }, /* EP3[4:0] 0x1e */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1e */
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1, .qam_6 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5,
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1d */
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1, .qam_8 = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7,
.agc_mode = 3, .std = 7 }, /* EP3[4:0] 0x1f */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1f */
}; };
static struct tda18271_std_map tda18271c2_std_map = { static struct tda18271_std_map tda18271c2_std_map = {
.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0, .fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0,
.agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x18 */
.atv_b = { .if_freq = 6000, .fm_rfn = 0, .if_lvl = 0, .atv_b = { .if_freq = 6000, .fm_rfn = 0, .agc_mode = 1, .std = 5,
.agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0d */
.atv_dk = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0, .atv_dk = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_gh = { .if_freq = 7100, .fm_rfn = 0, .if_lvl = 0, .atv_gh = { .if_freq = 7100, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_i = { .if_freq = 7250, .fm_rfn = 0, .if_lvl = 0, .atv_i = { .if_freq = 7250, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_l = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0, .atv_l = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0, .atv_lc = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 6,
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0e */
.atv_mn = { .if_freq = 5400, .fm_rfn = 0, .if_lvl = 0, .atv_mn = { .if_freq = 5400, .fm_rfn = 0, .agc_mode = 1, .std = 4,
.agc_mode = 1, .std = 4 }, /* EP3[4:0] 0x0c */ .if_lvl = 0, .rfagc_top = 0x2c, }, /* EP3[4:0] 0x0c */
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1, .atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4,
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1c */
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1, .dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4,
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1c */
.dvbt_7 = { .if_freq = 3500, .fm_rfn = 0, .if_lvl = 1, .dvbt_7 = { .if_freq = 3500, .fm_rfn = 0, .agc_mode = 3, .std = 4,
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1c */
.dvbt_8 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1, .dvbt_8 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5,
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1d */
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1, .qam_6 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5,
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1d */
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1, .qam_8 = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7,
.agc_mode = 3, .std = 7 }, /* EP3[4:0] 0x1f */ .if_lvl = 1, .rfagc_top = 0x37, }, /* EP3[4:0] 0x1f */
}; };
/*---------------------------------------------------------------------*/ /*---------------------------------------------------------------------*/
......
...@@ -35,6 +35,8 @@ struct tda18271_std_map_item { ...@@ -35,6 +35,8 @@ struct tda18271_std_map_item {
unsigned int fm_rfn:1; unsigned int fm_rfn:1;
/* EP4[4:2] */ /* EP4[4:2] */
unsigned int if_lvl:3; unsigned int if_lvl:3;
/* EB22[6:0] */
unsigned int rfagc_top:7;
}; };
struct tda18271_std_map { struct tda18271_std_map {
......
...@@ -165,8 +165,10 @@ static struct tda829x_config tda829x_no_probe = { ...@@ -165,8 +165,10 @@ static struct tda829x_config tda829x_no_probe = {
}; };
static struct tda18271_std_map hauppauge_tda18271_std_map = { static struct tda18271_std_map hauppauge_tda18271_std_map = {
.atsc_6 = { .if_freq = 5380, .if_lvl = 6, .agc_mode = 3, .std = 3 }, .atsc_6 = { .if_freq = 5380, .agc_mode = 3, .std = 3,
.qam_6 = { .if_freq = 4000, .if_lvl = 6, .agc_mode = 3, .std = 0 }, .if_lvl = 6, .rfagc_top = 0x37 },
.qam_6 = { .if_freq = 4000, .agc_mode = 3, .std = 0,
.if_lvl = 6, .rfagc_top = 0x37 },
}; };
static struct tda18271_config hauppauge_tda18271_config = { static struct tda18271_config hauppauge_tda18271_config = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment