Re: [PATCH] V4L: em28xx: add support for Digitus/Plextor PX-AV200U

From: James Bates
Date: Wed Nov 25 2015 - 06:45:06 EST


Hi all,

Is there any reason why this patch was not merged into the mainline
kernel branch? I own a Plextor PX AV200U, and I can confirm that this
code does indeed work: I can capture both video and audio from the
card, and I would be very grateful if it could be merged.

Of course, it needs a little tweaking to get it to run in 4.xx
kernels. For one thing, the assigned id-number (59) has by now been
taken by another board, but I simply used the next available id as
found in em28xx.h (98 in kernel 4.1.12). Also some constants appear to
have changed name, and a few files were moved around since this patch
was originally posted.

Below is my tweaked patch, which I applied to kernel 4.1.12.

Is there some way to get this feature merged into the mainline branch?

Kind regards,
James Bates

--- Documentation/video4linux/CARDLIST.em28xx.orig 2015-04-13
00:12:50.000000000 +0200
+++ Documentation/video4linux/CARDLIST.em28xx 2015-10-24
20:45:28.000000000 +0200
@@ -94,3 +94,4 @@
93 -> KWorld USB ATSC TV Stick UB435-Q V3 (em2874) [1b80:e34c]
94 -> PCTV tripleStick (292e) (em28178)
95 -> Leadtek VC100 (em2861) [0413:6f07]
+ 98 -> Plextor PX-AV200U (em2880)
--- drivers/media/usb/em28xx/em28xx-cards.c.orig 2015-04-13
00:12:50.000000000 +0200
+++ drivers/media/usb/em28xx/em28xx-cards.c 2015-10-24 21:12:27.000000000 +0200
@@ -2279,6 +2279,21 @@
.has_dvb = 1,
.ir_codes = RC_MAP_TERRATEC_SLIM_2,
},
+ [EM2820_BOARD_PLEXTOR_PX_AV200U] = {
+ .name = "Plextor PX-AV200U",
+ .vchannels = 2,
+ .tuner_type = TUNER_ABSENT,
+ .decoder = EM28XX_SAA711X,
+ .input = { {
+ .type = EM28XX_VMUX_COMPOSITE1,
+ .vmux = SAA7115_COMPOSITE0,
+ .amux = EM28XX_AMUX_LINE_IN,
+ }, {
+ .type = EM28XX_VMUX_SVIDEO,
+ .vmux = SAA7115_SVIDEO3,
+ .amux = EM28XX_AMUX_LINE_IN,
+ } },
+ },
};
EXPORT_SYMBOL_GPL(em28xx_boards);

@@ -2492,6 +2507,7 @@
{0xc51200e3, EM2820_BOARD_GADMEI_TVR200, TUNER_LG_PAL_NEW_TAPC},
{0x4ba50080, EM2861_BOARD_GADMEI_UTV330PLUS, TUNER_TNF_5335MF},
{0x6b800080, EM2874_BOARD_LEADERSHIP_ISDBT, TUNER_ABSENT},
+ {0x6ba50080, EM2820_BOARD_PLEXTOR_PX_AV200U, TUNER_ABSENT},
};

/* NOTE: introduce a separate hash table for devices with 16 bit eeproms */
--- drivers/media/usb/em28xx/em28xx.h.orig 2015-04-13 00:12:50.000000000 +0200
+++ drivers/media/usb/em28xx/em28xx.h 2015-10-24 20:43:23.000000000 +0200
@@ -143,6 +143,7 @@
#define EM2861_BOARD_LEADTEK_VC100 95
#define EM28178_BOARD_TERRATEC_T2_STICK_HD 96
#define EM2884_BOARD_ELGATO_EYETV_HYBRID_2008 97
+#define EM2820_BOARD_PLEXTOR_PX_AV200U 98

/* Limits minimum and default number of buffers */
#define EM28XX_MIN_BUF 4



