diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c
--- linux-3.6/drivers/media/video/cx231xx/cx231xx-avcore.c	2012-09-30 17:47:46.000000000 -0600
+++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx-avcore.c	2013-02-26 19:58:51.096793077 -0700
@@ -352,6 +352,7 @@ int cx231xx_afe_update_power_control(str
 	case CX231XX_BOARD_CNXT_RDE_253S:
 	case CX231XX_BOARD_CNXT_RDU_253S:
 	case CX231XX_BOARD_CNXT_VIDEO_GRABBER:
+	case CX231XX_BOARD_OTG102:
 	case CX231XX_BOARD_HAUPPAUGE_EXETER:
 	case CX231XX_BOARD_HAUPPAUGE_USBLIVE2:
 	case CX231XX_BOARD_PV_PLAYTV_USB_HYBRID:
@@ -1719,6 +1720,7 @@ int cx231xx_dif_set_standard(struct cx23
 	case CX231XX_BOARD_CNXT_SHELBY:
 	case CX231XX_BOARD_CNXT_RDU_250:
 	case CX231XX_BOARD_CNXT_VIDEO_GRABBER:
+	case CX231XX_BOARD_OTG102:
 	case CX231XX_BOARD_HAUPPAUGE_EXETER:
 		func_mode = 0x03;
 		break;
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx-cards.c linux-3.6.new/drivers/media/video/cx231xx/cx231xx-cards.c
--- linux-3.6/drivers/media/video/cx231xx/cx231xx-cards.c	2012-09-30 17:47:46.000000000 -0600
+++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx-cards.c	2013-02-28 12:23:58.925869674 -0700
@@ -280,6 +280,37 @@ struct cx231xx_board cx231xx_boards[] =
 			}
 		},
 	},
+	[CX231XX_BOARD_OTG102] = {
+                .name = "Geniatech OTG102",
+                .tuner_type = TUNER_ABSENT,
+                .decoder = CX231XX_AVDECODER,
+                .output_mode = OUT_MODE_VIP11,
+                .ctl_pin_status_mask = 0xFFFFFFC4,
+                .agc_analog_digital_select_gpio = 0x0c, /* According with PV CxPlrCAP.inf file */
+                .gpio_pin_status_mask = 0x4001000,
+                .norm = V4L2_STD_NTSC,
+                .no_alt_vanc = 1,
+                .external_av = 1,
+                .dont_use_port_3 = 1,
+		//.has_417 = 1,
+		/* this board has hardware encoding chip supporting mpeg1/2/4, but as the 417 is apparently not working for the
+		   reference board it is not on this one either. building the driver with this option and then loading the module
+		   creates a second video device node, but nothing comes out of it.  */
+                .input = {{
+                                .type = CX231XX_VMUX_COMPOSITE1,
+                                .vmux = CX231XX_VIN_2_1,
+                                .amux = CX231XX_AMUX_LINE_IN,
+                                .gpio = NULL,
+                        }, {
+                                .type = CX231XX_VMUX_SVIDEO,
+                                .vmux = CX231XX_VIN_1_1 |
+                                        (CX231XX_VIN_1_2 << 8) |
+                                        CX25840_SVIDEO_ON,
+                                .amux = CX231XX_AMUX_LINE_IN,
+                                .gpio = NULL,
+                        }
+                },
+        },
 	[CX231XX_BOARD_CNXT_RDE_250] = {
 		.name = "Conexant Hybrid TV - rde 250",
 		.tuner_type = TUNER_XC5000,
@@ -620,6 +651,8 @@ struct usb_device_id cx231xx_id_table[]
 	 .driver_info = CX231XX_BOARD_CNXT_RDU_253S},
 	{USB_DEVICE(0x0572, 0x58A6),
 	 .driver_info = CX231XX_BOARD_CNXT_VIDEO_GRABBER},
+	{USB_DEVICE(0x1F4D, 0x0102),
+	 .driver_info = CX231XX_BOARD_OTG102},
 	{USB_DEVICE(0x0572, 0x589E),
 	 .driver_info = CX231XX_BOARD_CNXT_RDE_250},
 	{USB_DEVICE(0x0572, 0x58A0),
@@ -904,6 +937,12 @@ static int cx231xx_init_dev(struct cx231
 		cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3);
 		cx231xx_set_alt_setting(dev, INDEX_VANC, 1);
 	}
+/*
+	if (dev->model == CX231XX_OTG102) {
+		cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3);
+		cx231xx_set_alt_setting(dev, INDEX_VANC, 1);
+	}
+*/
 	/* Cx231xx pre card setup */
 	cx231xx_pre_card_setup(dev);
 
@@ -1295,6 +1334,12 @@ static int cx231xx_usb_probe(struct usb_
 		cx231xx_enable_OSC(dev);
 		cx231xx_reset_out(dev);
 		cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3);
+	}
+	
+	if (dev->model == CX231XX_BOARD_OTG102) {
+		cx231xx_enable_OSC(dev);
+		cx231xx_reset_out(dev);
+		cx231xx_set_alt_setting(dev, INDEX_VIDEO, 3);
 	}
 
 	if (dev->model == CX231XX_BOARD_CNXT_RDE_253S)
diff -uprN linux-3.6/drivers/media/video/cx231xx/cx231xx.h linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h
--- linux-3.6/drivers/media/video/cx231xx/cx231xx.h	2012-09-30 17:47:46.000000000 -0600
+++ linux-3.6.new/drivers/media/video/cx231xx/cx231xx.h	2013-02-26 16:01:58.924653199 -0700
@@ -68,6 +68,7 @@
 #define CX231XX_BOARD_ICONBIT_U100 13
 #define CX231XX_BOARD_HAUPPAUGE_USB2_FM_PAL 14
 #define CX231XX_BOARD_HAUPPAUGE_USB2_FM_NTSC 15
+#define CX231XX_BOARD_OTG102 16
 
 /* Limits minimum and default number of buffers */
 #define CX231XX_MIN_BUF                 4
