最近调一个RK3568的新板子,板子其它接口功能都调试ok。可唯独在适配显示时发现,HDMI和MIPI显示均出现异常。当系统启动要进入桌面时候内核就开始报错。
因为这套源码之前在其它的板子上适配过,所以第一反应就是硬件问题或者是那个电压没配置对,但是对于HDMI和MIPI这样的显示,外围也没啥电路,基本都是信号经过ESD保护后就直接连接到了屏幕上了,而且和之前的电路做了对比也都一样,万用表测量外围的电压也未发现异常。无奈只能把log拉出来再认真的看看。这次还真发现了点问题。
log中看到vp0到vp2这里都是"plane phy id:-1",因为设置HDMI是显示在vp0上的,所以这里vp0的id为-1显然是不对的。将之前正常的板子log抓出来对于了一下,结果和我想的一样。
因为这里mipi显示用的是vp1,可以看到这里vp1的id被设置成了4。在内核的“drivers/gpu/drm/rockchip/rockchip_drm_vop2.c”的vop2_bind函数中可以找到这段log的输出。代码如下:
可以看出mask和id对应的值来自于dts中“rockchip,plane-mask”和“rockchip,primary-plane”两个属性。但是在内核dts中其实是找不到这两个属性配置的。那么这两个属性是从什么地方来的呢?并且可以确定前一个OK的版本这两属性也没在内核中配置过,那为啥就能正常显示呢?有联想到这次的uboot和内核是来自于两个不同的SDK中,而且在之前也遇到过在uboot中对dts做修改的情况,所以果断编译了一个新的uboot进行验证,结果显示OK了。并且在uboot中也确实找到了关于这两个属性的设置。其代码位于uboot的“drivers/video/drm/rockchip_vop2.c”中。
至此HDMI和MIPI显示正常,问题完美解决,