This patch makes usbvideo_register take a usb_device_id argument which it can then pass to usb_register via the struct usb_device. Currently it passes NULL.
cheers si drivers/usb/media/ibmcam.c | 23 +++++++++++++---------- drivers/usb/media/konicawc.c | 3 ++- drivers/usb/media/ultracam.c | 18 ++++++++---------- drivers/usb/media/usbvideo.c | 4 +++- drivers/usb/media/usbvideo.h | 3 ++- 5 files changed, 28 insertions(+), 23 deletions(-) diff -urN -X /home/spse/dontdiff linux-2.5.12-clean/drivers/usb/media/ibmcam.c linux-2.5.12/drivers/usb/media/ibmcam.c --- linux-2.5.12-clean/drivers/usb/media/ibmcam.c Wed May 1 01:08:50 2002 +++ linux-2.5.12/drivers/usb/media/ibmcam.c Wed May 1 21:58:51 2002 @@ -3899,6 +3899,17 @@ return uvd; } + +static struct usb_device_id id_table[] = { + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x0002, 0x0002) }, + /* Model 1 */ + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x030a, 0x030a) }, + /* Model 2 */ + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x0301, 0x0301) }, + /* Model 3 */ + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, NETCAM_PRODUCT_ID, 0x030a, 0x030a) }, + /* Model 4 */ + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, VEO_800C_PRODUCT_ID, 0x030a, 0x030a) }, + /* Model 2 */ + { USB_DEVICE_VER(IBMCAM_VENDOR_ID, VEO_800D_PRODUCT_ID, 0x030a, 0x030a) }, + /* Model 4 */ + { } /* Terminating entry */ +}; + /* * ibmcam_init() * @@ -3926,7 +3937,8 @@ sizeof(ibmcam_t), "ibmcam", &cbTbl, - THIS_MODULE); + THIS_MODULE, + id_table); } static void __exit ibmcam_cleanup(void) @@ -3934,15 +3946,6 @@ usbvideo_Deregister(&cams); } -static __devinitdata struct usb_device_id id_table[] = { - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x0002, 0x0002) }, /* Model 1 */ - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x030a, 0x030a) }, /* Model 2 */ - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, IBMCAM_PRODUCT_ID, 0x0301, 0x0301) }, /* Model 3 */ - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, NETCAM_PRODUCT_ID, 0x030a, 0x030a) }, /* Model 4 */ - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, VEO_800C_PRODUCT_ID, 0x030a, 0x030a) }, /* Model 2 */ - { USB_DEVICE_VER(IBMCAM_VENDOR_ID, VEO_800D_PRODUCT_ID, 0x030a, 0x030a) }, /* Model 4 */ - { } /* Terminating entry */ -}; MODULE_DEVICE_TABLE(usb, id_table); module_init(ibmcam_init); diff -urN -X /home/spse/dontdiff linux-2.5.12-clean/drivers/usb/media/konicawc.c linux-2.5.12/drivers/usb/media/konicawc.c --- linux-2.5.12-clean/drivers/usb/media/konicawc.c Wed May 1 01:08:44 2002 +++ linux-2.5.12/drivers/usb/media/konicawc.c Wed May 1 21:59:52 2002 @@ -767,5 +866,6 @@ sizeof(struct konicawc), "konicawc", &cbTbl, - THIS_MODULE); + THIS_MODULE, + id_table); } diff -urN -X /home/spse/dontdiff linux-2.5.12-clean/drivers/usb/media/ultracam.c linux-2.5.12/drivers/usb/media/ultracam.c --- linux-2.5.12-clean/drivers/usb/media/ultracam.c Wed May 1 01:08:48 2002 +++ linux-2.5.12/drivers/usb/media/ultracam.c Wed May 1 21:58:51 2002 @@ -659,6 +659,12 @@ return uvd; } + +static struct usb_device_id id_table[] = { + { USB_DEVICE(ULTRACAM_VENDOR_ID, ULTRACAM_PRODUCT_ID) }, + { } /* Terminating entry */ +}; + /* * ultracam_init() * @@ -682,7 +688,8 @@ sizeof(ultracam_t), "ultracam", &cbTbl, - THIS_MODULE); + THIS_MODULE, + id_table); } static void __exit ultracam_cleanup(void) @@ -690,16 +697,7 @@ usbvideo_Deregister(&cams); } -#if defined(usb_device_id_ver) - -static __devinitdata struct usb_device_id id_table[] = { - { USB_DEVICE(ULTRACAM_VENDOR_ID, ULTRACAM_PRODUCT_ID) }, - { } /* Terminating entry */ -}; MODULE_DEVICE_TABLE(usb, id_table); - - -#endif /* defined(usb_device_id_ver) */ MODULE_LICENSE("GPL"); module_init(ultracam_init); diff -urN -X /home/spse/dontdiff linux-2.5.12-clean/drivers/usb/media/usbvideo.c linux-2.5.12/drivers/usb/media/usbvideo.c --- linux-2.5.12-clean/drivers/usb/media/usbvideo.c Wed May 1 01:08:58 2002 +++ linux-2.5.12/drivers/usb/media/usbvideo.c Wed May 1 21:59:52 2002 @@ -749,7 +767,8 @@ const int num_extra, const char *driverName, const usbvideo_cb_t *cbTbl, - struct module *md ) + struct module *md, + struct usb_device_id id_table[]) { static const char proc[] = "usbvideo_register"; usbvideo_t *cams; @@ -839,6 +858,7 @@ cams->usbdrv.name = cams->drvName; cams->usbdrv.probe = cams->cb.probe; cams->usbdrv.disconnect = cams->cb.disconnect; + cams->usbdrv.id_table = id_table; #if USES_PROC_FS if (cams->uses_procfs) { diff -urN -X /home/spse/dontdiff linux-2.5.12-clean/drivers/usb/media/usbvideo.h linux-2.5.12/drivers/usb/media/usbvideo.h --- linux-2.5.12-clean/drivers/usb/media/usbvideo.h Wed May 1 02:54:52 2002 +++ linux-2.5.12/drivers/usb/media/usbvideo.h Wed May 1 21:59:52 2002 @@ -327,7 +330,8 @@ const int num_extra, const char *driverName, const usbvideo_cb_t *cbTable, - struct module *md); + struct module *md, + struct usb_device_id id_table[]); uvd_t *usbvideo_AllocateDevice(usbvideo_t *cams); int usbvideo_RegisterVideoDevice(uvd_t *uvd); void usbvideo_Deregister(usbvideo_t **uvt); _______________________________________________________________ Have big pipes? SourceForge.net is looking for download mirrors. We supply the hardware. You get the recognition. Email Us: [EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel