On Wed, 2019-01-16 at 17:19 +0100, Hans Verkuil wrote:
> Hi Philipp,
> 
> A quick review (just a few small points):
> 
> On 1/8/19 4:38 PM, Philipp Zabel wrote:
[...]
> > +/*
> > + * Video ioctls
> > + */
> > +static int ipu_csc_scaler_querycap(struct file *file, void *priv,
> > +                              struct v4l2_capability *cap)
> > +{
> > +   strscpy(cap->driver, "imx-media-mem2mem", sizeof(cap->driver));
> > +   strscpy(cap->card, "imx-media-mem2mem", sizeof(cap->card));
> > +   strscpy(cap->bus_info, "platform:imx-media-mem2mem",
> 
> Please update the names to imx-media-csc-scaler.

Ok, will do.

> > +static int ipu_csc_scaler_g_selection(struct file *file, void *priv,
> > +                                 struct v4l2_selection *s)
> > +{
> > +   struct ipu_csc_scaler_ctx *ctx = fh_to_ctx(priv);
> > +   struct ipu_csc_scaler_q_data *q_data;
> > +
> > +   switch (s->target) {
> > +   case V4L2_SEL_TGT_CROP:
> > +   case V4L2_SEL_TGT_CROP_DEFAULT:
> > +   case V4L2_SEL_TGT_CROP_BOUNDS:
> > +           if (s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
> > +                   return -EINVAL;
> > +           q_data = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
> > +           break;
> > +   case V4L2_SEL_TGT_COMPOSE:
> > +   case V4L2_SEL_TGT_COMPOSE_DEFAULT:
> > +   case V4L2_SEL_TGT_COMPOSE_BOUNDS:
> > +   case V4L2_SEL_TGT_COMPOSE_PADDED:
> 
> I don't think you need to implement COMPOSE_PADDED, unless there
> is actual padding going on.

I'll remove the COMPOSE_PADDED target for now.

Support could be added to scale to non-burstsize-aligned width for some
orientations, but that would have rather complicated interactions with
the tiling and flip/rotation support.

[...]
> > +static int ipu_csc_scaler_init_controls(struct ipu_csc_scaler_ctx *ctx)
> > +{
> > +   struct v4l2_ctrl_handler *hdlr = &ctx->ctrl_hdlr;
> > +   int ret;
> > +
> > +   v4l2_ctrl_handler_init(hdlr, 3);
> > +
> > +   v4l2_ctrl_new_std(hdlr, &ipu_csc_scaler_ctrl_ops, V4L2_CID_HFLIP,
> > +                     0, 1, 1, 0);
> > +   v4l2_ctrl_new_std(hdlr, &ipu_csc_scaler_ctrl_ops, V4L2_CID_VFLIP,
> > +                     0, 1, 1, 0);
> > +   v4l2_ctrl_new_std(hdlr, &ipu_csc_scaler_ctrl_ops, V4L2_CID_ROTATE,
> > +                     0, 270, 90, 0);
> > +
> > +   if (hdlr->error) {
> > +           ret = hdlr->error;
> > +           goto out_free;
> > +   }
> > +
> > +   v4l2_ctrl_handler_setup(hdlr);
> > +   return 0;
> > +
> > +out_free:
> > +   v4l2_ctrl_handler_free(hdlr);
> > +   return ret;
> 
> You don't really need a goto here, just replace the 'goto' with these last 
> two lines.

Ok.

thanks
Philipp

Reply via email to