由于官方代码没有IMX291的驱动,所以想把IMX214的驱动进行移植,刚开始的做法跟这位仁兄差不多
http://developer.t-firefly.com/archiver/tid-1615.html?page=1
在cam_board.xml中增加的IMX291相关配置,根据hardware/rockchip/camera/SiliconImage/isi/drv/IMX214添加了一份IMX291,修改相关寄存器地址与值编译生成libisp_isi_drv_IMX291.so,然后上电发现Camsys驱动platform_driver_register后没有进入camsys_platform_probe函数,也就是说Camsys没跑起来,那后面的i2c操作没办法成功
修改dts需增加isp_mmu配置:
&isp0 {
status = "okay";
};
&isp1 {
status = "okay";
};
+&isp0_mmu {
+ status = "okay";
+};
+
+&isp1_mmu {
+ status = "okay";
+};
采用哪组 MIPI 接口,RST 脚,MCKL 时钟都是在cam_board.xml分别配phyIndex,SensorGpioRst,SensorMclk;
IMX291 需要 MCLK 输出为37.125MHz或者74.25MHz
但是发现<SensorMclk mclk="24000000" delay="1000"></SensorMclk>该时钟配置没生效
输出37.125MHz需要修改时钟源及分频方式
camsys跑起来了但是设备注册失败:
D CameraHal: Check IMX291 ID: reg: 0x16 val: 0x0 default: 0x2
E CameraHal: IMX291 device register failed!
这是驱动读取sensor id与设定默认值不匹配导致驱动注册失败,后来问了索尼的代理,原来imx291没有id,可通过读取其他寄存器默认值确认通讯情况
先在这立个帖子,如果有朋友也在RK上面移植新的camera驱动请私信或加Q47411296