V4L/DVB (7431): tda18271: allow device-specific configuration of IF level
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
ae07d042f6
commit
14c74b23b6
@@ -55,13 +55,13 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
|
|||||||
|
|
||||||
/* update IF output level & IF notch frequency */
|
/* update IF output level & IF notch frequency */
|
||||||
regs[R_EP4] &= ~0x1c; /* clear if level bits */
|
regs[R_EP4] &= ~0x1c; /* clear if level bits */
|
||||||
|
regs[R_EP4] |= (map->if_lvl << 2);
|
||||||
|
|
||||||
switch (priv->mode) {
|
switch (priv->mode) {
|
||||||
case TDA18271_ANALOG:
|
case TDA18271_ANALOG:
|
||||||
regs[R_MPD] &= ~0x80; /* IF notch = 0 */
|
regs[R_MPD] &= ~0x80; /* IF notch = 0 */
|
||||||
break;
|
break;
|
||||||
case TDA18271_DIGITAL:
|
case TDA18271_DIGITAL:
|
||||||
regs[R_EP4] |= 0x04; /* IF level = 1 */
|
|
||||||
regs[R_MPD] |= 0x80; /* IF notch = 1 */
|
regs[R_MPD] |= 0x80; /* IF notch = 1 */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -1187,65 +1187,65 @@ fail:
|
|||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
|
|
||||||
static struct tda18271_std_map tda18271c1_std_map = {
|
static struct tda18271_std_map tda18271c1_std_map = {
|
||||||
.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0 },
|
.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x18 */
|
.agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */
|
||||||
.atv_b = { .if_freq = 6750, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_b = { .if_freq = 6750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_dk = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
|
.atv_dk = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0f */
|
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
|
||||||
.atv_gh = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
|
.atv_gh = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0f */
|
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
|
||||||
.atv_i = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
|
.atv_i = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0f */
|
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
|
||||||
.atv_l = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
|
.atv_l = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0f */
|
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
|
||||||
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
|
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0f */
|
.agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
|
||||||
.atv_mn = { .if_freq = 5750, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
|
.atv_mn = { .if_freq = 5750, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0d */
|
.agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */
|
||||||
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
|
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1c */
|
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
|
||||||
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
|
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1c */
|
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
|
||||||
.dvbt_7 = { .if_freq = 3800, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
|
.dvbt_7 = { .if_freq = 3800, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1d */
|
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
|
||||||
.dvbt_8 = { .if_freq = 4300, .fm_rfn = 0, .agc_mode = 3, .std = 6 },
|
.dvbt_8 = { .if_freq = 4300, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1e */
|
.agc_mode = 3, .std = 6 }, /* EP3[4:0] 0x1e */
|
||||||
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
|
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1d */
|
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
|
||||||
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
|
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1f */
|
.agc_mode = 3, .std = 7 }, /* 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, .agc_mode = 3, .std = 0 },
|
.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x18 */
|
.agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */
|
||||||
.atv_b = { .if_freq = 6000, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
|
.atv_b = { .if_freq = 6000, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0d */
|
.agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */
|
||||||
.atv_dk = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_dk = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_gh = { .if_freq = 7100, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_gh = { .if_freq = 7100, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_i = { .if_freq = 7250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_i = { .if_freq = 7250, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_l = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_l = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
|
.atv_lc = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0e */
|
.agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
|
||||||
.atv_mn = { .if_freq = 5400, .fm_rfn = 0, .agc_mode = 1, .std = 4 },
|
.atv_mn = { .if_freq = 5400, .fm_rfn = 0, .if_lvl = 0,
|
||||||
/* EP3[4:0] 0x0c */
|
.agc_mode = 1, .std = 4 }, /* EP3[4:0] 0x0c */
|
||||||
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
|
.atsc_6 = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1c */
|
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
|
||||||
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
|
.dvbt_6 = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1c */
|
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
|
||||||
.dvbt_7 = { .if_freq = 3500, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
|
.dvbt_7 = { .if_freq = 3500, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1c */
|
.agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
|
||||||
.dvbt_8 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
|
.dvbt_8 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1d */
|
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
|
||||||
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
|
.qam_6 = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1d */
|
.agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
|
||||||
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
|
.qam_8 = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1,
|
||||||
/* EP3[4:0] 0x1f */
|
.agc_mode = 3, .std = 7 }, /* EP3[4:0] 0x1f */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*---------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------*/
|
||||||
|
@@ -33,6 +33,8 @@ struct tda18271_std_map_item {
|
|||||||
unsigned int std:3;
|
unsigned int std:3;
|
||||||
/* EP4[7] */
|
/* EP4[7] */
|
||||||
unsigned int fm_rfn:1;
|
unsigned int fm_rfn:1;
|
||||||
|
/* EP4[4:2] */
|
||||||
|
unsigned int if_lvl:3;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct tda18271_std_map {
|
struct tda18271_std_map {
|
||||||
|
@@ -165,8 +165,8 @@ 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, .agc_mode = 3, .std = 3 },
|
.atsc_6 = { .if_freq = 5380, .if_lvl = 6, .agc_mode = 3, .std = 3 },
|
||||||
.qam_6 = { .if_freq = 4000, .agc_mode = 3, .std = 0 },
|
.qam_6 = { .if_freq = 4000, .if_lvl = 6, .agc_mode = 3, .std = 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct tda18271_config hauppauge_tda18271_config = {
|
static struct tda18271_config hauppauge_tda18271_config = {
|
||||||
|
Reference in New Issue
Block a user