From 989eb154eafad00c3b5039a3eca03e108dac1df8 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 26 Nov 2007 01:53:12 -0300 Subject: V4L/DVB (6692): pvrusb2: Centralize device specific attributes into a single place The pvrusb2 driver currently supports two variants of the Hauppauge PVR USB2. However there are other hardware types potentially supportable, but the driver at the moment is not structured to make it easy to describe these minor variations. This changeset is the first set of changes to make such additional device support possible. Device attributes are held in several tables all contained within pvrusb2-devattr.c; all other device-specific driver behavior now derives from these tables. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 101 ++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 drivers/media/video/pvrusb2/pvrusb2-devattr.c (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c new file mode 100644 index 000000000000..aebcb846de6a --- /dev/null +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -0,0 +1,101 @@ +/* + * + * $Id$ + * + * Copyright (C) 2007 Mike Isely + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +/* + +This source file should encompass ALL per-device type information for the +driver. To define a new device, add elements to the pvr2_device_table and +pvr2_device_desc structures. + +*/ + +#include "pvrusb2-devattr.h" +#include + +/* Known major hardware variants, keyed from device ID */ +#define PVR2_HDW_TYPE_29XXX 0 +#define PVR2_HDW_TYPE_24XXX 1 + +struct usb_device_id pvr2_device_table[] = { + [PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) }, + [PVR2_HDW_TYPE_24XXX] = { USB_DEVICE(0x2040, 0x2400) }, + { } +}; + +/* Names of other client modules to request for 24xxx model hardware */ +static const char *pvr2_client_24xxx[] = { + "cx25840", + "tuner", + "wm8775", +}; + +/* Names of other client modules to request for 29xxx model hardware */ +static const char *pvr2_client_29xxx[] = { + "msp3400", + "saa7115", + "tuner", +}; + +/* Firmware file name(s) for 29xxx devices */ +static const char *pvr2_fw1_names_29xxx[] = { + "v4l-pvrusb2-29xxx-01.fw", +}; + +/* Firmware file name(s) for 29xxx devices */ +static const char *pvr2_fw1_names_24xxx[] = { + "v4l-pvrusb2-24xxx-01.fw", +}; + +const struct pvr2_device_desc pvr2_device_descriptions[] = { + [PVR2_HDW_TYPE_29XXX] = { + .description = "WinTV PVR USB2 Model Category 29xxxx", + .shortname = "29xxx", + .client_modules.lst = pvr2_client_29xxx, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_29xxx), + .fx2_firmware.lst = pvr2_fw1_names_29xxx, + .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_29xxx), + }, + [PVR2_HDW_TYPE_24XXX] = { + .description = "WinTV PVR USB2 Model Category 24xxxx", + .shortname = "24xxx", + .client_modules.lst = pvr2_client_24xxx, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_24xxx), + .fx2_firmware.lst = pvr2_fw1_names_24xxx, + .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_24xxx), + .flag_has_cx25840 = !0, + .flag_has_wm8775 = !0, + }, +}; + +const unsigned int pvr2_device_count = ARRAY_SIZE(pvr2_device_descriptions); + +MODULE_DEVICE_TABLE(usb, pvr2_device_table); + + +/* + Stuff for Emacs to see, in order to encourage consistent editing style: + *** Local Variables: *** + *** mode: c *** + *** fill-column: 75 *** + *** tab-width: 8 *** + *** c-basic-offset: 8 *** + *** End: *** + */ -- cgit From aaf7884db395332ae8474f3ea5bcdd39c0a941ea Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 26 Nov 2007 02:04:11 -0300 Subject: V4L/DVB (6697): pvrusb2: Existence of Hauppauge ROM is a device-specific attribute Arrange so that the pvrusb2 driver can optionally work without a Hauppauge ROM being present - which is fairly important for devices that happen to not come from Hauppauge. The expected existence of a Hauppauge ROM is now a device attribute. The tuner type is now also a device attribute, which is consulted if there is no ROM. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index aebcb846de6a..54a401e8bb14 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -72,6 +72,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .client_modules.cnt = ARRAY_SIZE(pvr2_client_29xxx), .fx2_firmware.lst = pvr2_fw1_names_29xxx, .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_29xxx), + .flag_has_hauppauge_rom = !0, }, [PVR2_HDW_TYPE_24XXX] = { .description = "WinTV PVR USB2 Model Category 24xxxx", @@ -82,6 +83,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_24xxx), .flag_has_cx25840 = !0, .flag_has_wm8775 = !0, + .flag_has_hauppauge_rom = !0, }, }; -- cgit From f5174af201f2e22c101bb02d06343e4bc5f056de Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 26 Nov 2007 02:07:26 -0300 Subject: V4L/DVB (6698): pvrusb2: Implement signal routing schemes The exact routing of video and audio signals within a device is a device-specific attribute. Hauppauge devices do it one way; other types of device may route things differently. Unfortunately it is rather impractical to define chip-specific routing at the device attribute level, so instead what happens here is that "schemes" are defined. Each chip level interface implements its part of a given scheme and the scheme as a whole is made into a device specific attribute controlled via a table entry in pvrusb2-devattr.c. The only scheme defined here is for Hauppauge devices, but clearly this opens the door for other possibilities to follow. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 54a401e8bb14..464a13a06494 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -73,6 +73,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .fx2_firmware.lst = pvr2_fw1_names_29xxx, .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_29xxx), .flag_has_hauppauge_rom = !0, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, }, [PVR2_HDW_TYPE_24XXX] = { .description = "WinTV PVR USB2 Model Category 24xxxx", @@ -84,6 +85,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .flag_has_cx25840 = !0, .flag_has_wm8775 = !0, .flag_has_hauppauge_rom = !0, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, }, }; -- cgit From 056d1a899201f02777a35a32f8e6c9a2aac63f63 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 26 Nov 2007 02:09:42 -0300 Subject: V4L/DVB (6699): pvrusb2: Use of virtual IR chip is a device-specific attribute For Hauppauge 24xxx devices, the IR receiver is a custom piece of logic that is very specific to the device. The pvrusb2 driver can virtualize this to make it look like a more normal IR receiver found in other Hauppauge devices. The decision of whether or not to enable this virtualization however is a device-specific attribute, thus this changeset. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 464a13a06494..6ba0b79e3a1e 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -85,6 +85,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .flag_has_cx25840 = !0, .flag_has_wm8775 = !0, .flag_has_hauppauge_rom = !0, + .flag_has_hauppauge_custom_ir = !0, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, }, }; -- cgit From 9e2e3aeb2d2c8bf64b04e1f5747f1d9842df43de Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Mon, 26 Nov 2007 02:14:23 -0300 Subject: V4L/DVB (6701): pvrusb2: Enable support for "GOTVIEW USB2.0 DVD2" hardware This changeset allows the pvrusb2 driver to operate a new device type ("GOTVIEW USB2.0 DVD2"). Changes amount to defining a new routing scheme for the device and adding appropriate table entries into pvrusb2-devattr.c. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 6ba0b79e3a1e..e0a5bb9a9587 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -29,14 +29,20 @@ pvr2_device_desc structures. #include "pvrusb2-devattr.h" #include +/* All this is needed in order to pull in tuner type ids... */ +#include +#include +#include /* Known major hardware variants, keyed from device ID */ #define PVR2_HDW_TYPE_29XXX 0 #define PVR2_HDW_TYPE_24XXX 1 +#define PVR2_HDW_TYPE_GOTVIEW_2 2 struct usb_device_id pvr2_device_table[] = { [PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) }, [PVR2_HDW_TYPE_24XXX] = { USB_DEVICE(0x2040, 0x2400) }, + [PVR2_HDW_TYPE_GOTVIEW_2] = { USB_DEVICE(0x1164, 0x0622) }, { } }; @@ -54,6 +60,12 @@ static const char *pvr2_client_29xxx[] = { "tuner", }; +// Names of other client modules to request for Gotview 2 model hardware +static const char *pvr2_client_gotview_2[] = { + "cx25840", + "tuner", +}; + /* Firmware file name(s) for 29xxx devices */ static const char *pvr2_fw1_names_29xxx[] = { "v4l-pvrusb2-29xxx-01.fw", @@ -88,6 +100,14 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .flag_has_hauppauge_custom_ir = !0, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, }, + [PVR2_HDW_TYPE_GOTVIEW_2] = { + .description = "Gotview USB 2.0 DVD 2", + .shortname = "gv2", + .client_modules.lst = pvr2_client_gotview_2, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_gotview_2), + .default_tuner_type = TUNER_PHILIPS_FM1216ME_MK3, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_GOTVIEW, + }, }; const unsigned int pvr2_device_count = ARRAY_SIZE(pvr2_device_descriptions); -- cgit From 482cb9a75ba5df68f4bcbe806c838eaf28af34c0 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Tue, 27 Nov 2007 16:58:33 -0300 Subject: V4L/DVB (6702): pvrusb2: fix typo in comments Firmware file name(s) for 24xxx devices Signed-off-by: Michael Krufky Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index e0a5bb9a9587..e4a311a81000 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -71,7 +71,7 @@ static const char *pvr2_fw1_names_29xxx[] = { "v4l-pvrusb2-29xxx-01.fw", }; -/* Firmware file name(s) for 29xxx devices */ +/* Firmware file name(s) for 24xxx devices */ static const char *pvr2_fw1_names_24xxx[] = { "v4l-pvrusb2-24xxx-01.fw", }; -- cgit From 6a540254966f8a01de0f7c78a27db17458c2d8f5 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Sun, 2 Dec 2007 23:51:34 -0300 Subject: V4L/DVB (6705): pvrusb2: Implement default standard selection based on device type This adds a default video standard setting to the pvr2_device_desc structure for describing device types. With this change it is possible to set a reasonable default standard based on device type. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index e4a311a81000..eed64571ca0b 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -29,9 +29,8 @@ pvr2_device_desc structures. #include "pvrusb2-devattr.h" #include -/* All this is needed in order to pull in tuner type ids... */ +/* This is needed in order to pull in tuner type ids... */ #include -#include #include /* Known major hardware variants, keyed from device ID */ -- cgit From 787f5abb9519fd420c4681a560aabc449632a6c2 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Sat, 8 Dec 2007 17:08:32 -0300 Subject: V4L/DVB (6768): pvrusb2: Mark Gotview hardware as having a cx2584x part Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index eed64571ca0b..7c2b976960e1 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -104,6 +104,7 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .shortname = "gv2", .client_modules.lst = pvr2_client_gotview_2, .client_modules.cnt = ARRAY_SIZE(pvr2_client_gotview_2), + .flag_has_cx25840 = !0, .default_tuner_type = TUNER_PHILIPS_FM1216ME_MK3, .signal_routing_scheme = PVR2_ROUTING_SCHEME_GOTVIEW, }, -- cgit From 4542783c3733de9a21099cd0c42e1a2392c68a88 Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Sat, 8 Dec 2007 17:11:13 -0300 Subject: V4L/DVB (6769): pvrusb2: Implement experimental support for OnAir Creator and USB2 devices Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 7c2b976960e1..2d6519d20f07 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -37,13 +37,34 @@ pvr2_device_desc structures. #define PVR2_HDW_TYPE_29XXX 0 #define PVR2_HDW_TYPE_24XXX 1 #define PVR2_HDW_TYPE_GOTVIEW_2 2 +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR +#define PVR2_HDW_TYPE_ONAIR_CREATOR 3 +#endif +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 +#define PVR2_HDW_TYPE_ONAIR_USB2 4 +#endif struct usb_device_id pvr2_device_table[] = { [PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) }, [PVR2_HDW_TYPE_24XXX] = { USB_DEVICE(0x2040, 0x2400) }, [PVR2_HDW_TYPE_GOTVIEW_2] = { USB_DEVICE(0x1164, 0x0622) }, +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR + [PVR2_HDW_TYPE_ONAIR_CREATOR] = { USB_DEVICE(0x11ba, 0x1003) }, +#endif +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 + [PVR2_HDW_TYPE_ONAIR_USB2] = { USB_DEVICE(0x11ba, 0x1001) }, +#endif { } }; +#if defined(CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR) || defined(CONFIG_VIDEO_PVRUSB2_ONAIR_USB2) + +/* Names of other client modules to request for Creator model hardware */ +static const char *pvr2_client_onair[] = { + "saa7115", + "tuner", + "cs53l32a", +}; +#endif /* Names of other client modules to request for 24xxx model hardware */ static const char *pvr2_client_24xxx[] = { @@ -108,6 +129,26 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .default_tuner_type = TUNER_PHILIPS_FM1216ME_MK3, .signal_routing_scheme = PVR2_ROUTING_SCHEME_GOTVIEW, }, +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR + [PVR2_HDW_TYPE_ONAIR_CREATOR] = { + .description = "OnAir Creator Hybrid USB tuner", + .shortname = "oac", + .client_modules.lst = pvr2_client_onair, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair), + .default_tuner_type = TUNER_LG_TDVS_H06XF, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, + }, +#endif +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 + [PVR2_HDW_TYPE_ONAIR_USB2] = { + .description = "OnAir USB2 Hybrid USB tuner", + .shortname = "oa2", + .client_modules.lst = pvr2_client_onair, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair), + .default_tuner_type = TUNER_PHILIPS_ATSC, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, + }, +#endif }; const unsigned int pvr2_device_count = ARRAY_SIZE(pvr2_device_descriptions); -- cgit From d130fa8a05ee5f39c786df02dd75d1eebb12633b Mon Sep 17 00:00:00 2001 From: Mike Isely Date: Sat, 8 Dec 2007 17:20:06 -0300 Subject: V4L/DVB (6773): pvrusb2: rework device descriptor layout The pvrusb2 driver tries to keep all device specific attributes in a single data structure in one source file. This change further cleans up how that table is set up. We now try to group everything together for each specific device, and the number of symbols exported from this module has now been reduced to a single global. Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 155 +++++++++++++++----------- 1 file changed, 88 insertions(+), 67 deletions(-) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 2d6519d20f07..9a08670d406f 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -33,71 +33,22 @@ pvr2_device_desc structures. #include #include -/* Known major hardware variants, keyed from device ID */ -#define PVR2_HDW_TYPE_29XXX 0 -#define PVR2_HDW_TYPE_24XXX 1 -#define PVR2_HDW_TYPE_GOTVIEW_2 2 -#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR -#define PVR2_HDW_TYPE_ONAIR_CREATOR 3 -#endif -#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 -#define PVR2_HDW_TYPE_ONAIR_USB2 4 -#endif - -struct usb_device_id pvr2_device_table[] = { - [PVR2_HDW_TYPE_29XXX] = { USB_DEVICE(0x2040, 0x2900) }, - [PVR2_HDW_TYPE_24XXX] = { USB_DEVICE(0x2040, 0x2400) }, - [PVR2_HDW_TYPE_GOTVIEW_2] = { USB_DEVICE(0x1164, 0x0622) }, -#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR - [PVR2_HDW_TYPE_ONAIR_CREATOR] = { USB_DEVICE(0x11ba, 0x1003) }, -#endif -#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 - [PVR2_HDW_TYPE_ONAIR_USB2] = { USB_DEVICE(0x11ba, 0x1001) }, -#endif - { } -}; -#if defined(CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR) || defined(CONFIG_VIDEO_PVRUSB2_ONAIR_USB2) -/* Names of other client modules to request for Creator model hardware */ -static const char *pvr2_client_onair[] = { - "saa7115", - "tuner", - "cs53l32a", -}; -#endif -/* Names of other client modules to request for 24xxx model hardware */ -static const char *pvr2_client_24xxx[] = { - "cx25840", - "tuner", - "wm8775", -}; +/*------------------------------------------------------------------------*/ +/* Hauppauge PVR-USB2 Model 29xxx */ -/* Names of other client modules to request for 29xxx model hardware */ static const char *pvr2_client_29xxx[] = { "msp3400", "saa7115", "tuner", }; -// Names of other client modules to request for Gotview 2 model hardware -static const char *pvr2_client_gotview_2[] = { - "cx25840", - "tuner", -}; - -/* Firmware file name(s) for 29xxx devices */ static const char *pvr2_fw1_names_29xxx[] = { "v4l-pvrusb2-29xxx-01.fw", }; -/* Firmware file name(s) for 24xxx devices */ -static const char *pvr2_fw1_names_24xxx[] = { - "v4l-pvrusb2-24xxx-01.fw", -}; - -const struct pvr2_device_desc pvr2_device_descriptions[] = { - [PVR2_HDW_TYPE_29XXX] = { +static const struct pvr2_device_desc pvr2_device_29xxx = { .description = "WinTV PVR USB2 Model Category 29xxxx", .shortname = "29xxx", .client_modules.lst = pvr2_client_29xxx, @@ -106,8 +57,24 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_29xxx), .flag_has_hauppauge_rom = !0, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, - }, - [PVR2_HDW_TYPE_24XXX] = { +}; + + + +/*------------------------------------------------------------------------*/ +/* Hauppauge PVR-USB2 Model 24xxx */ + +static const char *pvr2_client_24xxx[] = { + "cx25840", + "tuner", + "wm8775", +}; + +static const char *pvr2_fw1_names_24xxx[] = { + "v4l-pvrusb2-24xxx-01.fw", +}; + +static const struct pvr2_device_desc pvr2_device_24xxx = { .description = "WinTV PVR USB2 Model Category 24xxxx", .shortname = "24xxx", .client_modules.lst = pvr2_client_24xxx, @@ -119,8 +86,19 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .flag_has_hauppauge_rom = !0, .flag_has_hauppauge_custom_ir = !0, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, - }, - [PVR2_HDW_TYPE_GOTVIEW_2] = { +}; + + + +/*------------------------------------------------------------------------*/ +/* GOTVIEW USB2.0 DVD2 */ + +static const char *pvr2_client_gotview_2[] = { + "cx25840", + "tuner", +}; + +static const struct pvr2_device_desc pvr2_device_gotview_2 = { .description = "Gotview USB 2.0 DVD 2", .shortname = "gv2", .client_modules.lst = pvr2_client_gotview_2, @@ -128,30 +106,73 @@ const struct pvr2_device_desc pvr2_device_descriptions[] = { .flag_has_cx25840 = !0, .default_tuner_type = TUNER_PHILIPS_FM1216ME_MK3, .signal_routing_scheme = PVR2_ROUTING_SCHEME_GOTVIEW, - }, +}; + + + #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR - [PVR2_HDW_TYPE_ONAIR_CREATOR] = { +/*------------------------------------------------------------------------*/ +/* OnAir Creator */ + +static const char *pvr2_client_onair_creator[] = { + "saa7115", + "tuner", + "cs53l32a", +}; + +static const struct pvr2_device_desc pvr2_device_onair_creator = { .description = "OnAir Creator Hybrid USB tuner", .shortname = "oac", - .client_modules.lst = pvr2_client_onair, - .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair), + .client_modules.lst = pvr2_client_onair_creator, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair_creator), .default_tuner_type = TUNER_LG_TDVS_H06XF, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, - }, +}; #endif + + + #ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 - [PVR2_HDW_TYPE_ONAIR_USB2] = { +/*------------------------------------------------------------------------*/ +/* OnAir USB 2.0 */ + +static const char *pvr2_client_onair_usb2[] = { + "saa7115", + "tuner", + "cs53l32a", +}; + +static const struct pvr2_device_desc pvr2_device_onair_usb2 = { .description = "OnAir USB2 Hybrid USB tuner", .shortname = "oa2", - .client_modules.lst = pvr2_client_onair, - .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair), + .client_modules.lst = pvr2_client_onair_usb2, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_onair_usb2), .default_tuner_type = TUNER_PHILIPS_ATSC, .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, - }, -#endif }; +#endif + + -const unsigned int pvr2_device_count = ARRAY_SIZE(pvr2_device_descriptions); +/*------------------------------------------------------------------------*/ + +struct usb_device_id pvr2_device_table[] = { + { USB_DEVICE(0x2040, 0x2900), + .driver_info = (kernel_ulong_t)&pvr2_device_29xxx}, + { USB_DEVICE(0x2040, 0x2400), + .driver_info = (kernel_ulong_t)&pvr2_device_24xxx}, + { USB_DEVICE(0x1164, 0x0622), + .driver_info = (kernel_ulong_t)&pvr2_device_gotview_2}, +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_CREATOR + { USB_DEVICE(0x11ba, 0x1003), + .driver_info = (kernel_ulong_t)&pvr2_device_onair_creator}, +#endif +#ifdef CONFIG_VIDEO_PVRUSB2_ONAIR_USB2 + { USB_DEVICE(0x11ba, 0x1001), + .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, +#endif + { } +}; MODULE_DEVICE_TABLE(usb, pvr2_device_table); -- cgit From 11fcd4703004fc8c9030ba45dda8ad74a431d235 Mon Sep 17 00:00:00 2001 From: Michael Krufky Date: Thu, 25 Oct 2007 02:01:10 -0300 Subject: V4L/DVB (6967): pvrusb2: add support for Hauppauge WinTV PVR-USB2 Model 75xxx Create a device description and enable autodetection for Hauppauge WinTV PVR-USB2 Model 75xxx Signed-off-by: Michael Krufky Signed-off-by: Mike Isely Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/pvrusb2/pvrusb2-devattr.c | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c') diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 9a08670d406f..4df6d6d936fc 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -154,6 +154,33 @@ static const struct pvr2_device_desc pvr2_device_onair_usb2 = { +/*------------------------------------------------------------------------*/ +/* Hauppauge PVR-USB2 Model 75xxx */ + +static const char *pvr2_client_75xxx[] = { + "cx25840", + "tuner", +}; + +static const char *pvr2_fw1_names_75xxx[] = { + "v4l-pvrusb2-73xxx-01.fw", +}; + +static const struct pvr2_device_desc pvr2_device_75xxx = { + .description = "WinTV PVR USB2 Model Category 75xxxx", + .shortname = "75xxx", + .client_modules.lst = pvr2_client_75xxx, + .client_modules.cnt = ARRAY_SIZE(pvr2_client_75xxx), + .fx2_firmware.lst = pvr2_fw1_names_75xxx, + .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_75xxx), + .flag_has_cx25840 = !0, + .flag_has_hauppauge_rom = !0, + .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, + .default_std_mask = V4L2_STD_NTSC_M, +}; + + + /*------------------------------------------------------------------------*/ struct usb_device_id pvr2_device_table[] = { @@ -171,6 +198,8 @@ struct usb_device_id pvr2_device_table[] = { { USB_DEVICE(0x11ba, 0x1001), .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, #endif + { USB_DEVICE(0x2040, 0x7500), + .driver_info = (kernel_ulong_t)&pvr2_device_75xxx}, { } }; -- cgit