Message ID | 5DB62609.3050404@gmx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support for Terratech Grabster MX150/250 and ADStech XPress USBAV-192 | expand |
Hi Thomas, On Mon, Oct 28, 2019 at 12:19:37AM +0100, Thomas Pantzer wrote: > - Adds support for USB analog video/audio capture devices > - Terratec Grabster AV 150/250 MX USB-ID (0ccd:0079) > - ADS Tech Instant Video XPress USBAV-192 USB-ID (06e1:a192) > > - Bugfix: constant TM6000_MAXBOARDS off by one, > Grabster was never enumerated > > Signed-off-by: Thomas Pantzer <kernel-org@pantzer.net> > --- > drivers/media/usb/tm6000/tm6000-cards.c | 79 > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------- > 1 file changed, 58 insertions(+), 21 deletions(-) > diff -bBduwp linux-3.18.16/drivers/media/usb/tm6000/tm6000-cards.c-vanilla linux/drivers/media/usb/tm6000/tm6000-cards.c > --- linux-3.18.16/drivers/media/usb/tm6000/tm6000-cards.c-vanilla 2015-06-19 18:42:40.000000000 +0200 This is a diff against 3.18.16? Please diff and _test_ against something more recent. > +++ linux/drivers/media/usb/tm6000/tm6000-cards.c 2019-10-28 00:01:45.000000000 +0100 > @@ -52,13 +52,16 @@ > #define TM6010_BOARD_BEHOLD_WANDER_LITE 14 > #define TM6010_BOARD_BEHOLD_VOYAGER_LITE 15 > #define TM5600_BOARD_TERRATEC_GRABSTER 16 > +#define TM5600_BOARD_ADSTECH_XPRESS_USBAV_192 17 > + > > #define is_generic(model) ((model == TM6000_BOARD_UNKNOWN) || \ > (model == TM5600_BOARD_GENERIC) || \ Your patch got mangled by your email client, and it does not apply any more. See: https://www.kernel.org/doc/html/latest/process/submitting-patches.html#no-mime-no-links-no-compression-no-attachments-just-plain-text That doesn't mean the code is wrong. > (model == TM6000_BOARD_GENERIC) || \ > (model == TM6010_BOARD_GENERIC)) > > -#define TM6000_MAXBOARDS 16 > +#define TM6000_MAXBOARDS 18 Indeed that is wrong. > + > static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET }; > > module_param_array(card, int, NULL, 0444); > @@ -500,25 +503,6 @@ static struct tm6000_board tm6000_boards > .amux = TM6000_AMUX_SIF1, > }, > }, > - [TM5600_BOARD_TERRATEC_GRABSTER] = { > - .name = "Terratec Grabster AV 150/250 MX", > - .type = TM5600, > - .tuner_type = TUNER_ABSENT, > - .vinput = { { > - .type = TM6000_INPUT_TV, > - .vmux = TM6000_VMUX_VIDEO_B, > - .amux = TM6000_AMUX_ADC1, > - }, { > - .type = TM6000_INPUT_COMPOSITE1, > - .vmux = TM6000_VMUX_VIDEO_A, > - .amux = TM6000_AMUX_ADC2, > - }, { > - .type = TM6000_INPUT_SVIDEO, > - .vmux = TM6000_VMUX_VIDEO_AB, > - .amux = TM6000_AMUX_ADC2, > - }, > - }, > - }, > [TM6010_BOARD_TWINHAN_TU501] = { > .name = "Twinhan TU501(704D1)", > .tuner_type = TUNER_XC2028, /* has a XC3028 */ > @@ -614,6 +598,58 @@ static struct tm6000_board tm6000_boards > .amux = TM6000_AMUX_ADC1, > }, > }, > + [TM5600_BOARD_TERRATEC_GRABSTER] = { > + .name = "Terratec Grabster AV 150/250 MX", > + .type = TM5600, > + .tuner_type = TUNER_ABSENT, These lines haven't changed so they shouldn't be in the diff. > + .gpio = { > + .tuner_reset = TM6000_GPIO_1, > + /* this GPIO configuration needs to be here due to a > + bug elsewhere, if it is missing the driver fails to > + load, if TUNER_ABSENT or has_tuner==0 is stated, the > + tuner-reset configuration should be ignored */ > + }, > + .caps = { > + .has_tuner = 0, > + .has_eeprom = 0, > + }, > + .vinput = { { > + .type = TM6000_INPUT_SVIDEO, > + .vmux = TM6000_VMUX_VIDEO_A, > + .amux = TM6000_AMUX_ADC1, > + }, { > + .type = TM6000_INPUT_COMPOSITE1, > + .vmux = TM6000_VMUX_VIDEO_B, > + .amux = TM6000_AMUX_ADC2, > + }, > + }, > + }, > + [TM5600_BOARD_ADSTECH_XPRESS_USBAV_192] = { > + .name = "ADStech XPress USBAV-192", > + .type = TM5600, > + .tuner_type = TUNER_ABSENT, > + .caps = { > + .has_eeprom = 1, > + .has_tuner = 0, > + }, > + .gpio = { > + .tuner_reset = TM6000_GPIO_1, > + /* this GPIO configuration needs to be here due to a > + bug elsewhere, if it is missing the driver fails to > + load, if TUNER_ABSENT or has_tuner==0 is stated, the > + tuner-reset configuration should be ignored */ > + }, > + .vinput = { { > + .type = TM6000_INPUT_SVIDEO, > + .vmux = TM6000_VMUX_VIDEO_A, > + .amux = TM6000_AMUX_ADC1, > + }, { > + .type = TM6000_INPUT_COMPOSITE1, > + .vmux = TM6000_VMUX_VIDEO_B, > + .amux = TM6000_AMUX_ADC2, > + }, > + }, > + }, > }; > > /* table of devices that work with this driver */ > @@ -631,13 +667,14 @@ static struct usb_device_id tm6000_id_ta > { USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER }, > { USB_DEVICE(0x0ccd, 0x0086), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE }, > { USB_DEVICE(0x0ccd, 0x00A5), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE }, > - { USB_DEVICE(0x0ccd, 0x0079), .driver_info = TM5600_BOARD_TERRATEC_GRABSTER }, > { USB_DEVICE(0x13d3, 0x3240), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, > { USB_DEVICE(0x13d3, 0x3241), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, > { USB_DEVICE(0x13d3, 0x3243), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, > { USB_DEVICE(0x13d3, 0x3264), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, > { USB_DEVICE(0x6000, 0xdec2), .driver_info = TM6010_BOARD_BEHOLD_WANDER_LITE }, > { USB_DEVICE(0x6000, 0xdec3), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER_LITE }, > + { USB_DEVICE(0x0ccd, 0x0079), .driver_info = TM5600_BOARD_TERRATEC_GRABSTER }, Why is it moved? > + { USB_DEVICE(0x06e1, 0xa192), .driver_info = TM5600_BOARD_ADSTECH_XPRESS_USBAV_192 }, > { } > }; > MODULE_DEVICE_TABLE(usb, tm6000_id_table); Thanks Sean
diff -bBduwp linux-3.18.16/drivers/media/usb/tm6000/tm6000-cards.c-vanilla linux/drivers/media/usb/tm6000/tm6000-cards.c --- linux-3.18.16/drivers/media/usb/tm6000/tm6000-cards.c-vanilla 2015-06-19 18:42:40.000000000 +0200 +++ linux/drivers/media/usb/tm6000/tm6000-cards.c 2019-10-28 00:01:45.000000000 +0100 @@ -52,13 +52,16 @@ #define TM6010_BOARD_BEHOLD_WANDER_LITE 14 #define TM6010_BOARD_BEHOLD_VOYAGER_LITE 15 #define TM5600_BOARD_TERRATEC_GRABSTER 16 +#define TM5600_BOARD_ADSTECH_XPRESS_USBAV_192 17 + #define is_generic(model) ((model == TM6000_BOARD_UNKNOWN) || \ (model == TM5600_BOARD_GENERIC) || \ (model == TM6000_BOARD_GENERIC) || \ (model == TM6010_BOARD_GENERIC)) -#define TM6000_MAXBOARDS 16 +#define TM6000_MAXBOARDS 18 + static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET }; module_param_array(card, int, NULL, 0444); @@ -500,25 +503,6 @@ static struct tm6000_board tm6000_boards .amux = TM6000_AMUX_SIF1, }, }, - [TM5600_BOARD_TERRATEC_GRABSTER] = { - .name = "Terratec Grabster AV 150/250 MX", - .type = TM5600, - .tuner_type = TUNER_ABSENT, - .vinput = { { - .type = TM6000_INPUT_TV, - .vmux = TM6000_VMUX_VIDEO_B, - .amux = TM6000_AMUX_ADC1, - }, { - .type = TM6000_INPUT_COMPOSITE1, - .vmux = TM6000_VMUX_VIDEO_A, - .amux = TM6000_AMUX_ADC2, - }, { - .type = TM6000_INPUT_SVIDEO, - .vmux = TM6000_VMUX_VIDEO_AB, - .amux = TM6000_AMUX_ADC2, - }, - }, - }, [TM6010_BOARD_TWINHAN_TU501] = { .name = "Twinhan TU501(704D1)", .tuner_type = TUNER_XC2028, /* has a XC3028 */ @@ -614,6 +598,58 @@ static struct tm6000_board tm6000_boards .amux = TM6000_AMUX_ADC1, }, }, + [TM5600_BOARD_TERRATEC_GRABSTER] = { + .name = "Terratec Grabster AV 150/250 MX", + .type = TM5600, + .tuner_type = TUNER_ABSENT, + .gpio = { + .tuner_reset = TM6000_GPIO_1, + /* this GPIO configuration needs to be here due to a + bug elsewhere, if it is missing the driver fails to + load, if TUNER_ABSENT or has_tuner==0 is stated, the + tuner-reset configuration should be ignored */ + }, + .caps = { + .has_tuner = 0, + .has_eeprom = 0, + }, + .vinput = { { + .type = TM6000_INPUT_SVIDEO, + .vmux = TM6000_VMUX_VIDEO_A, + .amux = TM6000_AMUX_ADC1, + }, { + .type = TM6000_INPUT_COMPOSITE1, + .vmux = TM6000_VMUX_VIDEO_B, + .amux = TM6000_AMUX_ADC2, + }, + }, + }, + [TM5600_BOARD_ADSTECH_XPRESS_USBAV_192] = { + .name = "ADStech XPress USBAV-192", + .type = TM5600, + .tuner_type = TUNER_ABSENT, + .caps = { + .has_eeprom = 1, + .has_tuner = 0, + }, + .gpio = { + .tuner_reset = TM6000_GPIO_1, + /* this GPIO configuration needs to be here due to a + bug elsewhere, if it is missing the driver fails to + load, if TUNER_ABSENT or has_tuner==0 is stated, the + tuner-reset configuration should be ignored */ + }, + .vinput = { { + .type = TM6000_INPUT_SVIDEO, + .vmux = TM6000_VMUX_VIDEO_A, + .amux = TM6000_AMUX_ADC1, + }, { + .type = TM6000_INPUT_COMPOSITE1, + .vmux = TM6000_VMUX_VIDEO_B, + .amux = TM6000_AMUX_ADC2, + }, + }, + }, }; /* table of devices that work with this driver */ @@ -631,13 +667,14 @@ static struct usb_device_id tm6000_id_ta { USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER }, { USB_DEVICE(0x0ccd, 0x0086), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE }, { USB_DEVICE(0x0ccd, 0x00A5), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE }, - { USB_DEVICE(0x0ccd, 0x0079), .driver_info = TM5600_BOARD_TERRATEC_GRABSTER }, { USB_DEVICE(0x13d3, 0x3240), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, { USB_DEVICE(0x13d3, 0x3241), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, { USB_DEVICE(0x13d3, 0x3243), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, { USB_DEVICE(0x13d3, 0x3264), .driver_info = TM6010_BOARD_TWINHAN_TU501 }, { USB_DEVICE(0x6000, 0xdec2), .driver_info = TM6010_BOARD_BEHOLD_WANDER_LITE }, { USB_DEVICE(0x6000, 0xdec3), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER_LITE }, + { USB_DEVICE(0x0ccd, 0x0079), .driver_info = TM5600_BOARD_TERRATEC_GRABSTER }, + { USB_DEVICE(0x06e1, 0xa192), .driver_info = TM5600_BOARD_ADSTECH_XPRESS_USBAV_192 }, { } }; MODULE_DEVICE_TABLE(usb, tm6000_id_table);
- Adds support for USB analog video/audio capture devices - Terratec Grabster AV 150/250 MX USB-ID (0ccd:0079) - ADS Tech Instant Video XPress USBAV-192 USB-ID (06e1:a192) - Bugfix: constant TM6000_MAXBOARDS off by one, Grabster was never enumerated Signed-off-by: Thomas Pantzer <kernel-org@pantzer.net> --- drivers/media/usb/tm6000/tm6000-cards.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 21 deletions(-)