gspca sn9c20x subdriver rev3
Subsystems (2)
cover gspca sn9c20x subdriver rev3
Ok this one just has the following minor changes:
* operations set/get_register in the sd descriptor only exist if CONFIG_VIDEO_ADV_DEBUG is defined
* use lowercase letters in hexidecimal notation
* add new supported webcams to linux/Documentation/video4linux/gspca.txt
* check for NULL after kmalloc when creating jpg_hdr
Brian Johnson
PATCH 1/2 gspca: add support for v4l2 debugging ioctls
This patch adds support for dbg_g_chip_ident, dbg_g_register, and dbg_s_register to the gspca core module.
--- drivers/media/video/gspca/gspca.c | 73 +++++++++++++++++++++++++++++++++++++ drivers/media/video/gspca/gspca.h | 9 +++++ 2 files changed, 82 insertions(+), 0 deletions(-)
drivers/media/video/gspca/gspca.c +73 -0
@@ -727,6 +727,74 @@ static int gspca_get_mode(struct gspca_dev *gspca_dev,return -EINVAL ; } +#ifdef CONFIG_VIDEO_ADV_DEBUG +static int vidioc_g_register (struct file *file,void *priv, +struct v4l2_dbg_register *reg) +{ +int ret; +struct gspca_dev *gspca_dev = priv; + +if (!gspca_dev->sd_desc->get_chip_ident) +return -EINVAL ; + +if (!gspca_dev->sd_desc->get_register) +return -EINVAL ; + +if (mutex_lock_interruptible (&gspca_dev->usb_lock)) +return -ERESTARTSYS ; +if (gspca_dev->present) + ret = gspca_dev->sd_desc->get_register (gspca_dev, reg); +else + ret = -ENODEV ; +mutex_unlock (&gspca_dev->usb_lock); + +return ret; +} + +static int vidioc_s_register (struct file *file,void *priv, +struct v4l2_dbg_register *reg) +{ +int ret; +struct gspca_dev *gspca_dev = priv; + +if (!gspca_dev->sd_desc->get_chip_ident) +return -EINVAL ; + +if (!gspca_dev->sd_desc->set_register) +return -EINVAL ; + +if (mutex_lock_interruptible (&gspca_dev->usb_lock)) +return -ERESTARTSYS ; +if (gspca_dev->present) + ret = gspca_dev->sd_desc->set_register (gspca_dev, reg); +else + ret = -ENODEV ; +mutex_unlock (&gspca_dev->usb_lock); + +return ret; +} +#endif + +static int vidioc_g_chip_ident (struct file *file,void *priv, +struct v4l2_dbg_chip_ident *chip) +{ +int ret; +struct gspca_dev *gspca_dev = priv; + +if (!gspca_dev->sd_desc->get_chip_ident) +return -EINVAL ; + +if (mutex_lock_interruptible (&gspca_dev->usb_lock)) +return -ERESTARTSYS ; +if (gspca_dev->present) + ret = gspca_dev->sd_desc->get_chip_ident (gspca_dev, chip); +else + ret = -ENODEV ; +mutex_unlock (&gspca_dev->usb_lock); + +return ret; +} +static int vidioc_enum_fmt_vid_cap (struct file *file,void *priv,struct v4l2_fmtdesc *fmtdesc) {
@@ -1883,6 +1951,11 @@ static const struct v4l2_ioctl_ops dev_ioctl_ops = { .vidioc_s_parm = vidioc_s_parm, .vidioc_s_std = vidioc_s_std, .vidioc_enum_framesizes = vidioc_enum_framesizes, +#ifdef CONFIG_VIDEO_ADV_DEBUG + .vidioc_g_register = vidioc_g_register, + .vidioc_s_register = vidioc_s_register, +#endif + .vidioc_g_chip_ident = vidioc_g_chip_ident, #ifdef CONFIG_VIDEO_V4L1_COMPAT .vidiocgmbuf = vidiocgmbuf, #endif
drivers/media/video/gspca/gspca.h +9 -0
@@ -69,6 +69,10 @@ typedef void (*cam_v_op) (struct gspca_dev *);typedef int (*cam_cf_op ) (struct gspca_dev *,const struct usb_device_id *);typedef int (*cam_jpg_op ) (struct gspca_dev *,struct v4l2_jpegcompression *); +typedef int (*cam_reg_op ) (struct gspca_dev *, +struct v4l2_dbg_register *); +typedef int (*cam_ident_op ) (struct gspca_dev *, +struct v4l2_dbg_chip_ident *);typedef int (*cam_streamparm_op ) (struct gspca_dev *,struct v4l2_streamparm *); typedef int (*cam_qmnu_op) (struct gspca_dev *,
@@ -105,6 +109,11 @@ struct sd_desc {cam_qmnu_op querymenu;cam_streamparm_op get_streamparm;cam_streamparm_op set_streamparm; +#ifdef CONFIG_VIDEO_ADV_DEBUG +cam_reg_op set_register; +cam_reg_op get_register; +#endif +cam_ident_op get_chip_ident; };/* packet types when moving from iso buf to frame buf */
Signature · 1 line
1.5.6.3
PATCH 2/2 gspca: Add sn9c20x subdriver
This adds support for webcams using the sn9c201 and sn9c202 bridges.
--- Documentation/video4linux/gspca.txt | 32 + MAINTAINERS | 8 + drivers/media/video/gspca/Kconfig | 16 + drivers/media/video/gspca/Makefile | 2 + drivers/media/video/gspca/sn9c20x.c | 2433 +++++++++++++++++++++++++++++++++++ include/linux/videodev2.h | 1 + include/media/v4l2-chip-ident.h | 12 + 7 files changed, 2504 insertions(+), 0 deletions(-) create mode 100644 drivers/media/video/gspca/sn9c20x.c
Documentation/video4linux/gspca.txt +32 -0
@@ -44,7 +44,9 @@ zc3xx 0458:7007 Genius VideoCam V2 zc3xx 0458:700c Genius VideoCam V3 zc3xx 0458:700f Genius VideoCam Web V2 sonixj 0458:7025 Genius Eye 311Q +sn9c20x 0458:7029 Genius Look 320s sonixj 0458:702e Genius Slim 310 NB +sn9c20x 045e:00f4 LifeCam VX-6000 (SN9C20x + OV9650) sonixj 045e:00f5 MicroSoft VX3000 sonixj 045e:00f7 MicroSoft VX1000 ov519 045e:028c Micro$oft xbox cam
@@ -282,6 +284,28 @@ sonixj 0c45:613a Microdia Sonix PC Camera sonixj 0c45:613b Surfer SN-206 sonixj 0c45:613c Sonix Pccam168 sonixj 0c45:6143 Sonix Pccam168 +sn9c20x 0c45:6240 PC Camera (SN9C201 + MT9M001) +sn9c20x 0c45:6242 PC Camera (SN9C201 + MT9M111) +sn9c20x 0c45:6248 PC Camera (SN9C201 + OV9655) +sn9c20x 0c45:624e PC Camera (SN9C201 + SOI968) +sn9c20x 0c45:624f PC Camera (SN9C201 + OV9650) +sn9c20x 0c45:6251 PC Camera (SN9C201 + OV9650) +sn9c20x 0c45:6253 PC Camera (SN9C201 + OV9650) +sn9c20x 0c45:6260 PC Camera (SN9C201 + OV7670) +sn9c20x 0c45:6270 PC Camera (SN9C201 + MT9V011/MT9V111/MT9V112) +sn9c20x 0c45:627b PC Camera (SN9C201 + OV7660) +sn9c20x 0c45:627c PC Camera (SN9C201 + HV7131R) +sn9c20x 0c45:627f PC Camera (SN9C201 + OV9650) +sn9c20x 0c45:6280 PC Camera (SN9C202 + MT9M001) +sn9c20x 0c45:6282 PC Camera (SN9C202 + MT9M111) +sn9c20x 0c45:6288 PC Camera (SN9C202 + OV9655) +sn9c20x 0c45:628e PC Camera (SN9C202 + SOI968) +sn9c20x 0c45:628f PC Camera (SN9C202 + OV9650) +sn9c20x 0c45:62a0 PC Camera (SN9C202 + OV7670) +sn9c20x 0c45:62b0 PC Camera (SN9C202 + MT9V011/MT9V111/MT9V112) +sn9c20x 0c45:62b3 PC Camera (SN9C202 + OV9655) +sn9c20x 0c45:62bb PC Camera (SN9C202 + OV7660) +sn9c20x 0c45:62bc PC Camera (SN9C202 + HV7131R) sunplus 0d64:0303 Sunplus FashionCam DXG etoms 102c:6151 Qcam Sangha CIF etoms 102c:6251 Qcam xxxxxx VGA
@@ -290,6 +314,7 @@ spca561 10fd:7e50 FlyCam Usb 100 zc3xx 10fd:8050 Typhoon Webshot II USB 300k ov534 1415:2000 Sony HD Eye for PS3 (SLEH 00201) pac207 145f:013a Trust WB-1300N +sn9c20x 145f:013d Trust WB-3600R vc032x 15b8:6001 HP 2.0 Megapixel vc032x 15b8:6002 HP 2.0 Megapixel rz406aa spca501 1776:501c Arowana 300K CMOS Camera
@@ -300,4 +325,11 @@ spca500 2899:012c Toptro Industrial spca508 8086:0110 Intel Easy PC Camera spca500 8086:0630 Intel Pocket PC Camera spca506 99fa:8988 Grandtec V.cap +sn9c20x a168:0610 Dino-Lite Digital Microscope (SN9C201 + HV7131R) +sn9c20x a168:0611 Dino-Lite Digital Microscope (SN9C201 + HV7131R) +sn9c20x a168:0613 Dino-Lite Digital Microscope (SN9C201 + HV7131R) +sn9c20x a168:0618 Dino-Lite Digital Microscope (SN9C201 + HV7131R) +sn9c20x a168:0614 Dino-Lite Digital Microscope (SN9C201 + MT9M111) +sn9c20x a168:0615 Dino-Lite Digital Microscope (SN9C201 + MT9M111) +sn9c20x a168:0617 Dino-Lite Digital Microscope (SN9C201 + MT9M111) spca561 abcd:cdee Petcam
MAINTAINERS +8 -0
@@ -2599,6 +2599,14 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git S: Maintained F: drivers/media/video/gspca/pac207.c +GSPCA SN9C20X SUBDRIVER +P: Brian Johnson +M: [email protected] +L: [email protected] +T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git +S: Maintained +F: drivers/media/video/gspca/sn9c20x/ + GSPCA T613 SUBDRIVER P: Leandro Costantino M: [email protected]
drivers/media/video/gspca/Kconfig +16 -0
@@ -102,6 +102,22 @@ config USB_GSPCA_PAC7311 To compile this driver as a module, choose M here: the module will be called gspca_pac7311. +config USB_GSPCA_SN9C20X + tristate "SN9C20X USB Camera Driver" + depends on VIDEO_V4L2 && USB_GSPCA + help + Say Y here if you want support for cameras based on the + sn9c20x chips (SN9C201 and SN9C202). + + To compile this driver as a module, choose M here: the + module will be called gspca_sn9c20x. + +config USB_GSPCA_SN9C20X_EVDEV + bool "Enable evdev support" + depends on USB_GSPCA_SN9C20X + ---help--- + Say Y here in order to enable evdev support for sn9c20x webcam button. + config USB_GSPCA_SONIXB tristate "SONIX Bayer USB Camera Driver" depends on VIDEO_V4L2 && USB_GSPCA
drivers/media/video/gspca/Makefile +2 -0
@@ -8,6 +8,7 @@ obj-$(CONFIG_USB_GSPCA_OV519) += gspca_ov519.o obj-$(CONFIG_USB_GSPCA_OV534) += gspca_ov534.o obj-$(CONFIG_USB_GSPCA_PAC207) += gspca_pac207.o obj-$(CONFIG_USB_GSPCA_PAC7311) += gspca_pac7311.o +obj-$(CONFIG_USB_GSPCA_SN9C20X) += gspca_sn9c20x.o obj-$(CONFIG_USB_GSPCA_SONIXB) += gspca_sonixb.o obj-$(CONFIG_USB_GSPCA_SONIXJ) += gspca_sonixj.o obj-$(CONFIG_USB_GSPCA_SPCA500) += gspca_spca500.o
@@ -35,6 +36,7 @@ gspca_ov519-objs := ov519.o gspca_ov534-objs := ov534.o gspca_pac207-objs := pac207.o gspca_pac7311-objs := pac7311.o +gspca_sn9c20x-objs := sn9c20x.o gspca_sonixb-objs := sonixb.o gspca_sonixj-objs := sonixj.o gspca_spca500-objs := spca500.o
drivers/media/video/gspca/sn9c20x.c new file +2433 -0
2,433 lines not on this page · raw message
include/linux/videodev2.h +1 -0
@@ -338,6 +338,7 @@ struct v4l2_pix_format {/* Vendor-specific formats */ #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')/* Winnov hw compress */ #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')/* SN9C10x compression */ +#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0')/* SN9C20x YUV 4:2:0 */ #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')/* pwc older webcam */ #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')/* pwc newer webcam */ #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')/* ET61X251 compression */
include/media/v4l2-chip-ident.h +12 -0
@@ -60,6 +60,10 @@ enum {V4L2_IDENT_OV7670 =250 ,V4L2_IDENT_OV7720 =251 ,V4L2_IDENT_OV7725 =252 , +V4L2_IDENT_OV7660 =253 , +V4L2_IDENT_OV9650 =254 , +V4L2_IDENT_OV9655 =255 , +V4L2_IDENT_SOI968 =256 ,/* module saa7146: reserved range 300-309 */ V4L2_IDENT_SAA7146 = 300,
@@ -161,6 +165,9 @@ enum {/* module tw9910: just ident 9910 */ V4L2_IDENT_TW9910 =9910 , +/* module sn9c20x: just ident 10000 */ +V4L2_IDENT_SN9C20X =10000 , +/* module msp3400: reserved range 34000-34999 and 44000-44999 */ V4L2_IDENT_MSPX4XX = 34000, /* generic MSPX4XX identifier, onlyuse internally (tveeprom.c). */
@@ -237,6 +244,11 @@ enum {V4L2_IDENT_MT9V022IX7ATC =45010 ,/* No way to detect "normal" I77ATx */ V4L2_IDENT_MT9V022IX7ATM =45015 ,/* and "lead free" IA7ATx chips */ V4L2_IDENT_MT9T031 =45020 , +V4L2_IDENT_MT9V111 =45031 , +V4L2_IDENT_MT9V112 =45032 , + +/* HV7131R CMOS sensor: just ident 46000 */ +V4L2_IDENT_HV7131R =46000 ,/* module cs53132a: just ident 53132 */ V4L2_IDENT_CS53l32A = 53132,
Signature · 1 line
1.5.6.3
Quoted 8 lines · On Sun, 19 Jul 2009 00:10:50 -0400 Brian Johnson <[email protected]> wrote:
Ok this one just has the following minor changes:
* operations set/get_register in the sd descriptor only exist if
CONFIG_VIDEO_ADV_DEBUGis defined
* use lowercase letters in hexidecimal notation
* add new supported webcams tolinux/Documentation/video4linux/gspca.txt
* check for NULL after kmalloc when creatingjpg_hdr
Hello, Brian and Mauro,
I got the patches and sent a pull request. The changesets have a high priority.
I just fixed a compilation warning issued when USB_GSPCA_SN9C20X_EVDEV was not set.
Mauro, I could not update the maintainers list. Do you want Brian sends a new patch for that?
Cheers.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Em Sun, 19 Jul 2009 11:11:45 +0200
Jean-Francois Moine <[email protected]> escreveu:
Quoted 14 lines
Quoted 8 lines · On Sun, 19 Jul 2009 00:10:50 -0400 Brian Johnson <[email protected]> wrote:
Ok this one just has the following minor changes:
* operations set/get_register in the sd descriptor only exist if
CONFIG_VIDEO_ADV_DEBUGis defined
* use lowercase letters in hexidecimal notation
* add new supported webcams tolinux/Documentation/video4linux/gspca.txt
* check for NULL after kmalloc when creatingjpg_hdrHello, Brian and Mauro,
Quoted 8 lines
I got the patches and sent a pull request. The changesets have a high priority.
I just fixed a compilation warning issued when
USB_GSPCA_SN9C20X_EVDEVwas not set.Mauro, I could not update the maintainers list. Do you want Brian sends a new patch for that?
Yes. Please send your acked-by: after his patch
Cheers,
Mauro