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