em28xx: Add entry for GADMEI UTV330+ and related IR codec
Subsystems (2)
PATCH 1/1 em28xx: Add entry for GADMEI UTV330+ and related IR codec
Patch to support for the GADMEI UTV330+ board. IR codec this board is also added.
Based and tested on linux-2.6.31-rc6
-----------------------------------------------------------------------
drivers/media/video/em28xx/em28xx-cards.c +23 -1
@@ -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),
drivers/media/video/em28xx/em28xx.h +1 -0
@@ -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
drivers/media/common/ir-keymaps.c +43 -0
46 lines not on this page · raw message
include/media/ir-common.h +1 -0
@@ -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
Documentation/video4linux/CARDLIST.em28xx +1 -0
@@ -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]
Quoted 121 lines · Shine Liu
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 <[email protected]>-----------------------------------------------------------------------
drivers/media/video/em28xx/em28xx-cards.c 2009-08-21 01:31:23.000000000 +0800 renamed from drivers/media/video/em28xx/em28xx-cards.c 2009-08-14 06:43:34.000000000 +0800 +23
-1@@ -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),drivers/media/video/em28xx/em28xx.h 2009-08-21 01:32:16.000000000 +0800 renamed from drivers/media/video/em28xx/em28xx.h 2009-08-14 06:43:34.000000000 +0800 +1
-0@@ -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 4drivers/media/common/ir-keymaps.c 2009-08-21 01:38:25.000000000 +0800 renamed from drivers/media/common/ir-keymaps.c 2009-08-14 06:43:34.000000000 +0800 +43
-0@@ -2773,3 +2773,46 @@ [0x13] = KEY_CAMERA, }; EXPORT_SYMBOL_GPL(ir_codes_evga_indtube); + +/* GADMEI UTV330+ RM008Z remote + Shine Liu <[email protected]> + */ +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);include/media/ir-common.h 2009-08-21 01:41:01.000000000 +0800 renamed from include/media/ir-common.h 2009-08-14 06:43:34.000000000 +0800 +1
-0@@ -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]; #endifDocumentation/video4linux/CARDLIST.em28xx 2009-08-21 01:45:35.000000000 +0800 renamed from Documentation/video4linux/CARDLIST.em28xx 2009-08-14 06:43:34.000000000 +0800 +0
-0@@ -67,3 +67,4 @@
Quoted 4 lines
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
Signature · 2 lines
Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com
Quoted 17 lines
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_hashfield to make the assignment. You will need to add an entry to thei2c_hashlist 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.
Quoted 8 lines
Once those two issues are addressed, I don't see any reason this can't be accepted upstream.
Cheers,
Devin
Hi Devin,
Thanks for your suggestion. From the dmesg, I got the information:
em28xx #0: Board i2c devicelist hash is 0x4ba50080
I've regenerated the patch used the i2c hash value 0x4ba50080.
Best regard,
Shine
-----------------------------------------------------------
drivers/media/video/em28xx/em28xx-cards.c +22 -0
@@ -558,6 +558,27 @@ .amux = EM28XX_AMUX_LINE_IN, } }, }, + [EM2861_BOARD_GADMEI_UTV330PLUS] = { + .name = "Gadmei UTV330+", + .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,
@@ -1665,6 +1686,7 @@ {0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC}, {0x1ba50080, EM2860_BOARD_SAA711X_REFERENCE_DESIGN, TUNER_ABSENT}, {0xc51200e3, EM2820_BOARD_GADMEI_TVR200, TUNER_LG_PAL_NEW_TAPC}, + {0x4ba50080, EM2861_BOARD_GADMEI_UTV330PLUS, TUNER_TNF_5335MF}, };/* I2C possible address to saa7115, tvp5150, msp3400, tvaudio */
drivers/media/video/em28xx/em28xx.h +1 -0
@@ -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
drivers/media/common/ir-keymaps.c +43 -0
46 lines not on this page · raw message
include/media/ir-common.h +1 -0
@@ -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
Documentation/video4linux/CARDLIST.em28xx +1 -0
@@ -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]
Hi Devin,
Thanks for your suggestion. From the dmesg, I got the information:
em28xx #0: Board i2c devicelist hash is 0x4ba50080
I've regenerated the patch used the i2c hash value 0x4ba50080.
|-------------------------------------------------------------------| |Sorry for the last wrong mail, "ir_codes_gadimei_rm008z" should be | |"ir_codes_gadmei_rm008z". This patch is correct. | |-------------------------------------------------------------------|
Best regard,
Shine
-----------------------------------------------------------
drivers/media/video/em28xx/em28xx-cards.c +22 -0
@@ -558,6 +558,27 @@ .amux = EM28XX_AMUX_LINE_IN, } }, }, + [EM2861_BOARD_GADMEI_UTV330PLUS] = { + .name = "Gadmei UTV330+", + .tuner_type = TUNER_TNF_5335MF, + .tda9887_conf = TDA9887_PRESENT, + .ir_codes = ir_codes_gadmei_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,
@@ -1665,6 +1686,7 @@ {0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC}, {0x1ba50080, EM2860_BOARD_SAA711X_REFERENCE_DESIGN, TUNER_ABSENT}, {0xc51200e3, EM2820_BOARD_GADMEI_TVR200, TUNER_LG_PAL_NEW_TAPC}, + {0x4ba50080, EM2861_BOARD_GADMEI_UTV330PLUS, TUNER_TNF_5335MF}, };/* I2C possible address to saa7115, tvp5150, msp3400, tvaudio */
drivers/media/video/em28xx/em28xx.h +1 -0
@@ -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
drivers/media/common/ir-keymaps.c +43 -0
46 lines not on this page · raw message
include/media/ir-common.h +1 -0
@@ -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
Documentation/video4linux/CARDLIST.em28xx +1 -0
@@ -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]
Devin Heitmueller
Reviewed-byQuoted 10 lines · Shine Liu
Hi Devin,
Thanks for your suggestion. From the dmesg, I got the information:
em28xx #0: Board i2c devicelist hash is
0x4ba50080I've regenerated the patch used the i2c hash value
0x4ba50080.
Quoted 8 lines
|-------------------------------------------------------------------| |Sorry for the last wrong mail, "ir_codes_gadimei_rm008z" should be | |"ir_codes_gadmei_rm008z". This patch is correct. | |-------------------------------------------------------------------|Best regard,
Shine
Looks good to me:
Devin
Signature · 2 lines
Devin J. Heitmueller - Kernel Labs http://www.kernellabs.com