Re: [PATCH 11/12] media: mt9m001: make VIDIOC_SUBDEV_G_FMT ioctl work with V4L2_SUBDEV_FORMAT_TRY

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2019年1月7日(月) 20:30 Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>:
>
> Hi Mita-san,
>
> On Sun, Dec 23, 2018 at 02:12:53AM +0900, Akinobu Mita wrote:
> > The VIDIOC_SUBDEV_G_FMT ioctl for this driver doesn't recognize
> > V4L2_SUBDEV_FORMAT_TRY and always works as if V4L2_SUBDEV_FORMAT_ACTIVE
> > is specified.
> >
> > Cc: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
> > Cc: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>
> > Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx>
> > ---
> >  drivers/media/i2c/mt9m001.c | 27 +++++++++++++++++++++++++++
> >  1 file changed, 27 insertions(+)
> >
> > diff --git a/drivers/media/i2c/mt9m001.c b/drivers/media/i2c/mt9m001.c
> > index a5b94d7..f4afbc9 100644
> > --- a/drivers/media/i2c/mt9m001.c
> > +++ b/drivers/media/i2c/mt9m001.c
> > @@ -331,6 +331,12 @@ static int mt9m001_get_fmt(struct v4l2_subdev *sd,
> >       if (format->pad)
> >               return -EINVAL;
> >
> > +     if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
> > +             mf = v4l2_subdev_get_try_format(sd, cfg, 0);
> > +             format->format = *mf;
> > +             return 0;
> > +     }
> > +
> >       mf->width       = mt9m001->rect.width;
> >       mf->height      = mt9m001->rect.height;
> >       mf->code        = mt9m001->fmt->code;
> > @@ -638,6 +644,26 @@ static const struct v4l2_subdev_core_ops mt9m001_subdev_core_ops = {
> >  #endif
> >  };
> >
> > +static int mt9m001_init_cfg(struct v4l2_subdev *sd,
> > +                         struct v4l2_subdev_pad_config *cfg)
> > +{
> > +     struct i2c_client *client = v4l2_get_subdevdata(sd);
> > +     struct mt9m001 *mt9m001 = to_mt9m001(client);
> > +     struct v4l2_mbus_framefmt *try_fmt =
> > +             v4l2_subdev_get_try_format(sd, cfg, 0);
> > +
> > +     try_fmt->width          = mt9m001->rect.width;
> > +     try_fmt->height         = mt9m001->rect.height;
> > +     try_fmt->code           = mt9m001->fmt->code;
> > +     try_fmt->colorspace     = mt9m001->fmt->colorspace;
>
> The initial configuration set here should reflect the default, not current
> configuration. This appears to refer to the current one.

You are right.  I'll fix this.




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux