diff mbox

em28xx: Add entry for GADMEI UTV330+ and related IR codec

Message ID 1250790879.4644.33.camel@sl (mailing list archive)
State Rejected
Headers show

Commit Message

Shine Liu Aug. 20, 2009, 5:54 p.m. UTC
Patch to support for the GADMEI UTV330+ board. IR codec this board is
also added.

Based and tested on linux-2.6.31-rc6


Signed-off-by: Shine Liu <shinel@foxmail.com>
-----------------------------------------------------------------------


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Devin Heitmueller Aug. 20, 2009, 6:12 p.m. UTC | #1
On Thu, Aug 20, 2009 at 1:54 PM, Shine Liu<shinel@foxmail.com> wrote:
> Patch to support for the GADMEI UTV330+ board. IR codec this board is
> also added.
>
> Based and tested on linux-2.6.31-rc6
>
>
> Signed-off-by: Shine Liu <shinel@foxmail.com>
> -----------------------------------------------------------------------
>
> --- a/drivers/media/video/em28xx/em28xx-cards.c 2009-08-14 06:43:34.000000000 +0800
> +++ b/drivers/media/video/em28xx/em28xx-cards.c 2009-08-21 01:31:23.000000000 +0800
> @@ -558,6 +558,28 @@
>                        .amux     = EM28XX_AMUX_LINE_IN,
>                } },
>        },
> +       [EM2861_BOARD_GADMEI_UTV330PLUS] = {
> +               .name         = "Gadmei UTV330+",
> +               .valid        = EM28XX_BOARD_NOT_VALIDATED,
> +               .tuner_type   = TUNER_TNF_5335MF,
> +               .tda9887_conf = TDA9887_PRESENT,
> +               .ir_codes     = ir_codes_gadimei_rm008z,
> +               .decoder      = EM28XX_SAA711X,
> +               .xclk         = EM28XX_XCLK_FREQUENCY_12MHZ,
> +               .input        = { {
> +                       .type     = EM28XX_VMUX_TELEVISION,
> +                       .vmux     = SAA7115_COMPOSITE2,
> +                       .amux     = EM28XX_AMUX_VIDEO,
> +               }, {
> +                       .type     = EM28XX_VMUX_COMPOSITE1,
> +                       .vmux     = SAA7115_COMPOSITE0,
> +                       .amux     = EM28XX_AMUX_LINE_IN,
> +               }, {
> +                       .type     = EM28XX_VMUX_SVIDEO,
> +                       .vmux     = SAA7115_SVIDEO3,
> +                       .amux     = EM28XX_AMUX_LINE_IN,
> +               } },
> +       },
>        [EM2860_BOARD_TERRATEC_HYBRID_XS] = {
>                .name         = "Terratec Cinergy A Hybrid XS",
>                .valid        = EM28XX_BOARD_NOT_VALIDATED,
> @@ -1551,7 +1573,7 @@
>        { USB_DEVICE(0xeb1a, 0x2860),
>                        .driver_info = EM2820_BOARD_UNKNOWN },
>        { USB_DEVICE(0xeb1a, 0x2861),
> -                       .driver_info = EM2820_BOARD_UNKNOWN },
> +                       .driver_info = EM2861_BOARD_GADMEI_UTV330PLUS },
>        { USB_DEVICE(0xeb1a, 0x2870),
>                        .driver_info = EM2820_BOARD_UNKNOWN },
>        { USB_DEVICE(0xeb1a, 0x2881),
> --- a/drivers/media/video/em28xx/em28xx.h       2009-08-14 06:43:34.000000000 +0800
> +++ b/drivers/media/video/em28xx/em28xx.h       2009-08-21 01:32:16.000000000 +0800
> @@ -108,6 +108,7 @@
>  #define EM2882_BOARD_KWORLD_ATSC_315U            69
>  #define EM2882_BOARD_EVGA_INDTUBE                70
>  #define EM2820_BOARD_SILVERCREST_WEBCAM           71
> +#define EM2861_BOARD_GADMEI_UTV330PLUS           72
>
>  /* Limits minimum and default number of buffers */
>  #define EM28XX_MIN_BUF 4
> --- a/drivers/media/common/ir-keymaps.c 2009-08-14 06:43:34.000000000 +0800
> +++ b/drivers/media/common/ir-keymaps.c 2009-08-21 01:38:25.000000000 +0800
> @@ -2773,3 +2773,46 @@
>        [0x13] = KEY_CAMERA,
>  };
>  EXPORT_SYMBOL_GPL(ir_codes_evga_indtube);
> +
> +/* GADMEI UTV330+ RM008Z remote
> +   Shine Liu <shinel@foxmail.com>
> + */
> +IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE] = {
> +       [ 0x14 ] = KEY_ESC,             /* POWER OFF */
> +       [ 0x0c ] = KEY_M,               /* MUTE */
> +
> +       [ 0x18 ] = KEY_PLAY,            /* TV */
> +       [ 0x0e ] = KEY_VIDEO,           /* AV */
> +       [ 0x0b ] = KEY_AUDIO,           /* SV */
> +       [ 0x0f ] = KEY_RADIO,           /* FM */
> +
> +       [ 0x00 ] = KEY_1,
> +       [ 0x01 ] = KEY_2,
> +       [ 0x02 ] = KEY_3,
> +       [ 0x03 ] = KEY_4,
> +       [ 0x04 ] = KEY_5,
> +       [ 0x05 ] = KEY_6,
> +       [ 0x06 ] = KEY_7,
> +       [ 0x07 ] = KEY_8,
> +       [ 0x08 ] = KEY_9,
> +       [ 0x09 ] = KEY_0,
> +       [ 0x0a ] = KEY_D,               /* OSD */
> +       [ 0x1c ] = KEY_BACKSPACE,       /* LAST */
> +
> +       [ 0x0d ] = KEY_PLAY,            /* PLAY */
> +       [ 0x1e ] = KEY_S,               /* SNAPSHOT */
> +       [ 0x1a ] = KEY_RECORD,          /* RECORD */
> +       [ 0x17 ] = KEY_STOP,            /* STOP */
> +
> +       [ 0x1f ] = KEY_UP,              /* UP */
> +       [ 0x44 ] = KEY_DOWN,            /* DOWN */
> +       [ 0x46 ] = KEY_TAB,             /* BACK */
> +       [ 0x4a ] = KEY_F,               /* FULLSECREEN */
> +
> +       [ 0x10 ] = KEY_RIGHT,           /* VOLUMEUP */
> +       [ 0x11 ] = KEY_LEFT,            /* VOLUMEDOWN */
> +       [ 0x12 ] = KEY_UP,              /* CHANNELUP */
> +       [ 0x13 ] = KEY_DOWN,            /* CHANNELDOWN */
> +       [ 0x15 ] = KEY_ENTER,           /* OK */
> +};
> +EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z);
> --- a/include/media/ir-common.h 2009-08-14 06:43:34.000000000 +0800
> +++ b/include/media/ir-common.h 2009-08-21 01:41:01.000000000 +0800
> @@ -163,6 +163,7 @@
>  extern IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE];
>  extern IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE];
>  extern IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE];
> +extern IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE];
>
>  #endif
>
> --- a/Documentation/video4linux/CARDLIST.em28xx 2009-08-14 06:43:34.000000000 +0800
> +++ b/Documentation/video4linux/CARDLIST.em28xx 2009-08-21 01:45:35.000000000 +0800
> @@ -67,3 +67,4 @@
>  69 -> KWorld ATSC 315U HDTV TV Box             (em2882)        [eb1a:a313]
>  70 -> Evga inDtube                             (em2882)
>  71 -> Silvercrest Webcam 1.3mpix               (em2820/em2840)
> + 72 -> Gadmei UTV330+                           (em2861)        [eb1a:2861]

