1. 文档适用平台
2. Camera 文件目录说明
Linux Kernel-4.4: |
|arch/arm64/boot/dts/rockchip DTS 配置文件
|drivers/media
|
|platform/rockchip/isp1 RKISP 驱动
|── capture.c 包含 mp/sp 的配置及 vb2,帧中断处理
|── dev.c 包含 probe、异步注册、clock、pipeline、iommu 及 media/v4l2
Framework
|── isp_params.c 3A 相关参数设置
|── isp_stats.c 3A 相关统计
|── mipi_dphy_sy.c mipi dphy 驱动,它独立于 isp 驱动,将计划放在其它目录
|── regs.c 寄存器相关的读写操作
|── rkisp1.c 对应 isp_sd entity 节点,包含从 mipi 接收数据,并有 crop 功能
|i2c/ Camera Sensor 驱动
3. RKISP 驱动说明
RKISP 驱动主要是依据 v4l2 / media framework 实现硬件的配置、中断处理、控制 buffer轮转,以及控制 subdevice(如 mipi dphy 及 sensor)的上下电等功能。
下面的框图描述了 RKISP1 驱动的拓扑结构。
4. Camera 设备注册(DTS)
RKISP 的 DTS 节点在 kernel 源码中有文档说明,它位于 Documentation/devicetree/bindings/media/rockchip-isp1.txt。
mipi dphy 驱动节点也在 kernel 源码中有文档说明,它位于 Documentation/devicetree/bindings/media/rockchip-mipi-dphy.txt
4.1 MIPI Sensor 注册
下面以 rk3399 isp0 和
OV13850 为例进行说明。
ov13850: ov13850@10 {
compatible = "ovti,ov13850"; // 需要与驱动中的匹配字符串一致
status = "okay";
reg = <0x10>; // sensor I2C 设备地址
clocks = <&cru SCLK_CIF_OUT>; // sensor clickin 配置
clock-names = "xvclk";
reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
// reset 管脚分配及有效电平
pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
// power 管脚分配及有效电平
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>; // pinctl 设置
port {
ucam_out0: endpoint {
remote-endpoint = <&mipi_in_ucam0>;
// mipi dphy 端的 port 名
data-lanes = <1 2>;
// mipi lane 数,1lane 为 <1>, 4lane 为 <1 2 3 4>
};
......
4.2 DVP Sensor 注册 以 rk3326 isp 和
GC0312/
GC2145 为例进行说明。
&i2c2 {
status = "okay";
gc0312@21 {
status = "okay";
compatible = "galaxycore,gc0312"; // 需要与驱动中的匹配字符串一致
reg = <0x21>; // sensor I2C 设备地址
pinctrl-names = "default";
pinctrl-0 = <&cif_clkout_m0>; // pinctl 设置
clocks = <&cru SCLK_CIF_OUT>; // sensor clickin 配置
clock-names = "xvclk";
avdd-supply = <&vcc2v8_dvp>; // sensor 电源配置
dovdd-supply = <&vcc1v8_dvp>;
dvdd-supply = <&vcc1v8_dvp>;
pwdn-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>;
// power 管脚分配及有效电平
......
更多详细内容请下载附件查看