All of lore.kernel.org
 help / color / mirror / Atom feed
From: "sustmi" <sustmidown@centrum.cz>
To: <linux-dvb@linuxtv.org>
Subject: [linux-dvb] Leadtek WinFast DTV-1800H support
Date: Mon, 20 Oct 2008 01:41:10 +0200	[thread overview]
Message-ID: <200810200141.629@centrum.cz> (raw)
In-Reply-To: <200810200127.29920@centrum.cz>

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

Hi,

I was working on support for Leadtek WinFast DTV-1800H.
First I made it work with Markus Rechberger's v4l repository (there was
better XC3028-tunner code).

Few weeks ago Markus Rechberger announced that he is no going to
support non-ex28xx cards anymore and that I have to focus on the linuxtv
linux-dvb repository.

So I (cooperating with Paul Chubb) made a patch against linuxtv linux-dvb.
(attached file: leadtek_winfast_dtv1800h.patch)

It enables support for DVB-T, analogue TV, radio and IR remote control.

I have tried to use existing parts of code as much as possible.
The creation of 'cx88_xc3028_winfast1800h_callback' function was
necessary. Function 'cx88_xc3028_geniatech_tuner_callback' is similar,
but the extra GPIO code makes IR remote control not work.

It will be great if patch is merged into the repository.

There is one question I want to ask you in terms of this message:
http://www.linuxtv.org/pipermail/linux-dvb/2008-August/028117.html
Why is using of cx_write() risky?

Thank you for your reply.

- Miroslav Šustek

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: leadtek_winfast_dtv1800h.patch --]
[-- Type: text/x-patch; name="leadtek_winfast_dtv1800h.patch", Size: 4965 bytes --]

diff -r e2a8b9b9c294 linux/drivers/media/video/cx88/cx88-cards.c
--- a/linux/drivers/media/video/cx88/cx88-cards.c	Fri Oct 17 19:45:55 2008 +0300
+++ b/linux/drivers/media/video/cx88/cx88-cards.c	Mon Oct 20 01:15:29 2008 +0200
@@ -1904,6 +1904,47 @@
 		} },
 		.mpeg           = CX88_MPEG_DVB,
 	},
+	[CX88_BOARD_WINFAST_DTV1800H] = {
+		.name           = "Leadtek WinFast DTV1800 Hybrid",
+		.tuner_type     = TUNER_XC2028,
+		.radio_type     = TUNER_XC2028,
+		.tuner_addr     = 0x61,
+		.radio_addr     = 0x61,
+		/*
+		 * GPIO setting
+		 *
+		 *  2: mute (0=off,1=on)
+		 * 12: tuner reset pin
+		 * 13: audio source (0=tuner audio,1=line in)
+		 * 14: FM (0=on,1=off ???)
+		 */
+		.input          = {{
+			.type   = CX88_VMUX_TELEVISION,
+			.vmux   = 0,
+			.gpio0  = 0x0400,       //pin 2 = 0
+			.gpio1  = 0x6040,       //pin 13 = 0, pin 14 = 1
+			.gpio2  = 0x0000,
+		},{
+			.type   = CX88_VMUX_COMPOSITE1,
+			.vmux   = 1,
+			.gpio0  = 0x0400,       //pin 2 = 0
+			.gpio1  = 0x6060,       //pin 13 = 1, pin 14 = 1
+			.gpio2  = 0x0000,
+		},{
+			.type   = CX88_VMUX_SVIDEO,
+			.vmux   = 2,
+			.gpio0  = 0x0400,       //pin 2 = 0
+			.gpio1  = 0x6060,       //pin 13 = 1, pin 14 = 1
+			.gpio2  = 0x0000,
+		}},
+		.radio = {
+			.type   = CX88_RADIO,
+			.gpio0  = 0x0400,       //pin 2 = 0
+			.gpio1  = 0x6000,       //pin 13 = 0, pin 14 = 0
+			.gpio2  = 0x0000,
+		},
+		.mpeg           = CX88_MPEG_DVB,
+	},
 };
 
 /* ------------------------------------------------------------------ */
@@ -2297,6 +2338,10 @@
 		.subvendor = 0xB033,
 		.subdevice = 0x3033,
 		.card      = CX88_BOARD_PROF_7300,
+	}, {
+		.subvendor = 0x107d,
+		.subdevice = 0x6654,
+		.card      = CX88_BOARD_WINFAST_DTV1800H,
 	},
 };
 
@@ -2494,6 +2539,23 @@
 	return -EINVAL;
 }
 
