Loading drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c +20 −0 Original line number Diff line number Diff line Loading @@ -365,6 +365,20 @@ static int msm_isp_update_fe_frame_id(struct vfe_device *vfe_dev, return rc; } static int msm_isp_restart_fe(struct vfe_device *vfe_dev, void *arg) { struct msm_vfe_restart_fe_cmd *rst_fe = arg; int rc = 0; /* * In case of overflow recovery * restart fetch engine */ if (rst_fe->restart_fe) vfe_dev->fetch_engine_info.is_busy = 1; return rc; } static int msm_isp_start_fetch_engine(struct vfe_device *vfe_dev, void *arg) { Loading Loading @@ -945,6 +959,12 @@ static long msm_isp_ioctl_unlocked(struct v4l2_subdev *sd, mutex_unlock(&vfe_dev->core_mutex); break; case VIDIOC_MSM_ISP_RESTART_FE: mutex_lock(&vfe_dev->core_mutex); rc = msm_isp_restart_fe(vfe_dev, arg); mutex_unlock(&vfe_dev->core_mutex); break; case VIDIOC_MSM_ISP_UPDATE_FE_FRAME_ID: mutex_lock(&vfe_dev->core_mutex); rc = msm_isp_update_fe_frame_id(vfe_dev, arg); Loading include/uapi/media/msmb_isp.h +9 −0 Original line number Diff line number Diff line Loading @@ -410,6 +410,10 @@ struct msm_vfe_axi_restart_cmd { uint32_t enable_camif; }; struct msm_vfe_restart_fe_cmd { uint32_t restart_fe; }; struct msm_vfe_axi_stream_update_cmd { uint32_t num_streams; enum msm_vfe_axi_stream_update_type update_type; Loading Loading @@ -896,6 +900,7 @@ enum msm_isp_ioctl_cmd_code { MSM_ISP_CFG_HW_STATE, MSM_ISP_AHB_CLK_CFG, MSM_ISP_UPDATE_FE_FRAME_ID, MSM_ISP_RESTART_FE, }; #define VIDIOC_MSM_VFE_REG_CFG \ Loading Loading @@ -978,6 +983,10 @@ enum msm_isp_ioctl_cmd_code { _IOWR('V', MSM_ISP_AXI_RESTART, \ struct msm_vfe_axi_restart_cmd) #define VIDIOC_MSM_ISP_RESTART_FE \ _IOWR('V', MSM_ISP_RESTART_FE,\ struct msm_vfe_restart_fe_cmd) #define VIDIOC_MSM_ISP_FETCH_ENG_START \ _IOWR('V', MSM_ISP_FETCH_ENG_START, \ struct msm_vfe_fetch_eng_start) Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp_util.c +20 −0 Original line number Diff line number Diff line Loading @@ -365,6 +365,20 @@ static int msm_isp_update_fe_frame_id(struct vfe_device *vfe_dev, return rc; } static int msm_isp_restart_fe(struct vfe_device *vfe_dev, void *arg) { struct msm_vfe_restart_fe_cmd *rst_fe = arg; int rc = 0; /* * In case of overflow recovery * restart fetch engine */ if (rst_fe->restart_fe) vfe_dev->fetch_engine_info.is_busy = 1; return rc; } static int msm_isp_start_fetch_engine(struct vfe_device *vfe_dev, void *arg) { Loading Loading @@ -945,6 +959,12 @@ static long msm_isp_ioctl_unlocked(struct v4l2_subdev *sd, mutex_unlock(&vfe_dev->core_mutex); break; case VIDIOC_MSM_ISP_RESTART_FE: mutex_lock(&vfe_dev->core_mutex); rc = msm_isp_restart_fe(vfe_dev, arg); mutex_unlock(&vfe_dev->core_mutex); break; case VIDIOC_MSM_ISP_UPDATE_FE_FRAME_ID: mutex_lock(&vfe_dev->core_mutex); rc = msm_isp_update_fe_frame_id(vfe_dev, arg); Loading
include/uapi/media/msmb_isp.h +9 −0 Original line number Diff line number Diff line Loading @@ -410,6 +410,10 @@ struct msm_vfe_axi_restart_cmd { uint32_t enable_camif; }; struct msm_vfe_restart_fe_cmd { uint32_t restart_fe; }; struct msm_vfe_axi_stream_update_cmd { uint32_t num_streams; enum msm_vfe_axi_stream_update_type update_type; Loading Loading @@ -896,6 +900,7 @@ enum msm_isp_ioctl_cmd_code { MSM_ISP_CFG_HW_STATE, MSM_ISP_AHB_CLK_CFG, MSM_ISP_UPDATE_FE_FRAME_ID, MSM_ISP_RESTART_FE, }; #define VIDIOC_MSM_VFE_REG_CFG \ Loading Loading @@ -978,6 +983,10 @@ enum msm_isp_ioctl_cmd_code { _IOWR('V', MSM_ISP_AXI_RESTART, \ struct msm_vfe_axi_restart_cmd) #define VIDIOC_MSM_ISP_RESTART_FE \ _IOWR('V', MSM_ISP_RESTART_FE,\ struct msm_vfe_restart_fe_cmd) #define VIDIOC_MSM_ISP_FETCH_ENG_START \ _IOWR('V', MSM_ISP_FETCH_ENG_START, \ struct msm_vfe_fetch_eng_start) Loading