/* *power off the csi module,clear the parameters */ static void amcsi_feclose(struct tvin_frontend_s *fe) { struct amcsi_dev_s *devp = container_of(fe, amcsi_dev_t, frontend); enum tvin_port_e port = devp->para.port; if((port != TVIN_PORT_MIPI)){ DPRINT("[mipi..]%s:invaild port %d.\n",__func__, port); return; } #if 0 devp->irq_num = INT_MIPI_PHY; //INT_CSI2_HOST; free_irq(devp->irq_num, (void *)devp); #if 0 devp->irq_num = INT_CSI2_HOST_2; free_irq(devp->irq_num, (void *)devp); #endif #endif devp->reset = 0; devp->reset_count = 0; del_timer_sync(&devp->t); am_mipi_csi2_uninit(); memset(&devp->para, 0, sizeof(vdin_parm_t)); }
static void stop_mipi_vdin(vdin_ops_privdata_t * data) { if(data->run_flag == true){ mipi_dbg("stop_mipi_vdin.\n"); am_mipi_csi2_uninit(); data->param.fmt_info.fmt= TVIN_SIG_FMT_NULL; data->run_flag = false; }else{ mipi_error("stop_mipi_vdin is not started yet. \n"); } return; }
static void csi2_vdin_check(vdin_ops_privdata_t* data) { data->watchdog_cnt++; if(data->watchdog_cnt > 20){ am_mipi_csi2_uninit(); data->hw_info.frame = NULL; data->mipi_vdin_skip = MIPI_SKIP_FRAME_NUM; data->reset_flag = 1; wake_up_interruptible(&data->complete); data->done_flag = true; am_mipi_csi2_init(&data->hw_info); data->watchdog_cnt = 0; data->param.status = TVIN_SIG_STATUS_NOSIG; mipi_error("[mipi_vdin]:csi2_vdin_check-- time out !!!!\n"); return ; } if (data->run_flag != true) mipi_error("csi2_vdin_check: mipi still not run. \n"); return ; }