>>
>> Did you verify that both video inputs were working as expected? Also,
>> did you confirm the audio support works?
>
> Yes, audio, composite and s-video are functional.
>
>
> From: Misha Zhilin <misha@xxxxxxxxxxx>
>
> Adds support for Digitus/Plextor PX-AV200U grabbers
> Signed-off-by: Misha Zhilin <misha@xxxxxxxxxxx>
> ---
>
> diff -urN linux-2.6.27.x86_64.orig/drivers/media/video/em28xx/em28xx-cards.c \
> linux-2.6.27.x86_64.new/drivers/media/video/em28xx/em28xx-cards.c
> --- linux-2.6.27.x86_64.orig/drivers/media/video/em28xx/em28xx-cards.c 2008-10-09 \
> 18:13:53.000000000 -0400
> +++ linux-2.6.27.x86_64.new/drivers/media/video/em28xx/em28xx-cards.c 2009-03-23 \
> 12:05:22.000000000 -0400 @@ -1087,6 +1087,21 @@
> .amux = EM28XX_AMUX_LINE_IN,
> } },
> },
> + [EM2820_BOARD_PLEXTOR_PX_AV200U] = {
> + .name = "Plextor PX-AV200U",
> + .vchannels = 2,
> + .tuner_type = TUNER_ABSENT,
> + .decoder = EM28XX_SAA7113,
> + .input = { {
> + .type = EM28XX_VMUX_COMPOSITE1,
> + .vmux = SAA7115_COMPOSITE0,
> + .amux = EM28XX_AMUX_AC97_LINE_IN,
> + }, {
> + .type = EM28XX_VMUX_SVIDEO,
> + .vmux = SAA7115_SVIDEO3,
> + .amux = EM28XX_AMUX_AC97_LINE_IN,
> + } },
> + },
> };
> const unsigned int em28xx_bcount = ARRAY_SIZE(em28xx_boards);
>
> @@ -1269,6 +1284,7 @@
> {0xb06a32c3, EM2800_BOARD_TERRATEC_CINERGY_200, TUNER_LG_PAL_NEW_TAPC},
> {0xf51200e3, EM2800_BOARD_VGEAR_POCKETTV, TUNER_LG_PAL_NEW_TAPC},
> {0x1ba50080, EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA, TUNER_ABSENT},
> + {0x6ba50080, EM2820_BOARD_PLEXTOR_PX_AV200U, TUNER_ABSENT},
> };
>
> int em28xx_tuner_callback(void *ptr, int command, int arg)
> diff -urN linux-2.6.27.x86_64.orig/drivers/media/video/em28xx/em28xx.h \
> linux-2.6.27.x86_64.new/drivers/media/video/em28xx/em28xx.h
> --- linux-2.6.27.x86_64.orig/drivers/media/video/em28xx/em28xx.h 2008-10-09 \
> 18:13:53.000000000 -0400
> +++ linux-2.6.27.x86_64.new/drivers/media/video/em28xx/em28xx.h 2009-03-23 \
> 11:11:40.000000000 -0400 @@ -97,6 +97,7 @@
> #define EM2882_BOARD_PINNACLE_HYBRID_PRO 56
> #define EM2883_BOARD_KWORLD_HYBRID_A316 57
> #define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
> +#define EM2820_BOARD_PLEXTOR_PX_AV200U 59
>
> /* Limits minimum and default number of buffers */
> #define EM28XX_MIN_BUF 4
> diff -urN linux-2.6.27.x86_64.orig/Documentation/video4linux/CARDLIST.em28xx \
> linux-2.6.27.x86_64.new/Documentation/video4linux/CARDLIST.em28xx
> --- linux-2.6.27.x86_64.orig/Documentation/video4linux/CARDLIST.em28xx 2008-10-09 \
> 18:13:53.000000000 -0400
> +++ linux-2.6.27.x86_64.new/Documentation/video4linux/CARDLIST.em28xx 2009-03-18 \
> 11:15:00.000000000 -0400 @@ -57,3 +57,4 @@
> 56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226]
> 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316]
> 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041]
> + 59 -> Plextor PX-AV200U (em2880)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/