cphy是3lane的(cphy是3根线为1 lane,6线使用的2lane;没有clk线,时钟同步是在data线中进行的;因为3线为1 lane,不超过原来PHY使用的最多10线,所以cphy最多为9线,共3lane)
3588平台目前调过cphy接口的有ov50c40和7911,可参考文档(kernel-5.10\Documentation\devicetree\bindings\media\i2c\lt7911uxc.txt),dts配置注意加个bus-type以及lane数需要更改,具体如下
bus-type的解析在这份文件里v4l2-core/v4l2-fwnode.c,
调试imx766时,log报如下错误 Only CSI2 type is currently supported,找到这句报错所在的源码位置,drivers/phy/rockchip/phy-rockchip-csi2-dphy.c,很明显这份SDK代码没有针对CPHY的解析,所以走到了else,升级版本后,是有CPHY的解析操作;
dts配置正确后,media下面也正常挂载了imx766,然后v4l2取流,就一直timeout;首先会怀疑硬件的问题,先确认下3组cphy连接的pin有没对上,然后尽量靠近主控测信号,可以在主控附近刮线是最好,如下图所示;还有可以测下是否有阻抗,阻抗是否一致,可以判断是否有的地方可能存在虚焊或短路之类的情况,先确保硬件通路没问题。
硬件测试了从模组到主板的连线,各信号连接都正确,并且主板端,9个CPHY点对地阻抗都是1.5M欧左右,说明CPU的焊接没问题。
使用io命令查看寄存器,看下phy状态寄存器,lane数是否对上(cphy不会像dphy一样有stopstate 0 1变化),因为cphy是3lane的,所以如下所示(偏移地址0014),是对上的;
后面查看了imx766的初始化寄存器,只有这个地方有写这个寄存器,也显然不对,所以修改下。