diff -ur linux-2.6.12.orig/drivers/media/video/cx88/cx88-cards.c linux-2.6.12/drivers/media/video/cx88/cx88-cards.c
--- linux-2.6.12.orig/drivers/media/video/cx88/cx88-cards.c	2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/drivers/media/video/cx88/cx88-cards.c	2005-06-25 16:38:52.000000000 +0200
@@ -601,6 +601,22 @@
 			.gpio1  = 0x0000e07f,
 		}}
 	},
+	[CX88_BOARD_ADSTECH_DVB_T_PCI] = {
+		.name           = "ADS Tech Instant TV DVB-T PCI",
+		.tuner_type     = TUNER_ABSENT,
+		.input          = {{
+			.type   = CX88_VMUX_COMPOSITE1,
+			.vmux   = 1,
+			.gpio0  = 0x0700,
+			.gpio2  = 0x0101,
+		},{
+			.type   = CX88_VMUX_SVIDEO,
+			.vmux   = 2,
+			.gpio0  = 0x0700,
+			.gpio2  = 0x0101,
+		}},
+		.dvb            = 1,
+	},
 };
 const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
 
@@ -716,6 +732,10 @@
 		.subvendor = 0x10fc,
 		.subdevice = 0xd035,
 		.card      = CX88_BOARD_IODATA_GVBCTV7E,
+	},{
+		.subvendor = 0x1421,
+		.subdevice = 0x0334,
+		.card      = CX88_BOARD_ADSTECH_DVB_T_PCI,
 	}
 };
 const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
diff -ur linux-2.6.12.orig/drivers/media/video/cx88/cx88-dvb.c linux-2.6.12/drivers/media/video/cx88/cx88-dvb.c
--- linux-2.6.12.orig/drivers/media/video/cx88/cx88-dvb.c	2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/drivers/media/video/cx88/cx88-dvb.c	2005-06-25 16:38:52.000000000 +0200
@@ -231,6 +231,7 @@
 		break;
 	case CX88_BOARD_KWORLD_DVB_T:
 	case CX88_BOARD_DNTV_LIVE_DVB_T:
+	case CX88_BOARD_ADSTECH_DVB_T_PCI:
 		dev->core->pll_addr = 0x61;
 		dev->core->pll_desc = &dvb_pll_unknown_1;
 		dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_config,
diff -ur linux-2.6.12.orig/drivers/media/video/cx88/cx88.h linux-2.6.12/drivers/media/video/cx88/cx88.h
--- linux-2.6.12.orig/drivers/media/video/cx88/cx88.h	2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/drivers/media/video/cx88/cx88.h	2005-06-25 16:39:28.000000000 +0200
@@ -162,6 +162,7 @@
 #define CX88_BOARD_HAUPPAUGE_ROSLYN        24
 #define CX88_BOARD_DIGITALLOGIC_MEC	       25
 #define CX88_BOARD_IODATA_GVBCTV7E         26
+#define CX88_BOARD_ADSTECH_DVB_T_PCI       27
 
 enum cx88_itype {
 	CX88_VMUX_COMPOSITE1 = 1,
diff -ur linux-2.6.12.orig/drivers/media/video/cx88/cx88-input.c linux-2.6.12/drivers/media/video/cx88/cx88-input.c
--- linux-2.6.12.orig/drivers/media/video/cx88/cx88-input.c	2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/drivers/media/video/cx88/cx88-input.c	2005-06-25 16:38:52.000000000 +0200
@@ -125,6 +125,56 @@
 
 /* ---------------------------------------------------------------------- */
 
+/* ADS Tech Instant TV DVB-T PCI Remote */
+static IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = {
+	[ 0x5b ] = KEY_POWER,
+	[ 0x5f ] = KEY_MUTE,
+	[ 0x57 ] = KEY_1,
+	[ 0x4f ] = KEY_2,
+	[ 0x53 ] = KEY_3,
+	[ 0x56 ] = KEY_4,
+	[ 0x4e ] = KEY_5,
+	[ 0x5e ] = KEY_6,
+	[ 0x54 ] = KEY_7,
+	[ 0x4c ] = KEY_8,
+	[ 0x5c ] = KEY_9,
+	[ 0x4d ] = KEY_0,
+	[ 0x55 ] = KEY_GOTO,
+	[ 0x5d ] = KEY_SEARCH,
+	[ 0x17 ] = KEY_EPG,             // Guide
+	[ 0x1f ] = KEY_MENU,
+	[ 0x0f ] = KEY_UP,
+	[ 0x46 ] = KEY_DOWN,
+	[ 0x16 ] = KEY_LEFT,
+	[ 0x1e ] = KEY_RIGHT,
+	[ 0x0e ] = KEY_SELECT,          // Enter
+	[ 0x5a ] = KEY_INFO,
+	[ 0x52 ] = KEY_EXIT,
+	[ 0x59 ] = KEY_PREVIOUS,
+	[ 0x51 ] = KEY_NEXT,
+	[ 0x58 ] = KEY_REWIND,
+	[ 0x50 ] = KEY_FORWARD,
+	[ 0x44 ] = KEY_PLAYPAUSE,
+	[ 0x07 ] = KEY_STOP,
+	[ 0x1b ] = KEY_RECORD,
+	[ 0x13 ] = KEY_TUNER,           // Live
+	[ 0x0a ] = KEY_A,
+	[ 0x12 ] = KEY_B,
+	[ 0x03 ] = KEY_PROG1,           // 1
+	[ 0x01 ] = KEY_PROG2,           // 2
+	[ 0x00 ] = KEY_PROG3,           // 3
+	[ 0x06 ] = KEY_DVD,
+	[ 0x48 ] = KEY_AUX,             // Photo
+	[ 0x40 ] = KEY_VIDEO,
+	[ 0x19 ] = KEY_AUDIO,           // Music
+	[ 0x0b ] = KEY_CHANNELUP,
+	[ 0x08 ] = KEY_CHANNELDOWN,
+	[ 0x15 ] = KEY_VOLUMEUP,
+	[ 0x1c ] = KEY_VOLUMEDOWN,
+};
+
+/* ---------------------------------------------------------------------- */
+
 struct cx88_IR {
 	struct cx88_core	*core;
 	struct input_dev        input;
@@ -261,6 +311,13 @@
 		ir->mask_keydown = 0x02;
 		ir->polling      = 5; // ms
 		break;
+	case CX88_BOARD_ADSTECH_DVB_T_PCI:
+		ir_codes         = ir_codes_adstech_dvb_t_pci;
+		ir->gpio_addr    = MO_GP1_IO;
+		ir->mask_keycode = 0xbf;
+		ir->mask_keyup   = 0x40;
+		ir->polling      = 50; // ms
+		break;
 	}
 	if (NULL == ir_codes) {
 		kfree(ir);
