Commit | Line | Data |
---|---|---|
f2ac8ce8 MCC |
1 | .. SPDX-License-Identifier: GPL-2.0 |
2 | ||
8f6174a0 MCC |
3 | The cafe_ccic driver |
4 | ==================== | |
5 | ||
6 | Author: Jonathan Corbet <corbet@lwn.net> | |
7 | ||
7d56f0fa S |
8 | Introduction |
9 | ------------ | |
8f6174a0 | 10 | |
d905b382 JC |
11 | "cafe_ccic" is a driver for the Marvell 88ALP01 "cafe" CMOS camera |
12 | controller. This is the controller found in first-generation OLPC systems, | |
13 | and this driver was written with support from the OLPC project. | |
14 | ||
15 | Current status: the core driver works. It can generate data in YUV422, | |
16 | RGB565, and RGB444 formats. (Anybody looking at the code will see RGB32 as | |
17 | well, but that is a debugging aid which will be removed shortly). VGA and | |
18 | QVGA modes work; CIF is there but the colors remain funky. Only the OV7670 | |
19 | sensor is known to work with this controller at this time. | |
20 | ||
21 | To try it out: either of these commands will work: | |
22 | ||
8f6174a0 MCC |
23 | .. code-block:: none |
24 | ||
25 | $ mplayer tv:// -tv driver=v4l2:width=640:height=480 -nosound | |
26 | $ mplayer tv:// -tv driver=v4l2:width=640:height=480:outfmt=bgr16 -nosound | |
d905b382 JC |
27 | |
28 | The "xawtv" utility also works; gqcam does not, for unknown reasons. | |
29 | ||
8f6174a0 MCC |
30 | Load time options |
31 | ----------------- | |
32 | ||
d905b382 JC |
33 | There are a few load-time options, most of which can be changed after |
34 | loading via sysfs as well: | |
35 | ||
36 | - alloc_bufs_at_load: Normally, the driver will not allocate any DMA | |
37 | buffers until the time comes to transfer data. If this option is set, | |
38 | then worst-case-sized buffers will be allocated at module load time. | |
39 | This option nails down the memory for the life of the module, but | |
40 | perhaps decreases the chances of an allocation failure later on. | |
41 | ||
42 | - dma_buf_size: The size of DMA buffers to allocate. Note that this | |
43 | option is only consulted for load-time allocation; when buffers are | |
44 | allocated at run time, they will be sized appropriately for the current | |
45 | camera settings. | |
46 | ||
47 | - n_dma_bufs: The controller can cycle through either two or three DMA | |
48 | buffers. Normally, the driver tries to use three buffers; on faster | |
49 | systems, however, it will work well with only two. | |
50 | ||
51 | - min_buffers: The minimum number of streaming I/O buffers that the driver | |
52 | will consent to work with. Default is one, but, on slower systems, | |
53 | better behavior with mplayer can be achieved by setting to a higher | |
54 | value (like six). | |
55 | ||
56 | - max_buffers: The maximum number of streaming I/O buffers; default is | |
57 | ten. That number was carefully picked out of a hat and should not be | |
58 | assumed to actually mean much of anything. | |
59 | ||
60 | - flip: If this boolean parameter is set, the sensor will be instructed to | |
61 | invert the video image. Whether it makes sense is determined by how | |
62 | your particular camera is mounted. |