Hello Shine,

This patch has a problem.  Your change makes it so that any device
that uses the default Empia USB ID will become the Gademi board, which
will cause breakage.

When vendors don't assign their own USB ID, we rely on either the
eeprom has or i2c_hash field to make the assignment.  You will need to
add an entry to the i2c_hash list in order for your patch to be
accepted upstream.

Also, you have the .valid field set to indicate the board is not
validated.  Since presumably you have tested the product with your
patch, this field should not be set.

Once those two issues are addressed, I don't see any reason this can't
be accepted upstream.

Cheers,

Devin
diff mbox

Patch

--- a/drivers/media/video/em28xx/em28xx-cards.c	2009-08-14 06:43:34.000000000 +0800
+++ b/drivers/media/video/em28xx/em28xx-cards.c	2009-08-21 01:31:23.000000000 +0800
@@ -558,6 +558,28 @@ 
 			.amux     = EM28XX_AMUX_LINE_IN,
 		} },
 	},
+	[EM2861_BOARD_GADMEI_UTV330PLUS] = {
+		.name         = "Gadmei UTV330+",
+		.valid        = EM28XX_BOARD_NOT_VALIDATED,
+		.tuner_type   = TUNER_TNF_5335MF,
+		.tda9887_conf = TDA9887_PRESENT,
+		.ir_codes     = ir_codes_gadimei_rm008z,
+		.decoder      = EM28XX_SAA711X,
+		.xclk         = EM28XX_XCLK_FREQUENCY_12MHZ,
+		.input        = { {
+			.type     = EM28XX_VMUX_TELEVISION,
+			.vmux     = SAA7115_COMPOSITE2,
+			.amux     = EM28XX_AMUX_VIDEO,
+		}, {
+			.type     = EM28XX_VMUX_COMPOSITE1,
+			.vmux     = SAA7115_COMPOSITE0,
+			.amux     = EM28XX_AMUX_LINE_IN,
+		}, {
+			.type     = EM28XX_VMUX_SVIDEO,
+			.vmux     = SAA7115_SVIDEO3,
+			.amux     = EM28XX_AMUX_LINE_IN,
+		} },
+	},
 	[EM2860_BOARD_TERRATEC_HYBRID_XS] = {
 		.name         = "Terratec Cinergy A Hybrid XS",
 		.valid        = EM28XX_BOARD_NOT_VALIDATED,
@@ -1551,7 +1573,7 @@ 
 	{ USB_DEVICE(0xeb1a, 0x2860),
 			.driver_info = EM2820_BOARD_UNKNOWN },
 	{ USB_DEVICE(0xeb1a, 0x2861),
-			.driver_info = EM2820_BOARD_UNKNOWN },
+			.driver_info = EM2861_BOARD_GADMEI_UTV330PLUS },
 	{ USB_DEVICE(0xeb1a, 0x2870),
 			.driver_info = EM2820_BOARD_UNKNOWN },
 	{ USB_DEVICE(0xeb1a, 0x2881),
--- a/drivers/media/video/em28xx/em28xx.h	2009-08-14 06:43:34.000000000 +0800
+++ b/drivers/media/video/em28xx/em28xx.h	2009-08-21 01:32:16.000000000 +0800
@@ -108,6 +108,7 @@ 
 #define EM2882_BOARD_KWORLD_ATSC_315U		  69
 #define EM2882_BOARD_EVGA_INDTUBE		  70
 #define EM2820_BOARD_SILVERCREST_WEBCAM           71
+#define EM2861_BOARD_GADMEI_UTV330PLUS		  72
 
 /* Limits minimum and default number of buffers */
 #define EM28XX_MIN_BUF 4
--- a/drivers/media/common/ir-keymaps.c	2009-08-14 06:43:34.000000000 +0800
+++ b/drivers/media/common/ir-keymaps.c	2009-08-21 01:38:25.000000000 +0800
@@ -2773,3 +2773,46 @@ 
 	[0x13] = KEY_CAMERA,
 };
 EXPORT_SYMBOL_GPL(ir_codes_evga_indtube);
