5.4.5 摄像头的驱动程序

MSM的摄像头系统构成的方式为经典的Camera驱动+Sensor驱动方式。其驱动程序是基于Video for Linux2的摄像头驱动程序。

除了v4l2的共用部分以外,msm的主要文件是在drivers/media/video/msm/目录中。包含了msm_v4l2.c,msm_camera.c,s5k3e2fx.c,msm_vfe8x_proc.c等文件。

msm_camera.c是公用的库函数,创建出/dev/msm_camera中的各个设备文件:

    # ls -l /dev/msm_camera
    crw-rw---- system   system   249,   2 2010-01-13 18:39 frame0
    crw-rw---- system   system   249,   1 2010-01-13 18:39 config0
    crw-rw---- system   system   249,   0 2010-01-13 18:39 control0

这里包含了3个自定义的字符设备:frame0为帧数据设备,config0为配置设备,control0为控制设备。

include/media目录中的msm_camera.h,是MSM摄像头相关的头文件,其中定义了各种额外的ioctl命令。

msm_v4l2.c是v4l2驱动程序的实现文件,实现了标准的Video for Linux 2的驱动程序,它实际上是在调用msm_camera.c中内容的基础上实现的。

s5k3e2fx是摄像头传感器的驱动程序,platform_driver的名称为msm_camera_s5k3e2fx,这个名称和board-mahimahi.c中定义的platform_device相匹配。

s5k3e2fx是连接在i2c总线上的,其地址为0-0010,在sys文件系统中,可以看到如下信息:

    # cat /sys/bus/i2c/devices/0-0010/name
    s5k3e2fx