public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: "Miroslav  Šustek" <sustmidown@centrum.cz>
To: <linux-media@vger.kernel.org>
Subject: [PATCH] Leadtek WinFast DTV-1800H support
Date: Sun, 10 May 2009 23:39:59 +0200	[thread overview]
Message-ID: <200905102339.14742@centrum.cz> (raw)
In-Reply-To: <200905102339.24789@centrum.cz>

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

Hello,
this patch adds support for Leadtek WinFast DTV-1800H hybrid card.
It enables analog/digital tv, radio and remote control trough GPIO.

Input GPIO values are extracted from INF file which is included in winxp driver.
Analog audio works both through cx88-alsa and through internal cable from tv-card to sound card.

Tested by me and the people listed in patch (works well).

- Miroslav


[-- Attachment #2: leadtek_winfast_dtv1800h.patch --]
[-- Type: application/octet-stream, Size: 5813 bytes --]

Adds support for Leadtek WinFast DTV-1800H

From: Miroslav Sustek <sustmidown@centrum.cz>

Enables analog/digital tv, radio and remote control (gpio).

Signed-off-by: Miroslav Sustek <sustmidown@centrum.cz>
Tested-by: Marcin Wojcikowski <emtees.mts@gmail.com>
Tested-by: Karel Juhanak <karel.juhanak@warnet.cz>
Tested-by: Andrew Goff <goffa72@gmail.com>
Tested-by: Jan Novak <novak-j@seznam.cz>

diff -r ee3b79edde3f linux/Documentation/video4linux/CARDLIST.cx88
--- a/linux/Documentation/video4linux/CARDLIST.cx88	Sat May 09 21:45:37 2009 +0200
+++ b/linux/Documentation/video4linux/CARDLIST.cx88	Sun May 10 22:45:51 2009 +0200
@@ -79,3 +79,4 @@
  78 -> Prof 6200 DVB-S                                     [b022:3022]
  79 -> Terratec Cinergy HT PCI MKII                        [153b:1177]
  80 -> Hauppauge WinTV-IR Only                             [0070:9290]
+ 81 -> Leadtek WinFast DTV1800 Hybrid                      [107d:6654]
diff -r ee3b79edde3f linux/drivers/media/video/cx88/cx88-cards.c
--- a/linux/drivers/media/video/cx88/cx88-cards.c	Sat May 09 21:45:37 2009 +0200
+++ b/linux/drivers/media/video/cx88/cx88-cards.c	Sun May 10 22:45:51 2009 +0200
@@ -2009,6 +2009,47 @@
 		.tuner_addr	= ADDR_UNSET,
 		.radio_addr	= ADDR_UNSET,
 	},
+	[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,
+	},
 };
 
 /* ------------------------------------------------------------------ */
@@ -2426,6 +2467,10 @@
 		.subvendor = 0x0070,
 		.subdevice = 0x9290,
 		.card      = CX88_BOARD_HAUPPAUGE_IRONLY,
+	}, {
+		.subvendor = 0x107d,
+		.subdevice = 0x6654,
+		.card      = CX88_BOARD_WINFAST_DTV1800H,
 	},
 };
 
@@ -2624,6 +2669,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);
+		mdelay(50);
+		cx_clear(MO_GP1_IO, 0x10);
+		mdelay(50);
+		cx_set(MO_GP1_IO, 0x10);
+		mdelay(50);
+		return 0;
+	}
+	return -EINVAL;
+}
+
 /* ------------------------------------------------------------------- */
 /* some Divco specific stuff                                           */
 static int cx88_pv_8000gt_callback(struct cx88_core *core,
@@ -2696,6 +2758,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) {
@@ -2870,6 +2934,16 @@
 		cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */
 		udelay(1000);
 		break;
+
+	case CX88_BOARD_WINFAST_DTV1800H:
+		/* GPIO 12 (xc3028 tuner reset) */
+		cx_set(MO_GP1_IO, 0x1010);
+		mdelay(50);
+		cx_clear(MO_GP1_IO, 0x10);
+		mdelay(50);
+		cx_set(MO_GP1_IO, 0x10);
+		mdelay(50);
+		break;
 	}
 }
 
