public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Michael Krufky <mkrufky@m1k.net>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, linux-dvb-maintainer@linuxtv.org
Subject: [PATCH 33/37] dvb: determine tuner write method based on nxt chip
Date: Tue, 01 Nov 2005 03:16:18 -0500	[thread overview]
Message-ID: <43672452.6040306@m1k.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 2 bytes --]




[-- Attachment #2: 2410.patch --]
[-- Type: text/x-patch, Size: 3487 bytes --]

- Add support for AVerTVHD MCE a180.
- Instead of determining how to write to the tuner based on which NIM
  is being used, make this determination based on whether the chip is a
  NXT2002 or NXT2004.
- If NXT2004, write directly to tuner. If NXT2002, write through NXT chip.

Signed-off-by: Michael Krufky <mkrufky@m1k.net>

 drivers/media/dvb/frontends/nxt200x.c |   92 ++++++++++++++++++----------------
 1 file changed, 49 insertions(+), 43 deletions(-)

--- linux-2.6.14-git3.orig/drivers/media/dvb/frontends/nxt200x.c
+++ linux-2.6.14-git3/drivers/media/dvb/frontends/nxt200x.c
@@ -342,50 +342,56 @@
 
 	dprintk("Tuner Bytes: %02X %02X %02X %02X\n", data[0], data[1], data[2], data[3]);
 
-	/* if pll is a Philips TUV1236D then write directly to tuner */
-	if (strcmp(state->config->pll_desc->name, "Philips TUV1236D") == 0) {
-	        if (i2c_writebytes(state, state->config->pll_address, data, 4))
-        	        printk(KERN_WARNING "nxt200x: error writing to tuner\n");
-		/* wait until we have a lock */
-		while (count < 20) {
-			i2c_readbytes(state, state->config->pll_address, &buf, 1);
-			if (buf & 0x40)
-				return 0;
-			msleep(100);
-			count++;
-		}
-		printk("nxt200x: timeout waiting for tuner lock\n");
-		return 0;
-	} else {
-		/* set the i2c transfer speed to the tuner */
-		buf = 0x03;
-		nxt200x_writebytes(state, 0x20, &buf, 1);
-
-		/* setup to transfer 4 bytes via i2c */
-		buf = 0x04;
-		nxt200x_writebytes(state, 0x34, &buf, 1);
-
-		/* write actual tuner bytes */
-		nxt200x_writebytes(state, 0x36, data, 4);
-
-		/* set tuner i2c address */
-		buf = state->config->pll_address;
-		nxt200x_writebytes(state, 0x35, &buf, 1);
-
-		/* write UC Opmode to begin transfer */
-		buf = 0x80;
-		nxt200x_writebytes(state, 0x21, &buf, 1);
-
-		while (count < 20) {
-			nxt200x_readbytes(state, 0x21, &buf, 1);
-			if ((buf & 0x80)== 0x00)
-				return 0;
-			msleep(100);
-			count++;
-		}
-		printk("nxt200x: timeout error writing tuner\n");
-		return 0;
+	/* if NXT2004, write directly to tuner. if NXT2002, write through NXT chip.
+	 * direct write is required for Philips TUV1236D and ALPS TDHU2 */
+	switch (state->demod_chip) {
+		case NXT2004:
+			if (i2c_writebytes(state, state->config->pll_address, data, 4))
+	        	        printk(KERN_WARNING "nxt200x: error writing to tuner\n");
+			/* wait until we have a lock */
+			while (count < 20) {
+				i2c_readbytes(state, state->config->pll_address, &buf, 1);
+				if (buf & 0x40)
+					return 0;
+				msleep(100);
+				count++;
+			}
+			printk("nxt2004: timeout waiting for tuner lock\n");
+			break;
+		case NXT2002:
+			/* set the i2c transfer speed to the tuner */
+			buf = 0x03;
+			nxt200x_writebytes(state, 0x20, &buf, 1);
+
+			/* setup to transfer 4 bytes via i2c */
+			buf = 0x04;
+			nxt200x_writebytes(state, 0x34, &buf, 1);
+
+			/* write actual tuner bytes */
+			nxt200x_writebytes(state, 0x36, data, 4);
+
+			/* set tuner i2c address */
+			buf = state->config->pll_address;
+			nxt200x_writebytes(state, 0x35, &buf, 1);
+
+			/* write UC Opmode to begin transfer */
+			buf = 0x80;
+			nxt200x_writebytes(state, 0x21, &buf, 1);
+
+			while (count < 20) {
+				nxt200x_readbytes(state, 0x21, &buf, 1);
+				if ((buf & 0x80)== 0x00)
+					return 0;
+				msleep(100);
+				count++;
+			}
+			printk("nxt2002: timeout error writing tuner\n");
+			break;
+		default:
+			return -EINVAL;
+			break;
 	}
+	return 0;
 }
 
 static void nxt200x_agc_reset(struct nxt200x_state* state)


                 reply	other threads:[~2005-11-01  8:17 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=43672452.6040306@m1k.net \
    --to=mkrufky@m1k.net \
    --cc=akpm@osdl.org \
    --cc=linux-dvb-maintainer@linuxtv.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox