浅谈RK平台vicap的复位机制

         当前vicap驱动存在复位机制,该机制用于当vicap 出现异常情况时,对 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 failed\n", 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 = < 3 2 10 1000 5>;之前模式0,1,2都试过了,log中有看到reset success,但是sensor驱动中没有进入case RKMODULE_SET_QUICK_STREAM;后面将模式修改为3,即热插拔模式(可能兼容了前面的一些模式),进行复位时就会进入RKMODULE_SET_QUICK_STREAM;此时不会出现分屏了。

        需要注意一点的是当vicap出现异常报错时,90%以上都能通过复位机制解决,剩下10%排查硬件!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值