高通SXR平台OV8856 Camera的bring up和debug总结

参考高通文档:Camera Sensor Driver Bring-up Guide

The camera sensor driver bringup consists of the following steps:
1.Locate the driver and module configuration XML files.
2. Generate the inary files.
3. Compile the build.

驱动和模块配置XML文件
vendor/qcom/proprietary/chi-cdk/vendor/sensor/default/ov8856/ov8856_sensor.xmlvendor/qcom/proprietary/chi-cdk/vendor/module/truly_ov8856_module.xml

硬件参数kernel dts files
arch/arm64/boot/dts/qcom/sdm670-camera-sensor-mtp.dtsi

编译相关文件
vendor/qcom/proprietary/common/config/device-vendor.mk
vendor/qcom/proprietary/chi-cdk/cdk/tools/buildbins.yaml
vendor/qcom/proprietary/chi-cdk/product.mk
vendor/qcom/proprietary/chi-cdk/vendor/Android.mk
对于这个型号的camera,高通提供的代码里面有这些相关的文件,我们只需要简单修改即可调试,如果你的平台对应的代码里面没有这些配置文件,那么可以让camera模组供应商提供。

ov8856_sensor.xml
这个xml文件主要是配置camera sensor的slave info信息,包括i2c从机地址、sensor ID、powerUp和powerDown时序等。高通SXR平台OV8856 Camera的bring up和debug总结_第1张图片
truly_ov8856_module.xml
这个xml主要用来配置camera驱动与dts节点的对应,sensor的name,camera模组的position(前置还是后置等)。
高通SXR平台OV8856 Camera的bring up和debug总结_第2张图片
sdm670-camera-sensor-mtp.dtsi
camera sensor对应的dts文件,主要用来配置camera sensor的硬件参数,比如vio、vdig、vana这几个ldo,clk和reset对应的gpio等等。
高通SXR平台OV8856 Camera的bring up和debug总结_第3张图片
buildbins.yaml
此文件决定要编译哪个camera sensor,要编译这个sensor对应的哪些xml文件。
高通SXR平台OV8856 Camera的bring up和debug总结_第4张图片
chi-cdk/vendor/Android.mk
需要包含对应camera的Android.mk
在这里插入图片描述
product.mk
在这里插入图片描述在这里插入图片描述

debug

问题一:通过查看log,发现ov8856对应的xml没有被解析
在ov8856_module.xml中,有个position的属性,可以配置为REAR, FRONT, REAR_AUX, FRONT_AUX, EXTERNAL,驱动代码的解析顺序是先解析position为REAR的xml,如果有就解析,解析完再解析position为REAR_AUX的xml,如果没有REAR就不会解析REAR_AUX而是解析position为FRONT的xml,而我的xml中配置为了REAR_AUX,所以一直得不到解析,改为REAR即可。
高通SXR平台OV8856 Camera的bring up和debug总结_第5张图片
问题二:按照bring up文档,把所有参数配置完毕,插上Camera模组,发现有一个芯片发烫,测量LDO没电
经与硬件工程师沟通,发烫的芯片是一个电源芯片,经排查是Camera模组对应在板子上面的connect原理图方向画反了,导致Camera模组插反了。所以在拿到模组进行调试之前一定要和硬件工程师反复确认Camera模组的fpc和板子的connect方向。

问题三:Camera仍然没有点亮,经用示波器测量,发现LDO都正常,但是CLK和reset的上电时序不正常,一直保持低电平
在驱动代码中加log发现CLK和reset对应的gpio在其他没有使用的设备树节点里面被定义了,导致这两个gpio被占用,在camera驱动中无法申请。只需要把其他节点中这两个gpio的配置去掉即可。

问题四:高通有很多的dtsi,导致qcom,cam-sensor@0这个节点可能在别的dtsi里面也有,而匹配的时候匹配到了其他dtsi里面的这个节点,导致加载的参数不对
高通的设备树代码里面有很多的dtsi,不知道为什么很多dtsi里面都有camera的节点,所以我们在debug的时候,把那些不用的都屏蔽掉,以便我们调试。

总结
费了九牛二虎之力,camera终于点亮了。总结一下debug camera的过程,第一先看log,保证所有xml被解析,并且正确加载参数;第二用示波器或者万用表测量上电时序,如果这些都正常,基本是就可以点亮了,至于后期的效果就交给tuning工程师来完成了。

你可能感兴趣的:(linux,Linux驱动)