Hi Laurent,
<snip>
+static void vsp1_rpf_configure_autofld(struct vsp1_rwpf *rpf,
struct vsp1_dl_ext_cmd *cmd)
+{
- const struct v4l2_pix_format_mplane *format = &rpf->format;
- struct vsp1_extcmd_auto_fld_body *auto_fld = cmd->data;
- u32 offset_y, offset_c;
- /* Re-index our auto_fld to match the current RPF */
s/RPF/RPF./
Fixed.
- auto_fld = &auto_fld[rpf->entity.index];
- auto_fld->top_y0 = rpf->mem.addr[0];
- auto_fld->top_c0 = rpf->mem.addr[1];
- auto_fld->top_c1 = rpf->mem.addr[2];
- offset_y = format->plane_fmt[0].bytesperline;
- offset_c = format->plane_fmt[1].bytesperline;
- auto_fld->bottom_y0 = rpf->mem.addr[0] + offset_y;
- auto_fld->bottom_c0 = rpf->mem.addr[1] + offset_c;
- auto_fld->bottom_c1 = rpf->mem.addr[2] + offset_c;
- cmd->flags |= VSP1_DL_EXT_AUTOFLD_INT;
- cmd->flags |= BIT(16 + rpf->entity.index);
Do you expect some flags to already be set ? If not, couldn't we assign the value to the field instead of OR'ing it ?
No, I think you are correct. Moved to a single expression setting the cmd->flags in one line.
Ahem.... no - of course these flags have to be OR-ed in. Because it potentially updates a single command object for multiple RPFs.
The flags get reset to 0 when the command object is discarded in vsp1_dl_ext_cmd_put()
+}
<snip>
-- Kieran