+
+/* GADMEI UTV330+ RM008Z remote
+   Shine Liu <shinel@foxmail.com> 
+ */
+IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE] = {
+	[ 0x14 ] = KEY_ESC,		/* POWER OFF */
+	[ 0x0c ] = KEY_M,		/* MUTE */
+
+	[ 0x18 ] = KEY_PLAY,		/* TV */
+	[ 0x0e ] = KEY_VIDEO,		/* AV */
+	[ 0x0b ] = KEY_AUDIO,		/* SV */
+	[ 0x0f ] = KEY_RADIO,		/* FM */
+
+	[ 0x00 ] = KEY_1,
+	[ 0x01 ] = KEY_2,
+	[ 0x02 ] = KEY_3,
+	[ 0x03 ] = KEY_4,
+	[ 0x04 ] = KEY_5,
+	[ 0x05 ] = KEY_6,
+	[ 0x06 ] = KEY_7,
+	[ 0x07 ] = KEY_8,
+	[ 0x08 ] = KEY_9,
+	[ 0x09 ] = KEY_0,
+	[ 0x0a ] = KEY_D,		/* OSD */
+	[ 0x1c ] = KEY_BACKSPACE,	/* LAST */
+
+	[ 0x0d ] = KEY_PLAY,		/* PLAY */
+	[ 0x1e ] = KEY_S,		/* SNAPSHOT */
+	[ 0x1a ] = KEY_RECORD,		/* RECORD */
+	[ 0x17 ] = KEY_STOP,		/* STOP */
+
+	[ 0x1f ] = KEY_UP,		/* UP */
+	[ 0x44 ] = KEY_DOWN,		/* DOWN */
+	[ 0x46 ] = KEY_TAB,		/* BACK */
+	[ 0x4a ] = KEY_F,		/* FULLSECREEN */
+	
+	[ 0x10 ] = KEY_RIGHT,		/* VOLUMEUP */
+	[ 0x11 ] = KEY_LEFT,		/* VOLUMEDOWN */
+	[ 0x12 ] = KEY_UP,		/* CHANNELUP */
+	[ 0x13 ] = KEY_DOWN,		/* CHANNELDOWN */
+	[ 0x15 ] = KEY_ENTER,		/* OK */
+};
+EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z);
--- a/include/media/ir-common.h	2009-08-14 06:43:34.000000000 +0800
+++ b/include/media/ir-common.h	2009-08-21 01:41:01.000000000 +0800
@@ -163,6 +163,7 @@ 
 extern IR_KEYTAB_TYPE ir_codes_kaiomy[IR_KEYTAB_SIZE];
 extern IR_KEYTAB_TYPE ir_codes_dm1105_nec[IR_KEYTAB_SIZE];
 extern IR_KEYTAB_TYPE ir_codes_evga_indtube[IR_KEYTAB_SIZE];
+extern IR_KEYTAB_TYPE ir_codes_gadmei_rm008z[IR_KEYTAB_SIZE];
 
 #endif
 
--- a/Documentation/video4linux/CARDLIST.em28xx	2009-08-14 06:43:34.000000000 +0800
+++ b/Documentation/video4linux/CARDLIST.em28xx	2009-08-21 01:45:35.000000000 +0800
@@ -67,3 +67,4 @@ 
  69 -> KWorld ATSC 315U HDTV TV Box             (em2882)        [eb1a:a313]
  70 -> Evga inDtube                             (em2882)
  71 -> Silvercrest Webcam 1.3mpix               (em2820/em2840)
+ 72 -> Gadmei UTV330+                           (em2861)        [eb1a:2861]