+static int cx88_xc3028_winfast1800h_callback(struct cx88_core *core,
+					     int command, int arg)
+{
+	switch (command) {
+	case XC2028_TUNER_RESET:
+		// GPIO 12 = xc3028 tuner reset
+		cx_set(MO_GP1_IO, 0x1010);  //gpio 12 = 1: powerup XC3028
+		mdelay(50);
+		cx_clear(MO_GP1_IO, 0x10);  //gpio 12 = 0: powerdown XC3028
+		mdelay(50);
+		cx_set(MO_GP1_IO, 0x10);  //gpio 12 = 1: powerup XC3028
+		mdelay(50);
+		return 0;
+	}
+	return -EINVAL;
+}
+
 /* ------------------------------------------------------------------- */
 /* some Divco specific stuff                                           */
 static int cx88_pv_8000gt_callback(struct cx88_core *core,
@@ -2566,6 +2628,8 @@
 	case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO:
 	case CX88_BOARD_DVICO_FUSIONHDTV_5_PCI_NANO:
 		return cx88_dvico_xc2028_callback(core, command, arg);
+	case CX88_BOARD_WINFAST_DTV1800H:
+		return cx88_xc3028_winfast1800h_callback(core, command, arg);
 	}
 
 	switch (command) {
@@ -2740,6 +2804,15 @@
 		cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */
 		udelay(1000);
 		break;
+
+	case CX88_BOARD_WINFAST_DTV1800H:
+		cx_set(MO_GP1_IO, 0x1010);  //gpio 12 = 1: powerup XC3028
+		mdelay(50);
+		cx_clear(MO_GP1_IO, 0x10);  //gpio 12 = 0: powerdown XC3028
+		mdelay(50);
+		cx_set(MO_GP1_IO, 0x10);  //gpio 12 = 1: powerup XC3028
+		mdelay(50);
+		break;
 	}
 }
 
@@ -2760,6 +2833,7 @@
 			core->i2c_algo.udelay = 16;
 		break;
 	case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO:
+	case CX88_BOARD_WINFAST_DTV1800H:
 		ctl->demod = XC3028_FE_ZARLINK456;
 		break;
 	case CX88_BOARD_KWORLD_ATSC_120:
diff -r e2a8b9b9c294 linux/drivers/media/video/cx88/cx88-dvb.c
--- a/linux/drivers/media/video/cx88/cx88-dvb.c	Fri Oct 17 19:45:55 2008 +0300
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c	Mon Oct 20 01:15:29 2008 +0200
@@ -963,6 +963,7 @@
 		}
 		break;
 	 case CX88_BOARD_PINNACLE_HYBRID_PCTV:
+	case CX88_BOARD_WINFAST_DTV1800H:
 		fe0->dvb.frontend = dvb_attach(zl10353_attach,
 					       &cx88_pinnacle_hybrid_pctv,
 					       &core->i2c_adap);
diff -r e2a8b9b9c294 linux/drivers/media/video/cx88/cx88-input.c
--- a/linux/drivers/media/video/cx88/cx88-input.c	Fri Oct 17 19:45:55 2008 +0300
+++ b/linux/drivers/media/video/cx88/cx88-input.c	Mon Oct 20 01:15:29 2008 +0200
@@ -93,6 +93,7 @@
 		gpio=(gpio & 0x7fd) + (auxgpio & 0xef);
 		break;
 	case CX88_BOARD_WINFAST_DTV1000:
+	case CX88_BOARD_WINFAST_DTV1800H:
 		gpio = (gpio & 0x6ff) | ((cx_read(MO_GP1_IO) << 8) & 0x900);
 		auxgpio = gpio;
 		break;
@@ -244,6 +245,7 @@
 		ir->sampling = 1;
 		break;
 	case CX88_BOARD_WINFAST_DTV2000H:
+	case CX88_BOARD_WINFAST_DTV1800H:
 		ir_codes = ir_codes_winfast;
 		ir->gpio_addr = MO_GP0_IO;
 		ir->mask_keycode = 0x8f8;
diff -r e2a8b9b9c294 linux/drivers/media/video/cx88/cx88.h
--- a/linux/drivers/media/video/cx88/cx88.h	Fri Oct 17 19:45:55 2008 +0300
+++ b/linux/drivers/media/video/cx88/cx88.h	Mon Oct 20 01:15:29 2008 +0200
@@ -230,6 +230,7 @@
 #define CX88_BOARD_TEVII_S420              73
 #define CX88_BOARD_PROLINK_PV_GLOBAL_XTREME 74
 #define CX88_BOARD_PROF_7300               75
+#define CX88_BOARD_WINFAST_DTV1800H        76
 
 enum cx88_itype {
 	CX88_VMUX_COMPOSITE1 = 1,

[-- Attachment #3: Type: text/plain, Size: 150 bytes --]

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

       reply	other threads:[~2008-10-19 23:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200810200120.28590@centrum.cz>
     [not found] ` <200810200121.3906@centrum.cz>
     [not found]   ` <200810200122.4044@centrum.cz>
     [not found]     ` <200810200123.28880@centrum.cz>
     [not found]       ` <200810200124.8475@centrum.cz>
     [not found]         ` <200810200125.8958@centrum.cz>
     [not found]           ` <200810200126.978@centrum.cz>
     [not found]             ` <200810200127.29920@centrum.cz>
2008-10-19 23:41               ` sustmi [this message]
2008-10-20 18:45                 ` [linux-dvb] Leadtek WinFast DTV-1800H support Steven Toth
2008-10-22 19:29                   ` Miroslav   Šustek
2008-10-22 19:50                   ` Miroslav   Šustek

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=200810200141.629@centrum.cz \
    --to=sustmidown@centrum.cz \
    --cc=linux-dvb@linuxtv.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 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.