Hi Guennadi,
> Convert soc-camera core and all soc-camera drivers to the new mediabus
> API. This also takes soc-camera client drivers one step closer to also be
> usable with generic v4l2-subdev host drivers.
Just a quick question:
> @@ -323,28 +309,39 @@ static int mt9m001_s_fmt(struct v4l2_subdev *sd,
> struct v4l2_format *f)
> /* No support for scaling so far, just crop. TODO: use skipping */
> ret = mt9m001_s_crop(sd, &a);
> if (!ret) {
> - pix->width = mt9m001->rect.width;
> - pix->height = mt9m001->rect.height;
> - mt9m001->fourcc = pix->pixelformat;
> + mf->width = mt9m001->rect.width;
> + mf->height = mt9m001->rect.height;
> + mt9m001->fmt = soc_mbus_find_datafmt(mf->code,
> + mt9m001->fmts, mt9m001->num_fmts);
> + mf->colorspace = mt9m001->fmt->colorspace;
> }
>
> return ret;
> }
>
> -static int mt9m001_try_fmt(struct v4l2_subdev *sd, struct v4l2_format *f)
> +static int mt9m001_try_fmt(struct v4l2_subdev *sd,
> + struct v4l2_mbus_framefmt *mf)
> {
> struct i2c_client *client = sd->priv;
> struct mt9m001 *mt9m001 = to_mt9m001(client);
> - struct v4l2_pix_format *pix = &f->fmt.pix;
> + const struct soc_mbus_datafmt *fmt;
>
> - v4l_bound_align_image(&pix->width, MT9M001_MIN_WIDTH,
> + v4l_bound_align_image(&mf->width, MT9M001_MIN_WIDTH,
> MT9M001_MAX_WIDTH, 1,
> - &pix->height, MT9M001_MIN_HEIGHT + mt9m001->y_skip_top,
> + &mf->height, MT9M001_MIN_HEIGHT + mt9m001->y_skip_top,
> MT9M001_MAX_HEIGHT + mt9m001->y_skip_top, 0, 0);
>
> - if (pix->pixelformat == V4L2_PIX_FMT_SBGGR8 ||
> - pix->pixelformat == V4L2_PIX_FMT_SBGGR16)
> - pix->height = ALIGN(pix->height - 1, 2);
> + if (mt9m001->fmts == mt9m001_colour_fmts)
> + mf->height = ALIGN(mf->height - 1, 2);
> +
> + fmt = soc_mbus_find_datafmt(mf->code, mt9m001->fmts,
> + mt9m001->num_fmts);
> + if (!fmt) {
> + fmt = mt9m001->fmt;
> + mf->code = fmt->code;
> + }
> +
> + mf->colorspace = fmt->colorspace;
>
> return 0;
> }
Why do the sensor drivers use soc_mbus_find_datafmt? They only seem to be
interested in the colorspace field, but I don't see the reason for that.
Most if not all sensors have a fixed colorspace depending on the
pixelcode, so they can just ignore the colorspace that the caller
requested and replace it with their own.
I didn't have time for a full review, so I might have missed something.
Regards,
Hans
--
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html