diff options
author | Luca Risolia <luca.risolia@studio.unibo.it> | 2004-11-11 03:03:53 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <greg@kroah.com> | 2004-11-11 03:03:53 -0800 |
commit | f1d390a2c2c38f030e47fc6035dece6dc3428818 (patch) | |
tree | 28b4b8a9584b4dc33c9ef805667af8cf0b95fdf3 /Documentation | |
parent | 5748930a020b3aea01961e5e410c0f6651aa1d14 (diff) | |
download | history-f1d390a2c2c38f030e47fc6035dece6dc3428818.tar.gz |
[PATCH] USB: SN9C10x driver updates
SN9C10x driver updates.
The most important change is the addition of the "SN9C10x" vendor-specific
pixel format, which is used by the applications or libraries to get "raw"
compressed data from the SN9C10x controllers. This also means that V4L2 should
be smart enough for the decompression to be handled in userland. You can
consider this patch as a further response to the discussion we had on the lkml
about the submission of the PWC driver including decompression in kernelspace,
which is present in the Alan Cox's tree.
Changes: (+ new, - removed, * cleanup, @ bugfix)
@ Fix VIDIOC_TRY_FMT ioctl
@ Fix SOF/EOF problems with TAS5130D1B image sensor
@ Fix VIDIOC_ENUM_FMT ioctl
* Replace wait_event_interruptible() with wait_event_timeout()
* Use msecs_to_jiffies() for timeouts in jiffies
* Use usb_make_path() on VIDIOC_QUERYCAP for device path in the usb tree
* read() returns buf.bytesused instead of buf.length on success
- Remove brightness control from PAS106B and PAS202BCB, since it has no effect
on the active pixel area (it's just for window border lines)
+ Implement VIDIOC_G_PARM and VIDIOC_S_PARM ioctl's
+ Add DAC magnitude, DAC sign, green balance and exposure controls for PAS106B
and PAS202BCB image sensors
+ Add an additional pixel format for compressed video: V4L2_PIX_FMT_SN9C10X
+ VIDIOC_S_JPEGCOMP and VIDIOC_G_JPEGCOMP are used to set or get the current
compression quality
+ New documentation note in "Notes for V4L2 application developers" paragraph
about video formats and compressed data.
+ Documentation updates about the new features
Signed-off-by: Luca Risolia <luca.risolia@studio.unibo.it>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/usb/sn9c102.txt | 122 |
1 files changed, 80 insertions, 42 deletions
diff --git a/Documentation/usb/sn9c102.txt b/Documentation/usb/sn9c102.txt index 40c2f73a707fd6..18ceabdb36e41a 100644 --- a/Documentation/usb/sn9c102.txt +++ b/Documentation/usb/sn9c102.txt @@ -9,28 +9,32 @@ Index ===== 1. Copyright -2. License -3. Overview -4. Module dependencies -5. Module loading -6. Module parameters -7. Optional device control through "sysfs" -8. Supported devices -9. How to add support for new image sensors -10. Notes for V4L2 application developers -11. Contact information -12. Credits +2. Disclaimer +3. License +4. Overview +5. Driver installation +6. Module loading +7. Module parameters +8. Optional device control through "sysfs" +9. Supported devices +10. How to add support for new image sensors +11. Notes for V4L2 application developers +12. Contact information +13. Credits 1. Copyright ============ Copyright (C) 2004 by Luca Risolia <luca.risolia@studio.unibo.it> + +2. Disclaimer +============= SONiX is a trademark of SONiX Technology Company Limited, inc. -This driver is not sponsored or developed by SONiX. +This software is not sponsored or developed by SONiX. -2. License +3. License ========== This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -47,29 +51,52 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -3. Overview +4. Overview =========== This driver attempts to support the video and audio streaming capabilities of the devices mounting the SONiX SN9C101, SN9C102 and SN9C103 (or SUI-102) PC Camera Controllers. -- It's worth to note that SONiX has never collaborated with me during the +It's worth to note that SONiX has never collaborated with the author during the development of this project, despite several requests for enough detailed specifications of the register tables, compression engine and video data format -of the above chips - - -Up to 64 cameras can be handled at the same time. They can be connected and -disconnected from the host many times without turning off the computer, if -your system supports hotplugging. +of the above chips. The driver relies on the Video4Linux2 and USB core modules. It has been designed to run properly on SMP systems as well. The latest version of the SN9C10x driver can be found at the following URL: -http://go.lamarinapunto.com/ - - -4. Module dependencies +http://www.linux-projects.org/ + +Some of the features of the driver are: + +- full compliance with the Video4Linux2 API (see also "Notes for V4L2 + application developers" paragraph); +- available mmap or read/poll methods for video streaming through isochronous + data transfers; +- automatic detection of image sensor; +- support for any window resolutions and optional panning within the maximum + pixel area of image sensor; +- image downscaling with arbitrary scaling factors from 1, 2 and 4 in both + directions (see "Notes for V4L2 application developers" paragraph); +- two different video formats for uncompressed or compressed data (see also + "Notes for V4L2 application developers" paragraph); +- full support for the capabilities of many of the possible image sensors that + can be connected to the SN9C10x bridges, including, for istance, red, green, + blue and global gain adjustments and exposure (see "Supported devices" + paragraph for details); +- use of default color settings for sunlight conditions; +- dynamic I/O interface for both SN9C10x and image sensor control (see + "Optional device control through 'sysfs'" paragraph); +- dynamic driver control thanks to various module parameters (see "Module + parameters" paragraph); +- up to 64 cameras can be handled at the same time; they can be connected and + disconnected from the host many times without turning off the computer, if + your system supports hotplugging; +- no known bugs. + + +5. Module dependencies ====================== For it to work properly, the driver needs kernel support for Video4Linux and USB. @@ -101,7 +128,7 @@ And finally: CONFIG_USB_SN9C102=m -5. Module loading +6. Module loading ================= To use the driver, it is necessary to load the "sn9c102" module into memory after every other module required: "videodev", "usbcore" and, depending on @@ -109,7 +136,6 @@ the USB host controller you have, "ehci-hcd", "uhci-hcd" or "ohci-hcd". Loading can be done as shown below: - [root@localhost home]# modprobe usbcore [root@localhost home]# modprobe sn9c102 At this point the devices should be recognized. You can invoke "dmesg" to @@ -118,7 +144,7 @@ analyze kernel messages and verify that the loading process has gone well: [user@localhost home]$ dmesg -6. Module parameters +7. Module parameters ==================== Module parameters are listed below: ------------------------------------------------------------------------------- @@ -144,12 +170,14 @@ Description: Debugging information level, from 0 to 3: 2 = significant informations 3 = more verbose messages Level 3 is useful for testing only, when only one device - is used. + is used. It also shows some more informations about the + hardware being detected. This parameter can be changed at + runtime thanks to the /sys filesystem. Default: 2 ------------------------------------------------------------------------------- -7. Optional device control through "sysfs" +8. Optional device control through "sysfs" ========================================== It is possible to read and write both the SN9C10x and the image sensor registers by using the "sysfs" filesystem interface. @@ -191,10 +219,10 @@ Note that the SN9C10x always returns 0 when some of its registers are read. To avoid race conditions, all the I/O accesses to the files are serialized. -8. Supported devices +9. Supported devices ==================== -- I won't mention any of the names of the companies as well as their products -here. They have never collaborated with me, so no advertising - +None of the names of the companies as well as their products will be mentioned +here. They have never collaborated with the author, so no advertising. From the point of view of a driver, what unambiguously identify a device are its vendor and product USB identifiers. Below is a list of known identifiers of @@ -241,7 +269,7 @@ Vendor ID Product ID 0x0c45 0x60bc 0x0c45 0x60be -The list above does NOT imply that all those devices work with this driver: up +The list above does not imply that all those devices work with this driver: up until now only the ones that mount the following image sensors are supported; kernel messages will always tell you whether this is the case: @@ -259,16 +287,16 @@ If you think your camera is based on the above hardware and is not actually listed in the above table, you may try to add the specific USB VendorID and ProductID identifiers to the sn9c102_id_table[] in the file "sn9c102_sensor.h"; then compile, load the module again and look at the kernel output. -If this works, please send an email to me reporting the kernel messages, so -that I can add a new entry in the list of supported devices. +If this works, please send an email to the author reporting the kernel +messages, so that a new entry in the list of supported devices can be added. Donations of new models for further testing and support would be much -appreciated. I won't add official support for hardware that I don't actually -have. +appreciated. Non-available hardware won't be supported by the author of this +driver. -9. How to add support for new image sensors -=========================================== +10. How to add support for new image sensors +============================================ It should be easy to write code for new sensors by using the small API that I have created for this purpose, which is present in "sn9c102_sensor.h" (documentation is included there). As an example, have a look at the code in @@ -278,7 +306,7 @@ At the moment, possible unsupported image sensors are: HV7131x series (VGA), MI03x series (VGA), OV7620 (VGA), OV7630 (VGA), CIS-VF10 (VGA). -10. Notes for V4L2 application developers +11. Notes for V4L2 application developers ========================================= This driver follows the V4L2 API specifications. In particular, it enforces two rules: @@ -301,8 +329,18 @@ factor can be chosen arbitrarily by the "negotiation" of the "source" and that, during the negotiation, whenever the "VIDIOC_S_CROP" ioctl is issued, the scaling factor is restored to 1. +This driver supports two different video formats: the first one is the "8-bit +Sequential Bayer" format and can be used to obtain uncompressed video data +from the device through the current I/O method, while the second one provides +"raw" compressed video data (without the initial and final frame headers). The +compression quality may vary from 0 to 1 and can be selected or queried thanks +to the VIDIOC_S_JPEGCOMP and VIDIOC_G_JPEGCOMP V4L2 ioctl's. For maximum +flexibility, the default active video format depends on how the image sensor +being used is initialized (as described in the documentation of the API for the +image sensors supplied by this driver). + -11. Contact information +12. Contact information ======================= I may be contacted by e-mail at <luca.risolia@studio.unibo.it>. @@ -311,7 +349,7 @@ My public 1024-bit key should be available at any keyserver; the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'. -12. Credits +13. Credits =========== I would thank the following persons: |