| .. | .. |
|---|
| 57 | 57 | |
|---|
| 58 | 58 | static void rpf_configure_stream(struct vsp1_entity *entity, |
|---|
| 59 | 59 | struct vsp1_pipeline *pipe, |
|---|
| 60 | + struct vsp1_dl_list *dl, |
|---|
| 60 | 61 | struct vsp1_dl_body *dlb) |
|---|
| 61 | 62 | { |
|---|
| 62 | 63 | struct vsp1_rwpf *rpf = to_rwpf(&entity->subdev); |
|---|
| .. | .. |
|---|
| 108 | 109 | vsp1_rpf_write(rpf, dlb, VI6_RPF_INFMT, infmt); |
|---|
| 109 | 110 | vsp1_rpf_write(rpf, dlb, VI6_RPF_DSWAP, fmtinfo->swap); |
|---|
| 110 | 111 | |
|---|
| 111 | | - /* Output location */ |
|---|
| 112 | + /* Output location. */ |
|---|
| 112 | 113 | if (pipe->brx) { |
|---|
| 113 | 114 | const struct v4l2_rect *compose; |
|---|
| 114 | 115 | |
|---|
| .. | .. |
|---|
| 290 | 291 | + crop.left * fmtinfo->bpp[0] / 8; |
|---|
| 291 | 292 | |
|---|
| 292 | 293 | if (format->num_planes > 1) { |
|---|
| 294 | + unsigned int bpl = format->plane_fmt[1].bytesperline; |
|---|
| 293 | 295 | unsigned int offset; |
|---|
| 294 | 296 | |
|---|
| 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; |
|---|
| 298 | 299 | mem.addr[1] += offset; |
|---|
| 299 | 300 | mem.addr[2] += offset; |
|---|
| 300 | 301 | } |
|---|
| .. | .. |
|---|
| 309 | 310 | |
|---|
| 310 | 311 | /* |
|---|
| 311 | 312 | * Interlaced pipelines will use the extended pre-cmd to process |
|---|
| 312 | | - * SRCM_ADDR_{Y,C0,C1} |
|---|
| 313 | + * SRCM_ADDR_{Y,C0,C1}. |
|---|
| 313 | 314 | */ |
|---|
| 314 | 315 | if (pipe->interlaced) { |
|---|
| 315 | 316 | vsp1_rpf_configure_autofld(rpf, dl); |
|---|