			Soc-Camera Subsystem
			====================

Terminology
-----------

The following terms are used in this document:
 - camera / camera device / camera sensor - a video-camera sensor chip, capable
   of connecting to a variety of systems and interfaces, typically uses i2c for
   control and configuration, and a parallel or a serial bus for data.
 - camera host - an interface, to which a camera is connected. Typically a
   specialised interface, present on many SoCs, e.g., PXA27x and PXA3xx, SuperH,
   AVR32, i.MX27, i.MX31.
 - camera host bus - a connection between a camera host and a camera. Can be
   parallel or serial, consists of data and control lines, e.g., clock, vertical
   and horizontal synchronization signals.

Purpose of the soc-camera subsystem
-----------------------------------

The soc-camera subsystem provides a unified API between camera host drivers and
camera sensor drivers. It implements a V4L2 interface to the user, currently
only the mmap method is supported.

This subsystem has been written to connect drivers for System-on-Chip (SoC)
video capture interfaces with drivers for CMOS camera sensor chips to enable
the reuse of sensor drivers with various hosts. The subsystem has been designed
to support multiple camera host interfaces and multiple cameras per interface,
although most applications have only one camera sensor.

Existing drivers
----------------

As of 2.6.27-rc4 there are two host drivers in the mainline: pxa_camera.c for
PXA27x SoCs and sh_mobile_ceu_camera.c for SuperH SoCs, and four sensor drivers:
mt9m001.c, mt9m111.c, mt9v022.c and a generic soc_camera_platform.c driver. This
list is not supposed to be updated, look for more examples in your tree.

Camera host API
---------------

A host camera driver is registered using the

soc_camera_host_register(struct soc_camera_host *);

function. The host object can be initialized as follows:

static struct soc_camera_host pxa_soc_camera_host = {
	.drv_name	= PXA_CAM_DRV_NAME,
	.ops		= &pxa_soc_camera_host_ops,
};

All camera host methods are passed in a struct soc_camera_host_ops:

static struct soc_camera_host_ops pxa_soc_camera_host_ops = {
	.owner		= THIS_MODULE,
	.add		= pxa_camera_add_device,
	.remove		= pxa_camera_remove_device,
	.suspend	= pxa_camera_suspend,
	.resume		= pxa_camera_resume,
	.set_fmt_cap	= pxa_camera_set_fmt_cap,
	.try_fmt_cap	= pxa_camera_try_fmt_cap,
	.init_videobuf	= pxa_camera_init_videobuf,
	.reqbufs	= pxa_camera_reqbufs,
	.poll		= pxa_camera_poll,
	.querycap	= pxa_camera_querycap,
	.try_bus_param	= pxa_camera_try_bus_param,
	.set_bus_param	= pxa_camera_set_bus_param,
};

.add and .remove methods are called when a sensor is attached to or detached
from the host, apart from performing host-internal tasks they shall also call
sensor driver's .init and .release methods respectively. .suspend and .resume
methods implement host's power-management functionality and its their
responsibility to call respective sensor's methods. .try_bus_param and
.set_bus_param are used to negotiate physical connection parameters between the
host and the sensor. .init_videobuf is called by soc-camera core when a
video-device is opened, further video-buffer management is implemented completely
by the specific camera host driver. The rest of the methods are called from
respective V4L2 operations.

Camera API
----------

Sensor drivers can use struct soc_camera_link, typically provided by the
platform, and used to specify to which camera host bus the sensor is connected,
and arbitrarily provide platform .power and .reset methods for the camera.
soc_camera_device_register() and soc_camera_device_unregister() functions are
used to add a sensor driver to or remove one from the system. The registration
function takes a pointer to struct soc_camera_device as the only parameter.
This struct can be initialized as follows:

	/* link to driver operations */
	icd->ops	= &mt9m001_ops;
	/* link to the underlying physical (e.g., i2c) device */
	icd->control	= &client->dev;
	/* window geometry */
	icd->x_min	= 20;
	icd->y_min	= 12;
	icd->x_current	= 20;
	icd->y_current	= 12;
	icd->width_min	= 48;
	icd->width_max	= 1280;
	icd->height_min	= 32;
	icd->height_max	= 1024;
	icd->y_skip_top	= 1;
	/* camera bus ID, typically obtained from platform data */
	icd->iface	= icl->bus_id;

struct soc_camera_ops provides .probe and .remove methods, which are called by
the soc-camera core, when a camera is matched against or removed from a camera
host bus, .init, .release, .suspend, and .resume are called from the camera host
driver as discussed above. Other members of this struct provide respective V4L2
functionality.

struct soc_camera_device also links to an array of struct soc_camera_data_format,
listing pixel formats, supported by the camera.

--
Author: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
