[PATCH] tda18271 add FM filter selction + minor fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch adds support for FM filter selection. The tda18271 has two rf
inputs RF_IN (45-864 MHz) and FM_IN (65-108 MHz). The code automatically
enables the antialiasing filter for radio reception and depending on the
FM input selected configures EB23 register.

Additional fixes:
- Fixed the temerature comensation, see revision history of TDA18271HD_4
  spec.
- Minor cosmetic change in the tda18271_rf_band[]
- Fixed one value and removed a duplicate in tda18271_cid_target[]

Signed-off-by: Henk.Vergonet@xxxxxxxxx

diff -r 2b49813f8482 linux/drivers/media/common/tuners/tda18271-fe.c
--- a/linux/drivers/media/common/tuners/tda18271-fe.c	Thu Sep 03 09:06:34 2009 -0300
+++ b/linux/drivers/media/common/tuners/tda18271-fe.c	Mon Sep 14 01:45:49 2009 +0200
@@ -99,6 +99,22 @@
 	if (tda_fail(ret))
 		goto fail;
 
+	/* update FM filter selection */
+	if (map->std == 0) {
+		/* std == FM radio */
+		regs[R_EB23] |=  0x06; /* 1.5 Mhz cut-off freq */
+	} else if (map->fm_rfn) {
+		/* antenna FM_IN, std != FM radio */
+		regs[R_EB23] |=  0x04; /* set FORCELP */
+		regs[R_EB23] &= ~0x02; /* clear LP_FC */
+	} else {
+		/* antenna RF_IN, std != FM radio */
+		regs[R_EB23] &= ~0x06; /* clear FORCELP, LP_FC */
+	}
+	ret = tda18271_write_regs(fe, R_EB23, 1);
+	if (tda_fail(ret))
+		goto fail;
+
 	/* --------------------------------------------------------------- */
 
 	/* disable Power Level Indicator */
@@ -272,7 +288,7 @@
 	tda18271_lookup_map(fe, RF_CAL_DC_OVER_DT, &freq, &dc_over_dt);
 
 	/* calculate temperature compensation */
-	rfcal_comp = dc_over_dt * (tm_current - priv->tm_rfcal);
+	rfcal_comp = dc_over_dt * (tm_current - priv->tm_rfcal) / 1000;
 
 	regs[R_EB14] = approx + rfcal_comp;
 	ret = tda18271_write_regs(fe, R_EB14, 1);
diff -r 2b49813f8482 linux/drivers/media/common/tuners/tda18271-maps.c
--- a/linux/drivers/media/common/tuners/tda18271-maps.c	Thu Sep 03 09:06:34 2009 -0300
+++ b/linux/drivers/media/common/tuners/tda18271-maps.c	Mon Sep 14 01:45:49 2009 +0200
@@ -229,8 +229,8 @@
 static struct tda18271_map tda18271_rf_band[] = {
 	{ .rfmax =  47900, .val = 0x00 },
 	{ .rfmax =  61100, .val = 0x01 },
+	{ .rfmax = 121200, .val = 0x02 },
 /*	{ .rfmax = 152600, .val = 0x02 }, */
-	{ .rfmax = 121200, .val = 0x02 },
 	{ .rfmax = 164700, .val = 0x03 },
 	{ .rfmax = 203500, .val = 0x04 },
 	{ .rfmax = 457800, .val = 0x05 },
@@ -962,10 +962,10 @@
 static struct tda18271_cid_target_map tda18271_cid_target[] = {
 	{ .rfmax =  46000, .target = 0x04, .limit =  1800 },
 	{ .rfmax =  52200, .target = 0x0a, .limit =  1500 },
-	{ .rfmax =  79100, .target = 0x01, .limit =  4000 },
+	{ .rfmax =  70100, .target = 0x01, .limit =  4000 },
+/*	{ .rfmax =  79100, .target = 0x01, .limit =  4000 },	*/
 	{ .rfmax = 136800, .target = 0x18, .limit =  4000 },
 	{ .rfmax = 156700, .target = 0x18, .limit =  4000 },
-	{ .rfmax = 156700, .target = 0x18, .limit =  4000 },
 	{ .rfmax = 186250, .target = 0x0a, .limit =  4000 },
 	{ .rfmax = 230000, .target = 0x0a, .limit =  4000 },
 	{ .rfmax = 345000, .target = 0x18, .limit =  4000 },

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux