Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23e83216 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

[media] Documentation/media: Remove docs for obsoleted and removed v4l1 drivers



When the v4l1 drivers were removed, there docs were forgotten.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 7a29ee2e
Loading
Loading
Loading
Loading
+0 −315
Original line number Diff line number Diff line

		       ET61X[12]51 PC Camera Controllers
				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.  Optional device control through "sysfs"
9.  Supported devices
10. Notes for V4L2 application developers
11. Contact information


1. Copyright
============
Copyright (C) 2006-2007 by Luca Risolia <luca.risolia@studio.unibo.it>


2. Disclaimer
=============
Etoms is a trademark of Etoms Electronics Corp.
This software is not developed or sponsored by Etoms Electronics.


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 ET61X151
or ET61X251 PC Camera Controllers.

It's worth to note that Etoms Electronics has never collaborated with the
author during the development of this project; despite several requests,
Etoms Electronics also refused to release enough detailed specifications of
the video compression engine.

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 ET61X[12]51 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;
- support for any window resolutions and optional panning within the maximum
  pixel area of image sensor;
- image downscaling with arbitrary scaling factors from 1 and 2 in both
  directions (see "Notes for V4L2 application developers" paragraph);
- two different video formats for uncompressed or compressed data in low or
  high compression quality (see also "Notes for V4L2 application developers"
  paragraph);
