aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/usb/sn9c102.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/usb/sn9c102.txt')
-rw-r--r--Documentation/usb/sn9c102.txt95
1 files changed, 59 insertions, 36 deletions
diff --git a/Documentation/usb/sn9c102.txt b/Documentation/usb/sn9c102.txt
index 3f8a119db31b..c6b76414172c 100644
--- a/Documentation/usb/sn9c102.txt
+++ b/Documentation/usb/sn9c102.txt
@@ -17,16 +17,15 @@ Index
177. Module parameters 177. Module parameters
188. Optional device control through "sysfs" 188. Optional device control through "sysfs"
199. Supported devices 199. Supported devices
2010. How to add plug-in's for new image sensors 2010. Notes for V4L2 application developers
2111. Notes for V4L2 application developers 2111. Video frame formats
2212. Video frame formats 2212. Contact information
2313. Contact information 2313. Credits
2414. Credits
25 24
26 25
271. Copyright 261. Copyright
28============ 27============
29Copyright (C) 2004-2005 by Luca Risolia <luca.risolia@studio.unibo.it> 28Copyright (C) 2004-2006 by Luca Risolia <luca.risolia@studio.unibo.it>
30 29
31 30
322. Disclaimer 312. Disclaimer
@@ -54,9 +53,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
54 53
554. Overview and features 544. Overview and features
56======================== 55========================
57This driver attempts to support the video and audio streaming capabilities of 56This driver attempts to support the video interface of the devices mounting the
58the devices mounting the SONiX SN9C101, SN9C102 and SN9C103 PC Camera 57SONiX SN9C101, SN9C102 and SN9C103 PC Camera Controllers.
59Controllers.
60 58
61It's worth to note that SONiX has never collaborated with the author during the 59It's worth to note that SONiX has never collaborated with the author during the
62development of this project, despite several requests for enough detailed 60development of this project, despite several requests for enough detailed
@@ -78,6 +76,7 @@ Some of the features of the driver are:
78- available mmap or read/poll methods for video streaming through isochronous 76- available mmap or read/poll methods for video streaming through isochronous
79 data transfers; 77 data transfers;
80- automatic detection of image sensor; 78- automatic detection of image sensor;
79- support for built-in microphone interface;
81- support for any window resolutions and optional panning within the maximum 80- support for any window resolutions and optional panning within the maximum
82 pixel area of image sensor; 81 pixel area of image sensor;
83- image downscaling with arbitrary scaling factors from 1, 2 and 4 in both 82- image downscaling with arbitrary scaling factors from 1, 2 and 4 in both
@@ -96,7 +95,7 @@ Some of the features of the driver are:
96 parameters" paragraph); 95 parameters" paragraph);
97- up to 64 cameras can be handled at the same time; they can be connected and 96- up to 64 cameras can be handled at the same time; they can be connected and
98 disconnected from the host many times without turning off the computer, if 97 disconnected from the host many times without turning off the computer, if
99 your system supports hotplugging; 98 the system supports hotplugging;
100- no known bugs. 99- no known bugs.
101 100
102 101
@@ -112,6 +111,12 @@ corresponding modules must be compiled:
112 # 111 #
113 CONFIG_VIDEO_DEV=m 112 CONFIG_VIDEO_DEV=m
114 113
114To enable advanced debugging functionality on the device through /sysfs:
115
116 # Multimedia devices
117 #
118 CONFIG_VIDEO_ADV_DEBUG=y
119
115 # USB support 120 # USB support
116 # 121 #
117 CONFIG_USB=m 122 CONFIG_USB=m
@@ -125,6 +130,21 @@ necessary:
125 CONFIG_USB_UHCI_HCD=m 130 CONFIG_USB_UHCI_HCD=m
126 CONFIG_USB_OHCI_HCD=m 131 CONFIG_USB_OHCI_HCD=m
127 132
133The SN9C103 controller also provides a built-in microphone interface. It is
134supported by the USB Audio driver thanks to the ALSA API:
135
136 # Sound
137 #
138 CONFIG_SOUND=y
139
140 # Advanced Linux Sound Architecture
141 #
142 CONFIG_SND=m
143
144 # USB devices
145 #
146 CONFIG_SND_USB_AUDIO=m
147
128And finally: 148And finally:
129 149
130 # USB Multimedia devices 150 # USB Multimedia devices
@@ -153,7 +173,7 @@ analyze kernel messages and verify that the loading process has gone well:
153Module parameters are listed below: 173Module parameters are listed below:
154------------------------------------------------------------------------------- 174-------------------------------------------------------------------------------
155Name: video_nr 175Name: video_nr
156Type: int array (min = 0, max = 64) 176Type: short array (min = 0, max = 64)
157Syntax: <-1|n[,...]> 177Syntax: <-1|n[,...]>
158Description: Specify V4L2 minor mode number: 178Description: Specify V4L2 minor mode number:
159 -1 = use next available 179 -1 = use next available
@@ -165,19 +185,19 @@ Description: Specify V4L2 minor mode number:
165 other camera. 185 other camera.
166Default: -1 186Default: -1
167------------------------------------------------------------------------------- 187-------------------------------------------------------------------------------
168Name: force_munmap; 188Name: force_munmap
169Type: bool array (min = 0, max = 64) 189Type: bool array (min = 0, max = 64)
170Syntax: <0|1[,...]> 190Syntax: <0|1[,...]>
171Description: Force the application to unmap previously mapped buffer memory 191Description: Force the application to unmap previously mapped buffer memory
172 before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not 192 before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not
173 all the applications support this feature. This parameter is 193 all the applications support this feature. This parameter is
174 specific for each detected camera. 194 specific for each detected camera.
175 0 = do not force memory unmapping" 195 0 = do not force memory unmapping
176 1 = force memory unmapping (save memory)" 196 1 = force memory unmapping (save memory)
177Default: 0 197Default: 0
178------------------------------------------------------------------------------- 198-------------------------------------------------------------------------------
179Name: debug 199Name: debug
180Type: int 200Type: ushort
181Syntax: <n> 201Syntax: <n>
182Description: Debugging information level, from 0 to 3: 202Description: Debugging information level, from 0 to 3:
183 0 = none (use carefully) 203 0 = none (use carefully)
@@ -187,14 +207,15 @@ Description: Debugging information level, from 0 to 3:
187 Level 3 is useful for testing only, when only one device 207 Level 3 is useful for testing only, when only one device
188 is used. It also shows some more informations about the 208 is used. It also shows some more informations about the
189 hardware being detected. This parameter can be changed at 209 hardware being detected. This parameter can be changed at
190 runtime thanks to the /sys filesystem. 210 runtime thanks to the /sys filesystem interface.
191Default: 2 211Default: 2
192------------------------------------------------------------------------------- 212-------------------------------------------------------------------------------
193 213
194 214
1958. Optional device control through "sysfs" [1] 2158. Optional device control through "sysfs" [1]
196========================================== 216==========================================
197It is possible to read and write both the SN9C10x and the image sensor 217If the kernel has been compiled with the CONFIG_VIDEO_ADV_DEBUG option enabled,
218it is possible to read and write both the SN9C10x and the image sensor
198registers by using the "sysfs" filesystem interface. 219registers by using the "sysfs" filesystem interface.
199 220
200Every time a supported device is recognized, a write-only file named "green" is 221Every time a supported device is recognized, a write-only file named "green" is
@@ -236,7 +257,7 @@ serialized.
236 257
237The sysfs interface also provides the "frame_header" entry, which exports the 258The sysfs interface also provides the "frame_header" entry, which exports the
238frame header of the most recent requested and captured video frame. The header 259frame header of the most recent requested and captured video frame. The header
239is 12-bytes long and is appended to every video frame by the SN9C10x 260is always 18-bytes long and is appended to every video frame by the SN9C10x
240controllers. As an example, this additional information can be used by the user 261controllers. As an example, this additional information can be used by the user
241application for implementing auto-exposure features via software. 262application for implementing auto-exposure features via software.
242 263
@@ -250,7 +271,8 @@ Byte # Value Description
2500x03 0xC4 Frame synchronisation pattern. 2710x03 0xC4 Frame synchronisation pattern.
2510x04 0xC4 Frame synchronisation pattern. 2720x04 0xC4 Frame synchronisation pattern.
2520x05 0x96 Frame synchronisation pattern. 2730x05 0x96 Frame synchronisation pattern.
2530x06 0x00 or 0x01 Unknown meaning. The exact value depends on the chip. 2740x06 0xXX Unknown meaning. The exact value depends on the chip;
275 possible values are 0x00, 0x01 and 0x20.
2540x07 0xXX Variable value, whose bits are ff00uzzc, where ff is a 2760x07 0xXX Variable value, whose bits are ff00uzzc, where ff is a
255 frame counter, u is unknown, zz is a size indicator 277 frame counter, u is unknown, zz is a size indicator
256 (00 = VGA, 01 = SIF, 10 = QSIF) and c stands for 278 (00 = VGA, 01 = SIF, 10 = QSIF) and c stands for
@@ -267,12 +289,23 @@ Byte # Value Description
267 times the area outside of the specified AE area. For 289 times the area outside of the specified AE area. For
268 images that are not pure white, the value scales down 290 images that are not pure white, the value scales down
269 according to relative whiteness. 291 according to relative whiteness.
292 according to relative whiteness.
293
294The following bytes are used by the SN9C103 bridge only:
295
2960x0C 0xXX Unknown meaning
2970x0D 0xXX Unknown meaning
2980x0E 0xXX Unknown meaning
2990x0F 0xXX Unknown meaning
3000x10 0xXX Unknown meaning
3010x11 0xXX Unknown meaning
270 302
271The AE area (sx, sy, ex, ey) in the active window can be set by programming the 303The AE area (sx, sy, ex, ey) in the active window can be set by programming the
272registers 0x1c, 0x1d, 0x1e and 0x1f of the SN9C10x controllers, where one unit 304registers 0x1c, 0x1d, 0x1e and 0x1f of the SN9C10x controllers, where one unit
273corresponds to 32 pixels. 305corresponds to 32 pixels.
274 306
275[1] The frame header has been documented by Bertrik Sikken. 307[1] Part of the meaning of the frame header has been documented by Bertrik
308 Sikken.
276 309
277 310
2789. Supported devices 3119. Supported devices
@@ -298,6 +331,7 @@ Vendor ID Product ID
2980x0c45 0x602b 3310x0c45 0x602b
2990x0c45 0x602c 3320x0c45 0x602c
3000x0c45 0x602d 3330x0c45 0x602d
3340x0c45 0x602e
3010x0c45 0x6030 3350x0c45 0x6030
3020x0c45 0x6080 3360x0c45 0x6080
3030x0c45 0x6082 3370x0c45 0x6082
@@ -348,18 +382,7 @@ appreciated. Non-available hardware will not be supported by the author of this
348driver. 382driver.
349 383
350 384
35110. How to add plug-in's for new image sensors 38510. Notes for V4L2 application developers
352==============================================
353It should be easy to write plug-in's for new sensors by using the small API
354that has been created for this purpose, which is present in "sn9c102_sensor.h"
355(documentation is included there). As an example, have a look at the code in
356"sn9c102_pas106b.c", which uses the mentioned interface.
357
358At the moment, possible unsupported image sensors are: CIS-VF10 (VGA),
359OV7620 (VGA), OV7630 (VGA).
360
361
36211. Notes for V4L2 application developers
363========================================= 386=========================================
364This driver follows the V4L2 API specifications. In particular, it enforces two 387This driver follows the V4L2 API specifications. In particular, it enforces two
365rules: 388rules:
@@ -394,7 +417,7 @@ initialized (as described in the documentation of the API for the image sensors
394supplied by this driver). 417supplied by this driver).
395 418
396 419
39712. Video frame formats [1] 42011. Video frame formats [1]
398======================= 421=======================
399The SN9C10x PC Camera Controllers can send images in two possible video 422The SN9C10x PC Camera Controllers can send images in two possible video
400formats over the USB: either native "Sequential RGB Bayer" or Huffman 423formats over the USB: either native "Sequential RGB Bayer" or Huffman
@@ -455,7 +478,7 @@ The following Huffman codes have been found:
455 documented by Bertrik Sikken. 478 documented by Bertrik Sikken.
456 479
457 480
45813. Contact information 48112. Contact information
459======================= 482=======================
460The author may be contacted by e-mail at <luca.risolia@studio.unibo.it>. 483The author may be contacted by e-mail at <luca.risolia@studio.unibo.it>.
461 484
@@ -464,7 +487,7 @@ GPG/PGP encrypted e-mail's are accepted. The GPG key ID of the author is
464the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'. 487the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'.
465 488
466 489
46714. Credits 49013. Credits
468=========== 491===========
469Many thanks to following persons for their contribute (listed in alphabetical 492Many thanks to following persons for their contribute (listed in alphabetical
470order): 493order):
@@ -480,5 +503,5 @@ order):
480- Bertrik Sikken, who reverse-engineered and documented the Huffman compression 503- Bertrik Sikken, who reverse-engineered and documented the Huffman compression
481 algorithm used in the SN9C10x controllers and implemented the first decoder; 504 algorithm used in the SN9C10x controllers and implemented the first decoder;
482- Mizuno Takafumi for the donation of a webcam; 505- Mizuno Takafumi for the donation of a webcam;
483- An "anonymous" donator (who didn't want his name to be revealed) for the 506- an "anonymous" donator (who didn't want his name to be revealed) for the
484 donation of a webcam. 507 donation of a webcam.