hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/media/platform/vsp1/vsp1_rpf.c
....@@ -57,6 +57,7 @@
5757
5858 static void rpf_configure_stream(struct vsp1_entity *entity,
5959 struct vsp1_pipeline *pipe,
60
+ struct vsp1_dl_list *dl,
6061 struct vsp1_dl_body *dlb)
6162 {
6263 struct vsp1_rwpf *rpf = to_rwpf(&entity->subdev);
....@@ -108,7 +109,7 @@
108109 vsp1_rpf_write(rpf, dlb, VI6_RPF_INFMT, infmt);
109110 vsp1_rpf_write(rpf, dlb, VI6_RPF_DSWAP, fmtinfo->swap);
110111
111
- /* Output location */
112
+ /* Output location. */
112113 if (pipe->brx) {
113114 const struct v4l2_rect *compose;
114115
....@@ -290,11 +291,11 @@
290291 + crop.left * fmtinfo->bpp[0] / 8;
291292
292293 if (format->num_planes > 1) {
294
+ unsigned int bpl = format->plane_fmt[1].bytesperline;
293295 unsigned int offset;
294296
295
- offset = crop.top * format->plane_fmt[1].bytesperline
296
- + crop.left / fmtinfo->hsub
297
- * fmtinfo->bpp[1] / 8;
297
+ offset = crop.top / fmtinfo->vsub * bpl
298
+ + crop.left / fmtinfo->hsub * fmtinfo->bpp[1] / 8;
298299 mem.addr[1] += offset;
299300 mem.addr[2] += offset;
300301 }
....@@ -309,7 +310,7 @@
309310
310311 /*
311312 * Interlaced pipelines will use the extended pre-cmd to process
312
- * SRCM_ADDR_{Y,C0,C1}
313
+ * SRCM_ADDR_{Y,C0,C1}.
313314 */
314315 if (pipe->interlaced) {
315316 vsp1_rpf_configure_autofld(rpf, dl);