当前vicap驱动存在复位机制,该机制用于当vicap
出现异常情况时,对
vicap
进行
cru
复位操作。复位机制的4种模式,0,1,2,3在RK驱动文档里有详细介绍;
出现异常情况时,对
vicap
进行
cru
复位操作。复位机制的4种模式,0,1,2,3在RK驱动文档里有详细介绍;
当进行rkcif_do_reset_work时,就会调用case RKMODULE_SET_QUICK_STREAM,可以在驱动中加下log打印,看reset success时,是否进入该case;
在cif/capture.c
ret = v4l2_subdev_call(p->subdevs[i], core, ioctl,RKMODULE_SET_QUICK_STREAM, &on);
if (ret)
v4l2_err(&cif_dev->v4l2_dev, "quick stream off subdev:%s failedn", p->subdevs[i]->name);
***************************************************
而 RKMODULE_SET_QUICK_STREAM 主要是操作stream on和stream off寄存器
int XXXX_set_quick_stream(struct i2c_client *client, u32 stream)
{
if (stream) {
techpoint_write_reg(client, 0x40, 0x8);
techpoint_write_reg(client, 0x23, 0x0);
} else {
techpoint_write_reg(client, 0x40, 0x8);
techpoint_write_reg(client, 0x23, 0x2);
}
return 0;
}
之前调试遇到客户,在PC端使用会议软件通话时概率性出现csi fifo overflow的问题,画面死机,uvc应用挂了,uac应用还在;也就是预览画面是正常的,只是启动uac时,会出现分屏的现象;
最后加入复位机制:rockchip, cif-monitor = ;之前模式0,1,2都试过了,log中有看到reset success,但是sensor驱动中没有进入case RKMODULE_SET_QUICK_STREAM;后面将模式修改为3,即热插拔模式(可能兼容了前面的一些模式),进行复位时就会进入RKMODULE_SET_QUICK_STREAM;此时不会出现分屏了。
需要注意一点的是当vicap出现异常报错时,90%以上都能通过复位机制解决,剩下10%排查硬件!
本文章来源于互联网,如有侵权,请联系删除!原文地址:浅谈RK平台vicap的复位机制
作者:马智 物联网智库 整理发布 转载请注明来源和出处 —— 【导读】—— 物联网智库将在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章——《国内外物联网平台初探》。 物联网智库将在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章…