|
@@ -151,7 +151,6 @@ static int PowerOnAtOpen = 1; // Set the default device to power on at startu
|
|
static int video_nr = -1; // Sequential Number of Video Device
|
|
static int video_nr = -1; // Sequential Number of Video Device
|
|
static int radio_nr = -1; // Sequential Number of Radio Device
|
|
static int radio_nr = -1; // Sequential Number of Radio Device
|
|
static int vbi_nr = -1; // Sequential Number of VBI Device
|
|
static int vbi_nr = -1; // Sequential Number of VBI Device
|
|
-static char *CustomDevice=NULL; // Set as nothing....
|
|
|
|
|
|
|
|
// Grab parameters for the device driver
|
|
// Grab parameters for the device driver
|
|
|
|
|
|
@@ -162,7 +161,6 @@ module_param(PowerOnAtOpen, int, 0444);
|
|
module_param(video_nr, int, 0444);
|
|
module_param(video_nr, int, 0444);
|
|
module_param(radio_nr, int, 0444);
|
|
module_param(radio_nr, int, 0444);
|
|
module_param(vbi_nr, int, 0444);
|
|
module_param(vbi_nr, int, 0444);
|
|
-module_param(CustomDevice, charp, 0444);
|
|
|
|
#else // Old Style
|
|
#else // Old Style
|
|
MODULE_PARAM(isocMode, "i");
|
|
MODULE_PARAM(isocMode, "i");
|
|
MODULE_PARM(video_debug, "i"); // Grab the Debug Mode of the device driver
|
|
MODULE_PARM(video_debug, "i"); // Grab the Debug Mode of the device driver
|
|
@@ -172,7 +170,6 @@ MODULE_PARM(SwitchSVideoInput, "i"); // To help people with Black and White ou
|
|
MODULE_PARM(video_nr, "i"); // video_nr option allows to specify a certain /dev/videoX device (like /dev/video0 or /dev/video1 ...)
|
|
MODULE_PARM(video_nr, "i"); // video_nr option allows to specify a certain /dev/videoX device (like /dev/video0 or /dev/video1 ...)
|
|
MODULE_PARM(radio_nr, "i"); // radio_nr option allows to specify a certain /dev/radioX device (like /dev/radio0 or /dev/radio1 ...)
|
|
MODULE_PARM(radio_nr, "i"); // radio_nr option allows to specify a certain /dev/radioX device (like /dev/radio0 or /dev/radio1 ...)
|
|
MODULE_PARM(vbi_nr, "i"); // vbi_nr option allows to specify a certain /dev/vbiX device (like /dev/vbi0 or /dev/vbi1 ...)
|
|
MODULE_PARM(vbi_nr, "i"); // vbi_nr option allows to specify a certain /dev/vbiX device (like /dev/vbi0 or /dev/vbi1 ...)
|
|
-MODULE_PARM(CustomDevice, "s"); // .... CustomDevice
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
MODULE_PARM_DESC(isocMode, " Set the default format for ISOC endpoint. Default: 0x60 (Compression On)");
|
|
MODULE_PARM_DESC(isocMode, " Set the default format for ISOC endpoint. Default: 0x60 (Compression On)");
|
|
@@ -181,7 +178,6 @@ MODULE_PARM_DESC(PowerOnAtOpen, " Set the default device to power on when device
|
|
MODULE_PARM_DESC(video_nr, "Set video device number (/dev/videoX). Default: -1 (autodetect)");
|
|
MODULE_PARM_DESC(video_nr, "Set video device number (/dev/videoX). Default: -1 (autodetect)");
|
|
MODULE_PARM_DESC(radio_nr, "Set radio device number (/dev/radioX). Default: -1 (autodetect)");
|
|
MODULE_PARM_DESC(radio_nr, "Set radio device number (/dev/radioX). Default: -1 (autodetect)");
|
|
MODULE_PARM_DESC(vbi_nr, "Set vbi device number (/dev/vbiX). Default: -1 (autodetect)");
|
|
MODULE_PARM_DESC(vbi_nr, "Set vbi device number (/dev/vbiX). Default: -1 (autodetect)");
|
|
-MODULE_PARM_DESC(CustomDevice, " Define the fine tuning parameters for the device. Default: null");
|
|
|
|
|
|
|
|
|
|
|
|
// Misc stuff
|
|
// Misc stuff
|
|
@@ -1943,143 +1939,6 @@ static struct usb_driver usbvision_driver = {
|
|
.disconnect = usbvision_disconnect
|
|
.disconnect = usbvision_disconnect
|
|
};
|
|
};
|
|
|
|
|
|
-/*
|
|
|
|
- * customdevice_process()
|
|
|
|
- *
|
|
|
|
- * This procedure preprocesses CustomDevice parameter if any
|
|
|
|
- *
|
|
|
|
- */
|
|
|
|
-static void customdevice_process(void)
|
|
|
|
-{
|
|
|
|
- unsigned int id_vend,id_prod,radio,tuner;
|
|
|
|
-
|
|
|
|
- usbvision_device_data[0]=usbvision_device_data[1];
|
|
|
|
- usbvision_table[0]=usbvision_table[1];
|
|
|
|
-
|
|
|
|
- if(CustomDevice)
|
|
|
|
- {
|
|
|
|
- char *parse=CustomDevice;
|
|
|
|
- int tmp;
|
|
|
|
-
|
|
|
|
- PDEBUG(DBG_PROBE, "CustomDevice=%s", CustomDevice);
|
|
|
|
-
|
|
|
|
- /*format is CustomDevice="0x0573 0x4D31 0 7113 3 PAL 1 1 1 5 -1 -1 -1 -1 -1"
|
|
|
|
- usbvision_device_data[0].idVendor;
|
|
|
|
- usbvision_device_data[0].idProduct;
|
|
|
|
- usbvision_device_data[0].Interface;
|
|
|
|
- usbvision_device_data[0].Codec;
|
|
|
|
- usbvision_device_data[0].VideoChannels;
|
|
|
|
- usbvision_device_data[0].VideoNorm;
|
|
|
|
- usbvision_device_data[0].AudioChannels;
|
|
|
|
- usbvision_device_data[0].Radio;
|
|
|
|
- usbvision_device_data[0].Tuner;
|
|
|
|
- usbvision_device_data[0].TunerType;
|
|
|
|
- usbvision_device_data[0].Vin_Reg1;
|
|
|
|
- usbvision_device_data[0].Vin_Reg2;
|
|
|
|
- usbvision_device_data[0].X_Offset;
|
|
|
|
- usbvision_device_data[0].Y_Offset;
|
|
|
|
- usbvision_device_data[0].Dvi_yuv;
|
|
|
|
- usbvision_device_data[0].ModelString;
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
- rmspace(parse);
|
|
|
|
- usbvision_device_data[0].ModelString="USBVISION Custom Device";
|
|
|
|
-
|
|
|
|
- parse+=2;
|
|
|
|
- sscanf(parse,"%u",&id_vend);
|
|
|
|
- usbvision_table[0].idVendor=id_vend;
|
|
|
|
-
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "idVendor=0x%.4X", usbvision_table[0].idVendor);
|
|
|
|
- parse+=2;
|
|
|
|
- sscanf(parse,"%u",&id_prod);
|
|
|
|
- usbvision_table[0].idProduct=id_prod;
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "idProduct=0x%.4X", usbvision_table[0].idProduct);
|
|
|
|
- sscanf(parse,"%d",&usbvision_device_data[0].Interface);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Interface=%d", usbvision_device_data[0].Interface);
|
|
|
|
- sscanf(parse,"%hd",&usbvision_device_data[0].Codec);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Codec=%d", usbvision_device_data[0].Codec);
|
|
|
|
- sscanf(parse,"%d",&tmp);
|
|
|
|
- usbvision_device_data[0].VideoChannels = tmp;
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "VideoChannels=%d", usbvision_device_data[0].VideoChannels);
|
|
|
|
-
|
|
|
|
- switch(*parse)
|
|
|
|
- {
|
|
|
|
- case 'P':
|
|
|
|
- PDEBUG(DBG_PROBE, "VideoNorm=PAL");
|
|
|
|
- usbvision_device_data[0].VideoNorm=V4L2_STD_PAL;
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'S':
|
|
|
|
- PDEBUG(DBG_PROBE, "VideoNorm=SECAM");
|
|
|
|
- usbvision_device_data[0].VideoNorm=V4L2_STD_SECAM;
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case 'N':
|
|
|
|
- PDEBUG(DBG_PROBE, "VideoNorm=NTSC");
|
|
|
|
- usbvision_device_data[0].VideoNorm=V4L2_STD_NTSC;
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- default:
|
|
|
|
- PDEBUG(DBG_PROBE, "VideoNorm=PAL (by default)");
|
|
|
|
- usbvision_device_data[0].VideoNorm=V4L2_STD_PAL;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- goto2next(parse);
|
|
|
|
-
|
|
|
|
- sscanf(parse,"%d",&tmp);
|
|
|
|
- usbvision_device_data[0].AudioChannels = tmp;
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "AudioChannels=%d", usbvision_device_data[0].AudioChannels);
|
|
|
|
- sscanf(parse,"%d",&radio);
|
|
|
|
- usbvision_device_data[0].Radio=(radio?1:0);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Radio=%d", usbvision_device_data[0].Radio);
|
|
|
|
- sscanf(parse,"%d",&tuner);
|
|
|
|
- usbvision_device_data[0].Tuner=(tuner?1:0);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Tuner=%d", usbvision_device_data[0].Tuner);
|
|
|
|
- sscanf(parse,"%hhu",&usbvision_device_data[0].TunerType);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "TunerType=%d", usbvision_device_data[0].TunerType);
|
|
|
|
- sscanf(parse,"%d",&tmp);
|
|
|
|
- if(tmp>0) {
|
|
|
|
- usbvision_device_data[0].Vin_Reg1_override = 1;
|
|
|
|
- usbvision_device_data[0].Vin_Reg1 = tmp&0xff;
|
|
|
|
- }
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Vin_Reg1=%d", usbvision_device_data[0].Vin_Reg1);
|
|
|
|
- sscanf(parse,"%d",&tmp);
|
|
|
|
- if(tmp>0) {
|
|
|
|
- usbvision_device_data[0].Vin_Reg2_override = 1;
|
|
|
|
- usbvision_device_data[0].Vin_Reg2 = tmp&0xff;
|
|
|
|
- }
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Vin_Reg2=%d", usbvision_device_data[0].Vin_Reg2);
|
|
|
|
- sscanf(parse,"%hd",&usbvision_device_data[0].X_Offset);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "X_Offset=%d", usbvision_device_data[0].X_Offset);
|
|
|
|
- sscanf(parse,"%hd",&usbvision_device_data[0].Y_Offset);
|
|
|
|
- goto2next(parse);
|
|
|
|
- PDEBUG(DBG_PROBE, "Y_Offset=%d", usbvision_device_data[0].Y_Offset);
|
|
|
|
- sscanf(parse,"%d",&tmp);
|
|
|
|
- if(tmp>0) {
|
|
|
|
- usbvision_device_data[0].Dvi_yuv_override = 1;
|
|
|
|
- usbvision_device_data[0].Dvi_yuv = tmp&0xff;
|
|
|
|
- }
|
|
|
|
- PDEBUG(DBG_PROBE, "Dvi_yuv=%d", usbvision_device_data[0].Dvi_yuv);
|
|
|
|
-
|
|
|
|
- //add to usbvision_table also
|
|
|
|
- usbvision_table[0].match_flags=USB_DEVICE_ID_MATCH_DEVICE;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* usbvision_init()
|
|
* usbvision_init()
|
|
*
|
|
*
|
|
@@ -2104,8 +1963,6 @@ static int __init usbvision_init(void)
|
|
usbvision_v4l2_format[7].supported = 0; // V4L2_PIX_FMT_YUV422P
|
|
usbvision_v4l2_format[7].supported = 0; // V4L2_PIX_FMT_YUV422P
|
|
}
|
|
}
|
|
|
|
|
|
- customdevice_process();
|
|
|
|
-
|
|
|
|
errCode = usb_register(&usbvision_driver);
|
|
errCode = usb_register(&usbvision_driver);
|
|
|
|
|
|
if (errCode == 0) {
|
|
if (errCode == 0) {
|