summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.c155
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.h2
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-hdw.c9
3 files changed, 89 insertions, 77 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
index 2d6519d..9a08670 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 <linux/i2c.h>
#include <media/tuner.h>
-/* 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);
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.h b/drivers/media/video/pvrusb2/pvrusb2-devattr.h
index a9c3d99..64b467f 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-devattr.h
+++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.h
@@ -104,9 +104,7 @@ struct pvr2_device_desc {
char flag_has_hauppauge_custom_ir;
};
-extern const struct pvr2_device_desc pvr2_device_descriptions[];
extern struct usb_device_id pvr2_device_table[];
-extern const unsigned int pvr2_device_count;
#endif /* __PVRUSB2_HDW_INTERNAL_H */
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
index 54d2c4a..41ae980 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c
@@ -1813,7 +1813,6 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
{
unsigned int idx,cnt1,cnt2;
struct pvr2_hdw *hdw;
- unsigned int hdw_type;
int valid_std_mask;
struct pvr2_ctrl *cptr;
const struct pvr2_device_desc *hdw_desc;
@@ -1821,13 +1820,7 @@ struct pvr2_hdw *pvr2_hdw_create(struct usb_interface *intf,
struct v4l2_queryctrl qctrl;
struct pvr2_ctl_info *ciptr;
- hdw_type = devid - pvr2_device_table;
- if (hdw_type >= pvr2_device_count) {
- pvr2_trace(PVR2_TRACE_ERROR_LEGS,
- "Bogus device type of %u reported",hdw_type);
- return NULL;
- }
- hdw_desc = pvr2_device_descriptions + hdw_type;
+ hdw_desc = (const struct pvr2_device_desc *)(devid->driver_info);
hdw = kzalloc(sizeof(*hdw),GFP_KERNEL);
pvr2_trace(PVR2_TRACE_INIT,"pvr2_hdw_create: hdw=%p, type \"%s\"",