123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- ZC0301 and ZC0301P Image Processor and Control Chip
- Driver for Linux
- ===================================================
- - Documentation -
- Index
- =====
- 1. Copyright
- 2. Disclaimer
- 3. License
- 4. Overview and features
- 5. Module dependencies
- 6. Module loading
- 7. Module parameters
- 8. Supported devices
- 9. Notes for V4L2 application developers
- 10. Contact information
- 11. Credits
- 1. Copyright
- ============
- Copyright (C) 2006-2007 by Luca Risolia <luca.risolia@studio.unibo.it>
- 2. Disclaimer
- =============
- This software is not developed or sponsored by Z-Star Microelectronics Corp.
- Trademarks are property of their respective owner.
- 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
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- 4. Overview and features
- ========================
- This driver supports the video interface of the devices mounting the ZC0301 or
- ZC0301P Image Processors and Control 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 ZC0301[P] driver can be found at the following URL:
- 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;
- - video format is standard JPEG;
- - 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
- the system supports hotplugging;
- 5. Module dependencies
- ======================
- For it to work properly, the driver needs kernel support for Video4Linux and
- USB.
- The following options of the kernel configuration file must be enabled and
- corresponding modules must be compiled:
- # Multimedia devices
- #
- CONFIG_VIDEO_DEV=m
- # USB support
- #
- CONFIG_USB=m
- In addition, depending on the hardware being used, the modules below are
- necessary:
- # USB Host Controller Drivers
- #
- CONFIG_USB_EHCI_HCD=m
- CONFIG_USB_UHCI_HCD=m
- CONFIG_USB_OHCI_HCD=m
- The ZC0301 controller also provides a built-in microphone interface. It is
- supported by the USB Audio driver thanks to the ALSA API:
- # Sound
- #
- CONFIG_SOUND=y
- # Advanced Linux Sound Architecture
- #
- CONFIG_SND=m
- # USB devices
- #
- CONFIG_SND_USB_AUDIO=m
- And finally:
- # V4L USB devices
- #
- CONFIG_USB_ZC0301=m
- 6. Module loading
- =================
- To use the driver, it is necessary to load the "zc0301" module into memory
- after every other module required: "videodev", "v4l2_common", "compat_ioctl32",
- "usbcore" and, depending on the USB host controller you have, "ehci-hcd",
- "uhci-hcd" or "ohci-hcd".
- Loading can be done as shown below:
- [root@localhost home]# modprobe zc0301
- At this point the devices should be recognized. You can invoke "dmesg" to
- analyze kernel messages and verify that the loading process has gone well:
- [user@localhost home]$ dmesg
- 7. Module parameters
- ====================
- Module parameters are listed below:
- -------------------------------------------------------------------------------
- Name: video_nr
- Type: short array (min = 0, max = 64)
- Syntax: <-1|n[,...]>
- Description: Specify V4L2 minor mode number:
- -1 = use next available
- n = use minor number n
- You can specify up to 64 cameras this way.
- For example:
- video_nr=-1,2,-1 would assign minor number 2 to the second
- registered camera and use auto for the first one and for every
- other camera.
- Default: -1
- -------------------------------------------------------------------------------
- Name: force_munmap
- Type: bool array (min = 0, max = 64)
- Syntax: <0|1[,...]>
- Description: Force the application to unmap previously mapped buffer memory
- before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not
- all the applications support this feature. This parameter is
- specific for each detected camera.
- 0 = do not force memory unmapping
- 1 = force memory unmapping (save memory)
- Default: 0
- -------------------------------------------------------------------------------
- Name: frame_timeout
- Type: uint array (min = 0, max = 64)
- Syntax: <n[,...]>
- Description: Timeout for a video frame in seconds. This parameter is
- specific for each detected camera. This parameter can be
- changed at runtime thanks to the /sys filesystem interface.
- Default: 2
- -------------------------------------------------------------------------------
- Name: debug
- Type: ushort
- Syntax: <n>
- Description: Debugging information level, from 0 to 3:
- 0 = none (use carefully)
- 1 = critical errors
- 2 = significant information
- 3 = more verbose messages
- Level 3 is useful for testing only, when only one device
- is used at the same time. It also shows some information
- about the hardware being detected. This module parameter can be
- changed at runtime thanks to the /sys filesystem interface.
- Default: 2
- -------------------------------------------------------------------------------
- 8. Supported devices
- ====================
- 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
- devices mounting the ZC0301 Image Processor and Control Chips:
- Vendor ID Product ID
- --------- ----------
- 0x041e 0x4017
- 0x041e 0x401c
- 0x041e 0x401e
- 0x041e 0x401f
- 0x041e 0x4022
- 0x041e 0x4034
- 0x041e 0x4035
- 0x041e 0x4036
- 0x041e 0x403a
- 0x0458 0x7007
- 0x0458 0x700c
- 0x0458 0x700f
- 0x046d 0x08ae
- 0x055f 0xd003
- 0x055f 0xd004
- 0x0ac8 0x0301
- 0x0ac8 0x301b
- 0x0ac8 0x303b
- 0x10fd 0x0128
- 0x10fd 0x8050
- 0x10fd 0x804e
- 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:
- Model Manufacturer
- ----- ------------
- PAS202BCB PixArt Imaging, Inc.
- PB-0330 Photobit Corporation
- 9. Notes for V4L2 application developers
- ========================================
- This driver follows the V4L2 API specifications. In particular, it enforces two
- rules:
- - exactly one I/O method, either "mmap" or "read", is associated with each
- file descriptor. Once it is selected, the application must close and reopen the
- device to switch to the other I/O method;
- - although it is not mandatory, previously mapped buffer memory should always
- be unmapped before calling any "VIDIOC_S_CROP" or "VIDIOC_S_FMT" ioctl's.
- The same number of buffers as before will be allocated again to match the size
- of the new video frames, so you have to map the buffers again before any I/O
- attempts on them.
- 10. Contact information
- =======================
- The author may be contacted by e-mail at <luca.risolia@studio.unibo.it>.
- GPG/PGP encrypted e-mail's are accepted. The GPG key ID of the author is
- 'FCE635A4'; the public 1024-bit key should be available at any keyserver;
- the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'.
- 11. Credits
- ===========
- - Information about the chip internals needed to enable the I2C protocol have
- been taken from the documentation of the ZC030x Video4Linux1 driver written
- by Andrew Birkett <andy@nobugs.org>;
- - The initialization values of the ZC0301 controller connected to the PAS202BCB
- and PB-0330 image sensors have been taken from the SPCA5XX driver maintained
- by Michel Xhaard <mxhaard@magic.fr>;
- - Stanislav Lechev donated one camera.
|