⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soc-camera.txt

📁 trident tm5600的linux驱动
💻 TXT
字号:
			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 andcamera sensor drivers. It implements a V4L2 interface to the user, currentlyonly 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 enablethe reuse of sensor drivers with various hosts. The subsystem has been designedto 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 forPXA27x 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. Thislist is not supposed to be updated, look for more examples in your tree.Camera host API---------------A host camera driver is registered using thesoc_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 detachedfrom the host, apart from performing host-internal tasks they shall also callsensor driver's .init and .release methods respectively. .suspend and .resumemethods implement host's power-management functionality and its theirresponsibility to call respective sensor's methods. .try_bus_param and.set_bus_param are used to negotiate physical connection parameters between thehost and the sensor. .init_videobuf is called by soc-camera core when avideo-device is opened, further video-buffer management is implemented completelyby the specific camera host driver. The rest of the methods are called fromrespective V4L2 operations.Camera API----------Sensor drivers can use struct soc_camera_link, typically provided by theplatform, 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 areused to add a sensor driver to or remove one from the system. The registrationfunction 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 bythe soc-camera core, when a camera is matched against or removed from a camerahost bus, .init, .release, .suspend, and .resume are called from the camera hostdriver as discussed above. Other members of this struct provide respective V4L2functionality.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>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -