Loading drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +22 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,18 @@ static int msm_isp_free_buf_handle(struct msm_isp_buf_mgr *buf_mgr, msm_isp_get_bufq(buf_mgr, bufq_handle); if (!bufq) return -EINVAL; memset(bufq, 0, sizeof(struct msm_isp_bufq)); /* Set everything except lock to 0 */ bufq->bufq_handle = 0; bufq->bufs = 0; bufq->session_id = 0; bufq->stream_id = 0; bufq->num_bufs = 0; bufq->buf_type = 0; memset(&bufq->head, 0, sizeof(bufq->head)); memset(&bufq->share_head, 0, sizeof(bufq->share_head)); bufq->buf_client_count = 0; return 0; } Loading Loading @@ -1023,19 +1034,25 @@ static int msm_isp_release_bufq(struct msm_isp_buf_mgr *buf_mgr, uint32_t bufq_handle) { struct msm_isp_bufq *bufq = NULL; unsigned long flags; int rc = -1; mutex_lock(&buf_mgr->lock); bufq = msm_isp_get_bufq(buf_mgr, bufq_handle); if (!bufq) { pr_err("Invalid bufq release\n"); mutex_unlock(&buf_mgr->lock); return rc; } msm_isp_buf_unprepare_all(buf_mgr, bufq_handle); spin_lock_irqsave(&bufq->bufq_lock, flags); kfree(bufq->bufs); msm_isp_free_buf_handle(buf_mgr, bufq_handle); spin_unlock_irqrestore(&bufq->bufq_lock, flags); mutex_unlock(&buf_mgr->lock); return 0; } Loading @@ -1043,15 +1060,19 @@ static void msm_isp_release_all_bufq( struct msm_isp_buf_mgr *buf_mgr) { struct msm_isp_bufq *bufq = NULL; unsigned long flags; int i; for (i = 0; i < buf_mgr->num_buf_q; i++) { bufq = &buf_mgr->bufq[i]; if (!bufq->bufq_handle) continue; msm_isp_buf_unprepare_all(buf_mgr, bufq->bufq_handle); spin_lock_irqsave(&bufq->bufq_lock, flags); kfree(bufq->bufs); msm_isp_free_buf_handle(buf_mgr, bufq->bufq_handle); spin_unlock_irqrestore(&bufq->bufq_lock, flags); } } Loading drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +14 −0 Original line number Diff line number Diff line Loading @@ -2165,6 +2165,13 @@ void msm_isp_process_axi_irq(struct vfe_device *vfe_dev, } stream_idx = HANDLE_TO_IDX(comp_info->stream_handle); stream_info = &axi_data->stream_info[stream_idx]; if (stream_info->state == INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } ISP_DBG("%s: stream id %x frame id: 0x%x\n", __func__, stream_info->stream_id, stream_info->frame_id); stream_info->frame_id++; Loading Loading @@ -2202,6 +2209,13 @@ void msm_isp_process_axi_irq(struct vfe_device *vfe_dev, continue; } stream_info = &axi_data->stream_info[stream_idx]; if (stream_info->state == INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } ISP_DBG("%s: stream id %x frame id: 0x%x\n", __func__, stream_info->stream_id, stream_info->frame_id); stream_info->frame_id++; Loading drivers/media/platform/msm/camera_v2/isp/msm_isp_stats_util.c +7 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ static int32_t msm_isp_stats_configure(struct vfe_device *vfe_dev, if (!(stats_irq_mask & (1 << i))) continue; stream_info = &vfe_dev->stats_data.stream_info[i]; if (stream_info->state == STATS_INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } done_buf = NULL; msm_isp_stats_cfg_ping_pong_address(vfe_dev, stream_info, pingpong_status, &done_buf); Loading Loading
drivers/media/platform/msm/camera_v2/isp/msm_buf_mgr.c +22 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,18 @@ static int msm_isp_free_buf_handle(struct msm_isp_buf_mgr *buf_mgr, msm_isp_get_bufq(buf_mgr, bufq_handle); if (!bufq) return -EINVAL; memset(bufq, 0, sizeof(struct msm_isp_bufq)); /* Set everything except lock to 0 */ bufq->bufq_handle = 0; bufq->bufs = 0; bufq->session_id = 0; bufq->stream_id = 0; bufq->num_bufs = 0; bufq->buf_type = 0; memset(&bufq->head, 0, sizeof(bufq->head)); memset(&bufq->share_head, 0, sizeof(bufq->share_head)); bufq->buf_client_count = 0; return 0; } Loading Loading @@ -1023,19 +1034,25 @@ static int msm_isp_release_bufq(struct msm_isp_buf_mgr *buf_mgr, uint32_t bufq_handle) { struct msm_isp_bufq *bufq = NULL; unsigned long flags; int rc = -1; mutex_lock(&buf_mgr->lock); bufq = msm_isp_get_bufq(buf_mgr, bufq_handle); if (!bufq) { pr_err("Invalid bufq release\n"); mutex_unlock(&buf_mgr->lock); return rc; } msm_isp_buf_unprepare_all(buf_mgr, bufq_handle); spin_lock_irqsave(&bufq->bufq_lock, flags); kfree(bufq->bufs); msm_isp_free_buf_handle(buf_mgr, bufq_handle); spin_unlock_irqrestore(&bufq->bufq_lock, flags); mutex_unlock(&buf_mgr->lock); return 0; } Loading @@ -1043,15 +1060,19 @@ static void msm_isp_release_all_bufq( struct msm_isp_buf_mgr *buf_mgr) { struct msm_isp_bufq *bufq = NULL; unsigned long flags; int i; for (i = 0; i < buf_mgr->num_buf_q; i++) { bufq = &buf_mgr->bufq[i]; if (!bufq->bufq_handle) continue; msm_isp_buf_unprepare_all(buf_mgr, bufq->bufq_handle); spin_lock_irqsave(&bufq->bufq_lock, flags); kfree(bufq->bufs); msm_isp_free_buf_handle(buf_mgr, bufq->bufq_handle); spin_unlock_irqrestore(&bufq->bufq_lock, flags); } } Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp_axi_util.c +14 −0 Original line number Diff line number Diff line Loading @@ -2165,6 +2165,13 @@ void msm_isp_process_axi_irq(struct vfe_device *vfe_dev, } stream_idx = HANDLE_TO_IDX(comp_info->stream_handle); stream_info = &axi_data->stream_info[stream_idx]; if (stream_info->state == INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } ISP_DBG("%s: stream id %x frame id: 0x%x\n", __func__, stream_info->stream_id, stream_info->frame_id); stream_info->frame_id++; Loading Loading @@ -2202,6 +2209,13 @@ void msm_isp_process_axi_irq(struct vfe_device *vfe_dev, continue; } stream_info = &axi_data->stream_info[stream_idx]; if (stream_info->state == INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } ISP_DBG("%s: stream id %x frame id: 0x%x\n", __func__, stream_info->stream_id, stream_info->frame_id); stream_info->frame_id++; Loading
drivers/media/platform/msm/camera_v2/isp/msm_isp_stats_util.c +7 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,13 @@ static int32_t msm_isp_stats_configure(struct vfe_device *vfe_dev, if (!(stats_irq_mask & (1 << i))) continue; stream_info = &vfe_dev->stats_data.stream_info[i]; if (stream_info->state == STATS_INACTIVE) { pr_warn("%s: Warning! Stream already inactive. Drop irq handling\n", __func__); continue; } done_buf = NULL; msm_isp_stats_cfg_ping_pong_address(vfe_dev, stream_info, pingpong_status, &done_buf); Loading