All of lore.kernel.org
 help / color / mirror / Atom feed
* [Patch 01/20] V4L(896) Fixed tda8290 secam l
@ 2005-11-07  2:58 mchehab
  0 siblings, 0 replies; only message in thread
From: mchehab @ 2005-11-07  2:58 UTC (permalink / raw)
  To: linux-kernel; +Cc: akpm, video4linux-list, Hartmut Hackmann

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3135 bytes --]

From: Hartmut Hackmann <hartmut.hackmann@t.online.de>

- Fixed tda8290 SECAM-L

Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t.online.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>

-----------------

 drivers/media/video/tda8290.c |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

--- hg.orig/drivers/media/video/tda8290.c
+++ hg/drivers/media/video/tda8290.c
@@ -323,6 +323,7 @@ static int tda8290_tune(struct i2c_clien
 	i2c_master_send(c, soft_reset, 2);
 	msleep(1);
 
+	expert_mode[1] = t->tda8290_easy_mode + 0x80;
 	i2c_master_send(c, expert_mode, 2);
 	i2c_master_send(c, gainset_off, 2);
 	i2c_master_send(c, if_agc_spd, 2);
@@ -348,8 +349,9 @@ static int tda8290_tune(struct i2c_clien
 		tuner_dbg("tda8290 is locked, AGC: %d\n", agc_stat);
 	else
 		tuner_dbg("tda8290 not locked, no signal?\n");
-	if ((agc_stat > 115) || (!(pll_stat & 0x80) && (adc_sat <20))) {
-		tuner_dbg("adjust gain, step 1. Agc: %d\n", agc_stat);
+	if ((agc_stat > 115) || (!(pll_stat & 0x80) && (adc_sat < 20))) {
+		tuner_dbg("adjust gain, step 1. Agc: %d, ADC stat: %d, lock: %d\n",
+			   agc_stat, adc_sat, pll_stat & 0x80);
 		i2c_master_send(c, gainset_2, 2);
 		msleep(100);
 		i2c_master_send(c, &addr_agc_stat, 1);
@@ -357,7 +359,8 @@ static int tda8290_tune(struct i2c_clien
 		i2c_master_send(c, &addr_pll_stat, 1);
 		i2c_master_recv(c, &pll_stat, 1);
 		if ((agc_stat > 115) || !(pll_stat & 0x80)) {
-			tuner_dbg("adjust gain, step 2. Agc: %d\n", agc_stat);
+			tuner_dbg("adjust gain, step 2. Agc: %d, lock: %d\n",
+				   agc_stat, pll_stat & 0x80);
 			if (t->tda827x_ver != 0)
 				tda827xa_agcf(c);
 			else
@@ -383,6 +386,7 @@ static int tda8290_tune(struct i2c_clien
 		i2c_master_send(c, &addr_pll_stat, 1);
 		i2c_master_recv(c, &pll_stat, 1);
 		if ((adc_sat > 20) || !(pll_stat & 0x80)) {
+			tuner_dbg("trying to resolve SECAM L deadlock\n");
 			i2c_master_send(c, agc_rst_on, 2);
 			msleep(40);
 			i2c_master_send(c, agc_rst_off, 2);
@@ -404,28 +408,37 @@ static int tda8290_tune(struct i2c_clien
 
 static void set_audio(struct tuner *t)
 {
-	t->tda827x_lpsel = 0;
+	char* mode;
 
+	t->tda827x_lpsel = 0;
+	mode = "xx";
 	if (t->std & V4L2_STD_MN) {
 		t->sgIF = 92;
 		t->tda8290_easy_mode = 0x01;
 		t->tda827x_lpsel = 1;
+		mode = "MN";
 	} else if (t->std & V4L2_STD_B) {
 		t->sgIF = 108;
 		t->tda8290_easy_mode = 0x02;
+		mode = "B";
 	} else if (t->std & V4L2_STD_GH) {
 		t->sgIF = 124;
 		t->tda8290_easy_mode = 0x04;
+		mode = "GH";
 	} else if (t->std & V4L2_STD_PAL_I) {
 		t->sgIF = 124;
 		t->tda8290_easy_mode = 0x08;
+		mode = "I";
 	} else if (t->std & V4L2_STD_DK) {
 		t->sgIF = 124;
 		t->tda8290_easy_mode = 0x10;
+		mode = "DK";
 	} else if (t->std & V4L2_STD_SECAM_L) {
 		t->sgIF = 124;
 		t->tda8290_easy_mode = 0x20;
+		mode = "L";
 	}
+    tuner_dbg("setting tda8290 to system %s\n", mode);
 }
 
 static void set_tv_freq(struct i2c_client *c, unsigned int freq)


	

	
		
_______________________________________________________ 
Yahoo! Acesso Grátis: Internet rápida e grátis. 
Instale o discador agora!
http://br.acesso.yahoo.com/


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-11-07  3:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-07  2:58 [Patch 01/20] V4L(896) Fixed tda8290 secam l mchehab

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.