- full support for the capabilities of every possible image sensors that can
  be connected to the ET61X[12]51 bridges, including, for instance, red, green,
  blue and global gain adjustments and exposure control (see "Supported
  devices" paragraph for details);
- use of default color settings for sunlight conditions;
- dynamic I/O interface for both ET61X[12]51 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
  the system supports hotplugging;
- no known bugs.


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

To enable advanced debugging functionality on the device through /sysfs:

	# Multimedia devices
	#
	CONFIG_VIDEO_ADV_DEBUG=y

	# 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

And finally:

	# USB Multimedia devices
	#
	CONFIG_USB_ET61X251=m


6. Module loading
=================
To use the driver, it is necessary to load the "et61x251" 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 et61x251

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 more information
		about the hardware being detected. This module parameter can be
		changed at runtime thanks to the /sys filesystem interface.
Default:        2
-------------------------------------------------------------------------------


8. Optional device control through "sysfs"
==========================================
If the kernel has been compiled with the CONFIG_VIDEO_ADV_DEBUG option enabled,
it is possible to read and write both the ET61X[12]51 and the image sensor
registers by using the "sysfs" filesystem interface.

There are four files in the /sys/class/video4linux/videoX directory for each
registered camera: "reg", "val", "i2c_reg" and "i2c_val". The first two files
control the ET61X[12]51 bridge, while the other two control the sensor chip.
"reg" and "i2c_reg" hold the values of the current register index where the
following reading/writing operations are addressed at through "val" and
"i2c_val". Their use is not intended for end-users, unless you know what you
are doing. Remember that you must be logged in as root before writing to them.

As an example, suppose we were to want to read the value contained in the
register number 1 of the sensor register table - which is usually the product
identifier - of the camera registered as "/dev/video0":

	[root@localhost #] cd /sys/class/video4linux/video0
	[root@localhost #] echo 1 > i2c_reg
	[root@localhost #] cat i2c_val

Note that if the sensor registers cannot be read, "cat" will fail.
To avoid race conditions, all the I/O accesses to the files are serialized.


9. 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 ET61X[12]51 PC camera controllers:

Vendor ID  Product ID
---------  ----------
0x102c     0x6151
0x102c     0x6251
0x102c     0x6253
0x102c     0x6254
0x102c     0x6255
0x102c     0x6256
0x102c     0x6257
0x102c     0x6258
0x102c     0x6259
0x102c     0x625a
0x102c     0x625b
0x102c     0x625c
0x102c     0x625d
0x102c     0x625e
0x102c     0x625f
0x102c     0x6260
0x102c     0x6261
0x102c     0x6262
0x102c     0x6263
0x102c     0x6264
0x102c     0x6265
0x102c     0x6266
0x102c     0x6267
0x102c     0x6268
0x102c     0x6269

The following image sensors are supported:

Model       Manufacturer
-----       ------------
TAS5130D1B  Taiwan Advanced Sensor Corporation

All the available control settings of each image sensor are supported through
the V4L2 interface.


10. 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.

Consistently with the hardware limits, this driver also supports image
downscaling with arbitrary scaling factors from 1 and 2 in both directions.
However, the V4L2 API specifications don't correctly define how the scaling
factor can be chosen arbitrarily by the "negotiation" of the "source" and
"target" rectangles. To work around this flaw, we have added the convention
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 frame headers not related to the
compressed data). The current 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.


11. 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'.
+0 −323

File deleted.

Preview size limit exceeded, changes collapsed.

+0 −12
Original line number Diff line number Diff line
This document describes the ALi m5602 bridge connected
to the following supported sensors:
OmniVision OV9650,
Samsung s5k83a,
Samsung s5k4aa,
Micron mt9m111,
Pixel plus PO1030

This driver mimics the windows drivers, which have a braindead implementation sending bayer-encoded frames at VGA resolution.
In a perfect world we should be able to reprogram the m5602 and the connected sensor in hardware instead, supporting a range of resolutions and pixelformats

Anyway, have fun and please report any bugs to m560x-driver-devel@lists.sourceforge.net
+0 −288
Original line number Diff line number Diff line
-------------------------------------------------------------------------------
Readme for Linux device driver for the OmniVision OV511 USB to camera bridge IC
-------------------------------------------------------------------------------

Author: Mark McClelland
Homepage: http://alpha.dyndns.org/ov511

INTRODUCTION:

This is a driver for the OV511, a USB-only chip used in many "webcam" devices.
Any camera using the OV511/OV511+ and the OV6620/OV7610/20/20AE should work.
Video capture devices that use the Philips SAA7111A decoder also work. It
supports streaming and capture of color or monochrome video via the Video4Linux
API. Most V4L apps are compatible with it. Most resolutions with a width and
height that are a multiple of 8 are supported.

If you need more information, please visit the OV511 homepage at the above URL.

WHAT YOU NEED:

- If you want to help with the development, get the chip's specification docs at
  http://www.ovt.com/omniusbp.html

- A Video4Linux compatible frame grabber program (I recommend vidcat and xawtv)
    vidcat is part of the w3cam package:  http://mpx.freeshell.net/
    xawtv is available at:  http://linux.bytesex.org/xawtv/

HOW TO USE IT:

Note: These are simplified instructions. For complete instructions see:
	http://alpha.dyndns.org/ov511/install.html

You must have first compiled USB support, support for your specific USB host
controller (UHCI or OHCI), and Video4Linux support for your kernel (I recommend
making them modules.) Make sure "Enforce bandwidth allocation" is NOT enabled.

Next, (as root):

	modprobe usbcore
	modprobe usb-uhci  <OR>  modprobe usb-ohci
	modprobe videodev
	modprobe ov511

If it is not already there (it usually is), create the video device:

	mknod /dev/video0 c 81 0

Optionally, symlink /dev/video to /dev/video0

You will have to set permissions on this device to allow you to read/write
from it:

	chmod 666 /dev/video
	chmod 666 /dev/video0 (if necessary)

Now you are ready to run a video app! Both vidcat and xawtv work well for me
at 640x480.

[Using vidcat:]

	vidcat -s 640x480 -p c > test.jpg
	xview test.jpg

[Using xawtv:]

From the main xawtv directory:

	make clean
	./configure
	make
	make install

Now you should be able to run xawtv. Right click for the options dialog.

MODULE PARAMETERS:

  You can set these with:  insmod ov511 NAME=VALUE
  There is currently no way to set these on a per-camera basis.

  NAME: autobright
  TYPE: integer (Boolean)
  DEFAULT: 1
  DESC: Brightness is normally under automatic control and can't be set
	manually by the video app. Set to 0 for manual control.

  NAME: autogain
  TYPE: integer (Boolean)
  DEFAULT: 1
  DESC: Auto Gain Control enable. This feature is not yet implemented.

  NAME: autoexp
  TYPE: integer (Boolean)
  DEFAULT: 1
  DESC: Auto Exposure Control enable. This feature is not yet implemented.

  NAME: debug
  TYPE: integer (0-6)
  DEFAULT: 3
  DESC: Sets the threshold for printing debug messages. The higher the value,
	the more is printed. The levels are cumulative, and are as follows:
	  0=no debug messages
	  1=init/detection/unload and other significant messages
	  2=some warning messages
	  3=config/control function calls
	  4=most function calls and data parsing messages
	  5=highly repetitive mesgs

  NAME: snapshot
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: Set to 1 to enable snapshot mode. read()/VIDIOCSYNC will block until
	the snapshot button is pressed. Note: enabling this mode disables
	/proc/video/ov511/<minor#>/button

  NAME: cams
  TYPE: integer (1-4 for OV511, 1-31 for OV511+)
  DEFAULT: 1
  DESC: Number of cameras allowed to stream simultaneously on a single bus.
	Values higher than 1 reduce the data rate of each camera, allowing two
	or more to be used at once. If you have a complicated setup involving
	both OV511 and OV511+ cameras, trial-and-error may be necessary for
	finding the optimum setting.

  NAME: compress
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: Set this to 1 to turn on the camera's compression engine. This can
	potentially increase the frame rate at the expense of quality, if you
	have a fast CPU. You must load the proper compression module for your
	camera before starting your application (ov511_decomp or ov518_decomp).

  NAME: testpat
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: This configures the camera's sensor to transmit a colored test-pattern
	instead of an image. This does not work correctly yet.

  NAME: dumppix
  TYPE: integer (0-2)
  DEFAULT: 0
  DESC: Dumps raw pixel data and skips post-processing and format conversion.
	It is for debugging purposes only. Options are:
		0: Disable (default)
		1: Dump raw data from camera, excluding headers and trailers
		2: Dumps data exactly as received from camera

  NAME: led
  TYPE: integer (0-2)
  DEFAULT: 1 (Always on)
  DESC: Controls whether the LED (the little light) on the front of the camera
	is always off (0), always on (1), or only on when driver is open (2).
	This is not supported with the OV511, and might only work with certain
	cameras (ones that actually have the LED wired to the control pin, and
	not just hard-wired to be on all the time).

  NAME: dump_bridge
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: Dumps the bridge (OV511[+] or OV518[+]) register values to the system
	log. Only useful for serious debugging/development purposes.

  NAME: dump_sensor
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: Dumps the sensor register values to the system log. Only useful for
	serious debugging/development purposes.

  NAME: printph
  TYPE: integer (Boolean)
  DEFAULT: 0
  DESC: Setting this to 1 will dump the first 12 bytes of each isoc frame. This
	is only useful if you are trying to debug problems with the isoc data
	stream (i.e.: camera initializes, but vidcat hangs until Ctrl-C). Be
	warned that this dumps a large number of messages to your kernel log.

  NAME: phy, phuv, pvy, pvuv, qhy, qhuv, qvy, qvuv
  TYPE: integer (0-63 for phy and phuv, 0-255 for rest)
  DEFAULT: OV511 default values
  DESC: These are registers 70h - 77h of the OV511, which control the
	prediction ranges and quantization thresholds of the compressor, for
	the Y and UV channels in the horizontal and vertical directions. See
	the OV511 or OV511+ data sheet for more detailed descriptions. These
	normally do not need to be changed.

  NAME: lightfreq
  TYPE: integer (0, 50, or 60)
  DEFAULT: 0 (use sensor default)
  DESC: Sets the sensor to match your lighting frequency. This can reduce the
	appearance of "banding", i.e. horizontal lines or waves of light and
	dark that are often caused by artificial lighting. Valid values are:
		0 - Use default (depends on sensor, most likely 60 Hz)
		50 - For European and Asian 50 Hz power
		60 - For American 60 Hz power

  NAME: bandingfilter
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Enables the sensor´s banding filter exposure algorithm. This reduces
	or stabilizes the "banding" caused by some artificial light sources
	(especially fluorescent). You might have to set lightfreq correctly for
	this to work right. As an added bonus, this sometimes makes it
	possible to capture your monitor´s output.

  NAME: fastset
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Allows picture settings (brightness, contrast, color, and hue) to take
	effect immediately, even in the middle of a frame. This reduces the
	time to change settings, but can ruin frames during the change. Only
	affects OmniVision sensors.

  NAME: force_palette
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Forces the palette (color format) to a specific value. If an
	application requests a different palette, it will be rejected, thereby
	forcing it to try others until it succeeds. This is useful for forcing
	greyscale mode with a color camera, for example. Supported modes are:
		0                           (Allows all the following formats)
		1   VIDEO_PALETTE_GREY      (Linear greyscale)
		10  VIDEO_PALETTE_YUV420    (YUV 4:2:0 Planar)
		15  VIDEO_PALETTE_YUV420P   (YUV 4:2:0 Planar, same as 10)

  NAME: backlight
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Setting this flag changes the exposure algorithm for OmniVision sensors
	such that objects in the camera's view (i.e. your head) can be clearly
	seen when they are illuminated from behind. It reduces or eliminates
	the sensor's auto-exposure function, so it should only be used when
	needed. Additionally, it is only supported with the OV6620 and OV7620.

  NAME: unit_video
  TYPE: Up to 16 comma-separated integers
  DEFAULT: 0,0,0... (automatically assign the next available minor(s))
  DESC: You can specify up to 16 minor numbers to be assigned to ov511 devices.
	For example, "unit_video=1,3" will make the driver use /dev/video1 and
	/dev/video3 for the first two devices it detects. Additional devices
	will be assigned automatically starting at the first available device
	node (/dev/video0 in this case). Note that you cannot specify 0 as a
	minor number. This feature requires kernel version 2.4.5 or higher.

  NAME: remove_zeros
  TYPE: integer (Boolean)
  DEFAULT: 0 (do not skip any incoming data)
  DESC: Setting this to 1 will remove zero-padding from incoming data. This
	will compensate for the blocks of corruption that can appear when the
	camera cannot keep up with the speed of the USB bus (eg. at low frame
	resolutions). This feature is always enabled when compression is on.

  NAME: mirror
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Setting this to 1 will reverse ("mirror") the image horizontally. This
	might be necessary if your camera has a custom lens assembly. This has
	no effect with video capture devices.

  NAME: ov518_color
  TYPE: integer (Boolean)
  DEFAULT: 0 (off)
  DESC: Enable OV518 color support. This is off by default since it doesn't
	work most of the time. If you want to try it, you must also load
	ov518_decomp with the "nouv=0" parameter. If you get improper colors or
	diagonal lines through the image, restart your video app and try again.
	Repeat as necessary.

WORKING FEATURES:
 o Color streaming/capture at most widths and heights that are multiples of 8.
 o Monochrome (use force_palette=1 to enable)
 o Setting/getting of saturation, contrast, brightness, and hue (only some of
   them work the OV7620 and OV7620AE)
 o /proc status reporting
 o SAA7111A video capture support at 320x240 and 640x480
 o Compression support
 o SMP compatibility

HOW TO CONTACT ME:

You can email me at mark@alpha.dyndns.org . Please prefix the subject line
with "OV511: " so that I am certain to notice your message.

CREDITS:

The code is based in no small part on the CPiA driver by Johannes Erdfelt,
Randy Dunlap, and others. Big thanks to them for their pioneering work on that
and the USB stack. Thanks to Bret Wallach for getting camera reg IO, ISOC, and
image capture working. Thanks to Orion Sky Lawlor, Kevin Moore, and Claudio
Matsuoka for their work as well.
+0 −54
Original line number Diff line number Diff line
Linux driver for SE401 based USB cameras

Copyright, 2001, Jeroen Vreeken


INTRODUCTION:

The SE401 chip is the used in low-cost usb webcams.
It is produced by Endpoints Inc. (www.endpoints.com).
It interfaces directly to a cmos image sensor and USB. The only other major
part in a se401 based camera is a dram chip.

The following cameras are known to work with this driver:

Aox se401 (non-branded) cameras
Philips PVCV665 USB VGA webcam 'Vesta Fun'
Kensington VideoCAM PC Camera Model 67014
Kensington VideoCAM PC Camera Model 67015
Kensington VideoCAM PC Camera Model 67016
Kensington VideoCAM PC Camera Model 67017


WHAT YOU NEED:

-	USB support
-	VIDEO4LINUX support

More information about USB support for linux can be found at:
http://www.linux-usb.org


MODULE OPTIONS:

When the driver is compiled as a module you can also use the 'flickerless'
option. With it exposure is limited to values that do not interfere with the
net frequency. Valid options for this option are 0, 50 and 60. (0=disable,
50=50hz, 60=60hz)


KNOWN PROBLEMS:

The driver works fine with the usb-ohci and uhci host controller drivers,
the default settings also work with usb-uhci. But sending more than one bulk
transfer at a time with usb-uhci doesn't work yet.
Users of usb-ohci and uhci can safely enlarge SE401_NUMSBUF in se401.h in
order to increase the throughput (and thus framerate).


HELP:

The latest info on this driver can be found at:
http://members.chello.nl/~j.vreeken/se401/
And questions to me can be send to:
pe1rxq@amsat.org
Loading