@@ -2890,6 +2964,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 ee3b79edde3f linux/drivers/media/video/cx88/cx88-dvb.c
--- a/linux/drivers/media/video/cx88/cx88-dvb.c	Sat May 09 21:45:37 2009 +0200
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c	Sun May 10 22:45:51 2009 +0200
@@ -1021,6 +1021,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 ee3b79edde3f linux/drivers/media/video/cx88/cx88-input.c
--- a/linux/drivers/media/video/cx88/cx88-input.c	Sat May 09 21:45:37 2009 +0200
+++ b/linux/drivers/media/video/cx88/cx88-input.c	Sun May 10 22:45:51 2009 +0200
@@ -92,6 +92,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;
@@ -236,6 +237,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 ee3b79edde3f linux/drivers/media/video/cx88/cx88.h
--- a/linux/drivers/media/video/cx88/cx88.h	Sat May 09 21:45:37 2009 +0200
+++ b/linux/drivers/media/video/cx88/cx88.h	Sun May 10 22:45:51 2009 +0200
@@ -237,6 +237,7 @@
 #define CX88_BOARD_PROF_6200               78
 #define CX88_BOARD_TERRATEC_CINERGY_HT_PCI_MKII 79
 #define CX88_BOARD_HAUPPAUGE_IRONLY        80
+#define CX88_BOARD_WINFAST_DTV1800H        81
 
 enum cx88_itype {
 	CX88_VMUX_COMPOSITE1 = 1,

       reply	other threads:[~2009-05-10 21:40 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200905102337.22307@centrum.cz>
     [not found] ` <200905102338.14151@centrum.cz>
     [not found]   ` <200905102339.24789@centrum.cz>
2009-05-10 21:39     ` Miroslav  Šustek [this message]
2009-05-28 18:44       ` [PATCH] Leadtek WinFast DTV-1800H support Miroslav Šustek
2009-05-28 19:42         ` hermann pitton
     [not found] <200905291628.32305@centrum.cz>
     [not found] ` <200905291629.364@centrum.cz>
     [not found]   ` <200905291630.21607@centrum.cz>
     [not found]     ` <200905291631.1309@centrum.cz>
     [not found]       ` <200905291632.13608@centrum.cz>
2009-05-29 14:32         ` Miroslav  Šustek
2009-05-31 18:04           ` CityK
     [not found] <200905291638.9584@centrum.cz>
2009-05-29 14:39 ` Miroslav  Šustek
2009-05-31 13:34   ` Trent Piepho
2009-05-31 17:39     ` Miroslav  Šustek
2009-05-31 19:58       ` Mauro Carvalho Chehab
2009-06-01  1:58         ` hermann pitton
2009-06-01  9:07           ` Mauro Carvalho Chehab
2009-06-01 22:26             ` hermann pitton
2009-05-31 19:28     ` Miroslav Šustek
     [not found] <200905311925.19140@centrum.cz>
     [not found] ` <200905311926.3696@centrum.cz>
     [not found]   ` <200905311927.20442@centrum.cz>
     [not found]     ` <200905311928.4713@centrum.cz>
     [not found]       ` <200905311929.21561@centrum.cz>
     [not found]         ` <200905311930.5668@centrum.cz>
     [not found]           ` <200905311931.18645@centrum.cz>
     [not found]             ` <200905311932.22284@centrum.cz>
     [not found]               ` <200905311933.22524@centrum.cz>
2009-05-31 20:50                 ` Trent Piepho

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=200905102339.14742@centrum.cz \
    --to=sustmidown@centrum.cz \
    --cc=linux-media@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