希望趕快有生力軍加入,可以補缺額恢復戰力。
1. omap3isp driver
v4l2 因為已經有包進 i2c 介面,因此我們在新增 camera driver 時,就要宣告
~linux/arch/arm/mach-omap2/devices.c 中 omap3_init_camera() 所需要的
struct isp_platform_data *pdata, 會用來註冊 omap3isp device 搭配 omap3isp driver
v4l2 因為已經有包進 i2c 介面,因此我們在新增 camera driver 時,就要宣告
~linux/arch/arm/mach-omap2/devices.c 中 omap3_init_camera() 所需要的
struct isp_platform_data *pdata, 會用來註冊 omap3isp device 搭配 omap3isp driver
使用
其中 isp_platform_data 定義在 include/media/omap3isp.h 中,裡面又需要定義 isp_v4l2_subdevs_group 也就是單一 camera sub device 的 I2C 與 Camera InterFace 定義,如果有第二個 v4l2 subdev 就是新增一個
isp_v4l2_subdevs_group,依此類推。
Camera I2C 是定義在 struct isp_subdev_i2c_board_info *subdevs; 以及 interface,如果是用 parallel(疑?還沒進化到 MIPI),就定義 bus.parallel 當然也要設定裡面的 bridge 介面參數與 VS, HS CLK 高低準位等。
i2c_board_info 中另一個要定義的是 .platform_data 指到 camera sensor 的 pdata 參考 include/media/mt9p031.h 定義 set_xclk 由 SoC 給 camera sensor mclk 的開關,reset 定義 reset 的 GPIO, ext_freq 定義 mclk 頻率, target_freq 定義 pixel clock 頻率
2. camera sensor driver
~linux/drivers/media/video/mt9p031.c
mt9p031_probe()
註冊 mt9p031->subdev.ctrl_handler = &mt9p031->ctrls;
v4l2_i2c_subdev_init(&mt9p031->subdev, client, &mt9p031_subdev_ops);
掛載 v4l2 的 i2c 介面 device, 另外也有定義 spi 介面的註冊方式
crop 與 format 的 window size, pixel format
而 Linux 的 Media controller 目前除了可以控制 camera, display 等 video device 外,也可以包括 audio 等
3. media-ctl
media controller, build kernel 需要加 media controller driver, mknod /dev/media0 c 252 0
設定各個 v4l2 sub device(entity) 的各個 input/output pad 的 pixel format, picture width, height
流程大致上是
media-ctl -r // reset previous links
media-ctl -l '"mt9p031 2-00cc":0->"OMAP3 ISP CCDC":0[1]'
media-ctl -l '"OMAP3 ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]'
media-ctl -d /dev/media0 -V '"mt9p031 2-00cc":0 [fmt:YUYV/1024x768]'
media-ctl -d /dev/media0 -V '"OMAP3 ISP CCDC":0 [fmt:YUYV/1024x768]'
media-ctl -d /dev/media0 -V '"OMAP3 ISP CCDC":1 [fmt:YUYV/1024x768]'
yavta -f YUYV -s 1024x768 -n 2 --capture=4 -F `media-ctl -e "OMAP3 ISP CCDC output"`
當然也可以串 previewer, resizer,但這就要看各個 entity(sub device) 的 input/output pads
4. references:
~linux/Documentation/video4linux/omap3isp.txt
~linux/include/linux/omap3isp.h
其中 isp_platform_data 定義在 include/media/omap3isp.h 中,裡面又需要定義 isp_v4l2_subdevs_group 也就是單一 camera sub device 的 I2C 與 Camera InterFace 定義,如果有第二個 v4l2 subdev 就是新增一個
isp_v4l2_subdevs_group,依此類推。
Camera I2C 是定義在 struct isp_subdev_i2c_board_info *subdevs; 以及 interface,如果是用 parallel(疑?還沒進化到 MIPI),就定義 bus.parallel 當然也要設定裡面的 bridge 介面參數與 VS, HS CLK 高低準位等。
i2c_board_info 中另一個要定義的是 .platform_data 指到 camera sensor 的 pdata 參考 include/media/mt9p031.h 定義 set_xclk 由 SoC 給 camera sensor mclk 的開關,reset 定義 reset 的 GPIO, ext_freq 定義 mclk 頻率, target_freq 定義 pixel clock 頻率
2. camera sensor driver
~linux/drivers/media/video/mt9p031.c
mt9p031_probe()
註冊 mt9p031->subdev.ctrl_handler = &mt9p031->ctrls;
v4l2_i2c_subdev_init(&mt9p031->subdev, client, &mt9p031_subdev_ops);
掛載 v4l2 的 i2c 介面 device, 另外也有定義 spi 介面的註冊方式
crop 與 format 的 window size, pixel format
而 Linux 的 Media controller 目前除了可以控制 camera, display 等 video device 外,也可以包括 audio 等
3. media-ctl
media controller, build kernel 需要加 media controller driver, mknod /dev/media0 c 252 0
設定各個 v4l2 sub device(entity) 的各個 input/output pad 的 pixel format, picture width, height
流程大致上是
media-ctl -r // reset previous links
media-ctl -l '"mt9p031 2-00cc":0->"OMAP3 ISP CCDC":0[1]'
media-ctl -l '"OMAP3 ISP CCDC":1->"OMAP3 ISP CCDC output":0[1]'
media-ctl -d /dev/media0 -V '"mt9p031 2-00cc":0 [fmt:YUYV/1024x768]'
media-ctl -d /dev/media0 -V '"OMAP3 ISP CCDC":0 [fmt:YUYV/1024x768]'
media-ctl -d /dev/media0 -V '"OMAP3 ISP CCDC":1 [fmt:YUYV/1024x768]'
yavta -f YUYV -s 1024x768 -n 2 --capture=4 -F `media-ctl -e "OMAP3 ISP CCDC output"`
當然也可以串 previewer, resizer,但這就要看各個 entity(sub device) 的 input/output pads
4. references:
~linux/Documentation/video4linux/omap3isp.txt
~linux/include/linux/omap3isp.h
http://git.ideasonboard.org/?p=media-ctl.git;a=summary 其中有 media-ctl git tree
https://gitorious.org/omap4-v4l2-camera 其中有 yavta git tree
git://gitorious.org/omap4-v4l2-camera/yavta.git
http://processors.wiki.ti.com/index.php/UserGuideOmap35xCaptureDriver_PSP_04.02.00.07
http://www.linuxtv.org/downloads/presentations/summit_jun_2010/20100206-fosdem.pdf
http://processors.wiki.ti.com/index.php/Writing_V4L2_Media_Controller_Applications_on_Dm36x_Video_Capture