usbvision: add Nogatech USB MicroCam
PATCH 1/4 usbvision: add Nogatech USB MicroCam
Add Nogatech USB MicroCam PAL (NV3001P) and NTSC (NV3000N) support to usbvision driver.
PAL version is tested, NTSC untested.
Data captured using usbsnoop, init_values are listed in the INF file along with image dimensions, offsets and frame rates.
Signed-off-by Ondrej Zary <[email protected]>
drivers/media/video/usbvision/usbvision-cards.c +31 -2
@@ -1025,6 +1025,34 @@ struct usbvision_device_data_st usbvisi .y_offset = -1, .model_string = "Hauppauge WinTv-USB", }, + [MICROCAM_NTSC] = { + .interface = -1, + .codec = CODEC_WEBCAM, + .video_channels = 1, + .video_norm = V4L2_STD_NTSC, + .audio_channels = 0, + .radio = 0, + .vbi = 0, + .tuner = 0, + .tuner_type = 0, + .x_offset = 71, + .y_offset = 15, + .model_string = "Nogatech USB MicroCam NTSC (NV3000N)", + }, + [MICROCAM_PAL] = { + .interface = -1, + .codec = CODEC_WEBCAM, + .video_channels = 1, + .video_norm = V4L2_STD_PAL, + .audio_channels = 0, + .radio = 0, + .vbi = 0, + .tuner = 0, + .tuner_type = 0, + .x_offset = 71, + .y_offset = 18, + .model_string = "Nogatech USB MicroCam PAL (NV3001P)", + }, };const int usbvision_device_data_size =ARRAY_SIZE (usbvision_device_data);
@@ -1042,6 +1070,8 @@ struct usb_device_id usbvision_table[] = { USB_DEVICE(0x0573, 0x2d00), .driver_info = HPG_WINTV_LIVE_PAL_BG }, { USB_DEVICE(0x0573, 0x2d01), .driver_info = HPG_WINTV_LIVE_PRO_NTSC_MN }, { USB_DEVICE(0x0573, 0x2101), .driver_info = ZORAN_PMD_NOGATECH }, + { USB_DEVICE(0x0573, 0x3000), .driver_info = MICROCAM_NTSC }, + { USB_DEVICE(0x0573, 0x3001), .driver_info = MICROCAM_PAL }, { USB_DEVICE(0x0573, 0x4100), .driver_info = NOGATECH_USB_TV_NTSC_FM }, { USB_DEVICE(0x0573, 0x4110), .driver_info = PNY_USB_TV_NTSC_FM }, { USB_DEVICE(0x0573, 0x4450), .driver_info = PV_PLAYTV_USB_PRO_PAL_FM },
@@ -1088,8 +1118,7 @@ struct usb_device_id usbvision_table[] = { USB_DEVICE(0x2304, 0x0110), .driver_info = PINNA_PCTV_USB_PAL_FM }, { USB_DEVICE(0x2304, 0x0111), .driver_info = MIRO_PCTV_USB }, { USB_DEVICE(0x2304, 0x0112), .driver_info = PINNA_PCTV_USB_NTSC_FM }, - { USB_DEVICE(0x2304, 0x0113), - .driver_info = PINNA_PCTV_USB_NTSC_FM_V3 }, + { USB_DEVICE(0x2304, 0x0113), .driver_info = PINNA_PCTV_USB_NTSC_FM_V3 }, { USB_DEVICE(0x2304, 0x0210), .driver_info = PINNA_PCTV_USB_PAL_FM_V2 }, { USB_DEVICE(0x2304, 0x0212), .driver_info = PINNA_PCTV_USB_NTSC_FM_V2 }, { USB_DEVICE(0x2304, 0x0214), .driver_info = PINNA_PCTV_USB_PAL_FM_V3 },
drivers/media/video/usbvision/usbvision-cards.h +2 -0
@@ -63,5 +63,7 @@#define PINNA_PCTV_BUNGEE_PAL_FM 62#define HPG_WINTV 63#define PINNA_PCTV_USB_NTSC_FM_V3 64 +#define MICROCAM_NTSC 65 +#define MICROCAM_PAL 66extern const int usbvision_device_data_size;
drivers/media/video/usbvision/usbvision-core.c +72 -1
111 lines not on this page · raw message
drivers/media/video/usbvision/usbvision.h +6 -0
@@ -59,6 +59,11 @@#define USBVISION_AUDIO_RADIO 2#define USBVISION_AUDIO_MUTE 3#define USBVISION_SER_MODE 0x07 +#define USBVISION_CLK_OUT (1 << 0) +#define USBVISION_DAT_IO (1 << 1) +#define USBVISION_SENS_OUT (1 << 2) +#define USBVISION_SER_MODE_SOFT (0 << 4) +#define USBVISION_SER_MODE_SIO (1 << 4)#define USBVISION_SER_ADRS 0x08#define USBVISION_SER_CONT 0x09#define USBVISION_SER_DAT1 0x0A
@@ -328,6 +333,7 @@ struct usbvision_frame {#define CODEC_SAA7113 7113#define CODEC_SAA7111 7111 +#define CODEC_WEBCAM 3000#define BRIDGE_NT1003 1003#define BRIDGE_NT1004 1004#define BRIDGE_NT1005 1005
drivers/media/video/usbvision/usbvision-i2c.c +1 -1
@@ -222,7 +222,7 @@ int usbvision_i2c_register(struct usb_usi2c_set_adapdata (&usbvision->i2c_adap, &usbvision->v4l2_dev);if (usbvision_write_reg (usbvision,USBVISION_SER_MODE ,USBVISION_IIC_LRNACK ) <0 ) { -printk (KERN_ERR "usbvision_register: can't write reg\n" ); +printk (KERN_ERR "usbvision_i2c_register: can't write reg\n" );return -EBUSY ; }
drivers/media/video/usbvision/usbvision-video.c +2 -1
@@ -1470,7 +1470,8 @@ static void usbvision_configure_video(st/* This should be here to make i2c clients to be able to register */ /* first switch off audio */ -usbvision_audio_off (usbvision); +if (usbvision_device_data[model].audio_channels >0 ) +usbvision_audio_off (usbvision);if (!power_on_at_open) {/* and then power up the noisy tuner */ usbvision_power_on (usbvision);
Signature · 1 line
Ondrej Zary