Merge commit 'a4c4ab2f3a2fa197a3796f2a8a5f92eca98fe969'

* commit 'a4c4ab2f3a2fa197a3796f2a8a5f92eca98fe969':
  media: rockchip: vicap fix current files is NULL when release fd
  video: rockchip: rga3: clear 'ret' on reset request
  media: i2c: os04a10: Fix lockdep warning
  media: i2c: imx464: Fix lockdep warning
  drm/rockchip: vop2: Fix sharp was disabled by mistake
  media: rockchip: vpss: fix online use channel assigned to offline

Change-Id: I6344c78451bdbd37863145f2ba96fb6d1463a33a
This commit is contained in:
Tao Huang
2024-05-10 20:20:13 +08:00
6 changed files with 22 additions and 7 deletions

View File

@@ -11543,6 +11543,8 @@ static void vop2_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_atomic_stat
struct drm_atomic_state *old_state = old_cstate->state;
struct vop2_video_port *vp = to_vop2_video_port(crtc);
struct vop2 *vop2 = vp->vop2;
const struct vop2_data *vop2_data = vop2->data;
const struct vop2_video_port_data *vp_data = &vop2_data->vp[vp->id];
struct drm_plane_state *old_pstate;
struct drm_plane *plane;
unsigned long flags;
@@ -11614,7 +11616,8 @@ static void vop2_crtc_atomic_flush(struct drm_crtc *crtc, struct drm_atomic_stat
VOP_MODULE_SET(vop2, vp, cubic_lut_update_en, 0);
}
vop2_post_sharp_config(crtc);
if (vp_data->feature & VOP_FEATURE_POST_SHARP)
vop2_post_sharp_config(crtc);
if (vcstate->line_flag)
vop2_crtc_enable_line_flag_event(crtc, vcstate->line_flag);

View File

@@ -3041,7 +3041,7 @@ static int IMX464_initialize_controls(struct IMX464 *IMX464)
IMX464->link_freq = v4l2_ctrl_new_int_menu(handler,
NULL, V4L2_CID_LINK_FREQ,
1, 0, link_freq_menu_items);
__v4l2_ctrl_s_ctrl(IMX464->link_freq,
v4l2_ctrl_s_ctrl(IMX464->link_freq,
IMX464->cur_mode->mipi_freq_idx);
pixel_rate = (u32)link_freq_menu_items[mode->mipi_freq_idx] / mode->bpp * 2 *
IMX464->bus_cfg.bus.mipi_csi2.num_data_lanes;

View File

@@ -2521,7 +2521,7 @@ static int os04a10_initialize_controls(struct os04a10 *os04a10)
0, PIXEL_RATE_WITH_648M,
1, dst_pixel_rate);
__v4l2_ctrl_s_ctrl(os04a10->link_freq, dst_link_freq);
v4l2_ctrl_s_ctrl(os04a10->link_freq, dst_link_freq);
h_blank = mode->hts_def - mode->width;
os04a10->hblank = v4l2_ctrl_new_std(handler, NULL, V4L2_CID_HBLANK,

View File

@@ -5080,6 +5080,7 @@ static void rkcif_free_fence(struct rkcif_stream *stream)
unsigned long lock_flags = 0;
struct rkcif_fence *vb_fence, *done_fence;
struct v4l2_device *v4l2_dev = &stream->cifdev->v4l2_dev;
struct files_struct *files = current->files;
LIST_HEAD(local_list);
spin_lock_irqsave(&stream->fence_lock, lock_flags);
@@ -5100,8 +5101,10 @@ static void rkcif_free_fence(struct rkcif_stream *stream)
v4l2_dbg(2, rkcif_debug, v4l2_dev, "%s: free qbuf_fence fd:%d\n",
__func__, vb_fence->fence_fd);
dma_fence_put(vb_fence->fence);
put_unused_fd(vb_fence->fence_fd);
close_fd(vb_fence->fence_fd);
if (files) {
put_unused_fd(vb_fence->fence_fd);
close_fd(vb_fence->fence_fd);
}
kfree(vb_fence);
}
@@ -5115,8 +5118,10 @@ static void rkcif_free_fence(struct rkcif_stream *stream)
v4l2_dbg(2, rkcif_debug, v4l2_dev, "%s: free done_fence fd:%d\n",
__func__, done_fence->fence_fd);
dma_fence_put(done_fence->fence);
put_unused_fd(done_fence->fence_fd);
close_fd(done_fence->fence_fd);
if (files) {
put_unused_fd(done_fence->fence_fd);
close_fd(done_fence->fence_fd);
}
kfree(done_fence);
}
}

View File

@@ -1206,6 +1206,11 @@ static int rkvpss_start_streaming(struct vb2_queue *queue, unsigned int count)
goto free_buf_queue;
}
if (hw->is_ofl_ch[stream->id]) {
v4l2_err(&dev->v4l2_dev, "channel[%d] already assigned to offline", stream->id);
goto free_buf_queue;
}
rkvpss_pipeline_open(dev);
ret = rkvpss_stream_start(stream);

View File

@@ -1130,6 +1130,7 @@ int rga_request_submit(struct rga_request *request)
request->is_done = false;
request->finished_task_count = 0;
request->failed_task_count = 0;
request->ret = 0;
request->current_mm = current_mm;
/* Unlock after ensuring that the current request will not be resubmitted. */
@@ -1236,6 +1237,7 @@ int rga_request_mpi_submit(struct rga_req *req, struct rga_request *request)
request->is_done = false;
request->finished_task_count = 0;
request->failed_task_count = 0;
request->ret = 0;
spin_unlock_irqrestore(&request->lock, flags);