Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14c74b23 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (7431): tda18271: allow device-specific configuration of IF level

parent ae07d042
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,13 +55,13 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,

	/* update IF output level & IF notch frequency */
	regs[R_EP4]  &= ~0x1c; /* clear if level bits */
	regs[R_EP4]  |= (map->if_lvl << 2);

	switch (priv->mode) {
	case TDA18271_ANALOG:
		regs[R_MPD]  &= ~0x80; /* IF notch = 0 */
		break;
	case TDA18271_DIGITAL:
		regs[R_EP4]  |= 0x04; /* IF level = 1 */
		regs[R_MPD]  |= 0x80; /* IF notch = 1 */
		break;
	}
+56 −56
Original line number Diff line number Diff line
@@ -1187,65 +1187,65 @@ fail:
/*---------------------------------------------------------------------*/

static struct tda18271_std_map tda18271c1_std_map = {
	.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0 },
		/* EP3[4:0] 0x18 */
	.atv_b    = { .if_freq = 6750, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_dk   = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
		/* EP3[4:0] 0x0f */
	.atv_gh   = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
		/* EP3[4:0] 0x0f */
	.atv_i    = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
		/* EP3[4:0] 0x0f */
	.atv_l    = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
		/* EP3[4:0] 0x0f */
	.atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
		/* EP3[4:0] 0x0f */
	.atv_mn   = { .if_freq = 5750, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
		/* EP3[4:0] 0x0d */
	.atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
		/* EP3[4:0] 0x1c */
	.dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
		/* EP3[4:0] 0x1c */
	.dvbt_7   = { .if_freq = 3800, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
		/* EP3[4:0] 0x1d */
	.dvbt_8   = { .if_freq = 4300, .fm_rfn = 0, .agc_mode = 3, .std = 6 },
		/* EP3[4:0] 0x1e */
	.qam_6    = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
		/* EP3[4:0] 0x1d */
	.qam_8    = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
		/* EP3[4:0] 0x1f */
	.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0,
		      .agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */
	.atv_b    = { .if_freq = 6750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_dk   = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
	.atv_gh   = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
	.atv_i    = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
	.atv_l    = { .if_freq = 7750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
	.atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 7 }, /* EP3[4:0] 0x0f */
	.atv_mn   = { .if_freq = 5750, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */
	.atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
	.dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
	.dvbt_7   = { .if_freq = 3800, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
	.dvbt_8   = { .if_freq = 4300, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 6 }, /* EP3[4:0] 0x1e */
	.qam_6    = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
	.qam_8    = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 7 }, /* EP3[4:0] 0x1f */
};

static struct tda18271_std_map tda18271c2_std_map = {
	.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0 },
		/* EP3[4:0] 0x18 */
	.atv_b    = { .if_freq = 6000, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
		/* EP3[4:0] 0x0d */
	.atv_dk   = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_gh   = { .if_freq = 7100, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_i    = { .if_freq = 7250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_l    = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
		/* EP3[4:0] 0x0e */
	.atv_mn   = { .if_freq = 5400, .fm_rfn = 0, .agc_mode = 1, .std = 4 },
		/* EP3[4:0] 0x0c */
	.atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
		/* EP3[4:0] 0x1c */
	.dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
		/* EP3[4:0] 0x1c */
	.dvbt_7   = { .if_freq = 3500, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
		/* EP3[4:0] 0x1c */
	.dvbt_8   = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
		/* EP3[4:0] 0x1d */
	.qam_6    = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
		/* EP3[4:0] 0x1d */
	.qam_8    = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
		/* EP3[4:0] 0x1f */
	.fm_radio = { .if_freq = 1250, .fm_rfn = 1, .if_lvl = 0,
		      .agc_mode = 3, .std = 0 }, /* EP3[4:0] 0x18 */
	.atv_b    = { .if_freq = 6000, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 5 }, /* EP3[4:0] 0x0d */
	.atv_dk   = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_gh   = { .if_freq = 7100, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_i    = { .if_freq = 7250, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_l    = { .if_freq = 6900, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 6 }, /* EP3[4:0] 0x0e */
	.atv_mn   = { .if_freq = 5400, .fm_rfn = 0, .if_lvl = 0,
		      .agc_mode = 1, .std = 4 }, /* EP3[4:0] 0x0c */
	.atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
	.dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
	.dvbt_7   = { .if_freq = 3500, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 4 }, /* EP3[4:0] 0x1c */
	.dvbt_8   = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
	.qam_6    = { .if_freq = 4000, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 5 }, /* EP3[4:0] 0x1d */
	.qam_8    = { .if_freq = 5000, .fm_rfn = 0, .if_lvl = 1,
		      .agc_mode = 3, .std = 7 }, /* EP3[4:0] 0x1f */
};

/*---------------------------------------------------------------------*/
+2 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ struct tda18271_std_map_item {
	unsigned int std:3;
	/* EP4[7] */
	unsigned int fm_rfn:1;
	/* EP4[4:2] */
	unsigned int if_lvl:3;
};

struct tda18271_std_map {
+2 −2
Original line number Diff line number Diff line
@@ -165,8 +165,8 @@ static struct tda829x_config tda829x_no_probe = {
};

static struct tda18271_std_map hauppauge_tda18271_std_map = {
	.atsc_6   = { .if_freq = 5380, .agc_mode = 3, .std = 3 },
	.qam_6    = { .if_freq = 4000, .agc_mode = 3, .std = 0 },
	.atsc_6   = { .if_freq = 5380, .if_lvl = 6, .agc_mode = 3, .std = 3 },
	.qam_6    = { .if_freq = 4000, .if_lvl = 6, .agc_mode = 3, .std = 0 },
};

static struct tda18271_config hauppauge_tda18271_config = {