IMX6Q camera驅動分析 (4)

本文結合項目實際需求作一個關於設備驅動的分析,如何新加一個Camera設備數組

這個項目使用了一個並口攝像頭信號到MCU。具體原理框圖以下函數

 

 Camera數據流向是 sensor -->913串行器----->914解串器------>並口數據--->imx6qspa

 

在設備樹上的配置以下:code

&i2c2{ #address-cells = <1>; #size-cells = <0>; status = "okay"; ds914desilizer:ds914desilizer@0x60{ compatible = "ds914dseilizer,TI"; ipu=<1>; csi=<1>; reg=<0x60>; pinctrl-names = "default"; pinctrl-0 = <&pinctl_ipu_ds914>; width = <1280>; height = <720>; denominator = <25>; numerator =<1>; }; };

由於是一個i2c設備,因而掛載在i2c這個設備樹下,而且使能這個i2c,在裏面使能複用並口數據IO,設置分辨率等。blog

那麼看設備驅動作了什麼。接口

內核有一個OV5640的例子,因而對其改改就成咱們本身的了。ip

 

 

 

 國際慣例,是一個i2c驅動,註冊一個i2c_driver .io

 

 

設備驅動probe作的主要事情就是填充一個sensor_data 結構體並將其放入 v4l2_int_device 的 私有數據裏。這個私有數據之後被master 所用 ,也就是mxc_v4l2_capture.c的 cam_data ast

這個v4l2_int_device 是一個從類型設備(表明具體的sensor)class

而後 調用註冊函數 將其註冊,就是放入我第二篇說的那個鏈表中,用來與具體的master匹配,匹配成功後調用attach函數。

 

可見,寫一個設備驅動的話,最主要的就是生成一個v4l2_int_device 和 sensor_data 。

還有

 v4l2_int_ioctl_desc 這個 數組裏面的函數,在必定狀況時會被mxc_v4l2_capture.c所調用。

這麼作的緣由是爲了更好的實現設備與驅動的分離,驅動只要調接口,隨你設備是如何作的。

 具體代碼不放出來了,不方便透露。

相關文章
相關標籤/搜索