Hi Laurent, thanks for the nice cleanup. Am Dienstag, 18. April 2023, 12:04:17 CEST schrieb Laurent Pinchart: > Use the __imx7_csi_video_try_fmt() helper function to initialize the > default format at probe time. This improves consistency by using the > same code path for both default initialization and validation at > runtime, and allows dropping the now unused imx7_csi_find_pixel_format() > function. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > Hi Alexander, > > This is an additional cleanup that applies on top of "[PATCH v2 0/3] Fix > imx7-media-csi format settings". I've only compile-tested it as I'm > currently lacking access to test hardware. Would you be able to test the > patch ? If so, could you please include it in the v2 of your series ? I can't detect any difference in 'media-ctl -p' right after boot, so I assume the initialization is identical. LGTM, I'll include in v3 of my series. Thanks, Alexander > --- > drivers/media/platform/nxp/imx7-media-csi.c | 55 +++------------------ > 1 file changed, 6 insertions(+), 49 deletions(-) > > diff --git a/drivers/media/platform/nxp/imx7-media-csi.c > b/drivers/media/platform/nxp/imx7-media-csi.c index > 5240670476b2..e52d617eea59 100644 > --- a/drivers/media/platform/nxp/imx7-media-csi.c > +++ b/drivers/media/platform/nxp/imx7-media-csi.c > @@ -1014,39 +1014,6 @@ static int imx7_csi_enum_mbus_formats(u32 *code, u32 > index) return -EINVAL; > } > > -static int imx7_csi_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix, > - const struct v4l2_mbus_framefmt *mbus, > - const struct imx7_csi_pixfmt *cc) > -{ > - u32 width; > - u32 stride; > - > - if (!cc) { > - cc = imx7_csi_find_mbus_format(mbus->code); > - if (!cc) > - return -EINVAL; > - } > - > - /* Round up width for minimum burst size */ > - width = round_up(mbus->width, 8); > - > - /* Round up stride for IDMAC line start address alignment */ > - stride = round_up((width * cc->bpp) >> 3, 8); > - > - pix->width = width; > - pix->height = mbus->height; > - pix->pixelformat = cc->fourcc; > - pix->colorspace = mbus->colorspace; > - pix->xfer_func = mbus->xfer_func; > - pix->ycbcr_enc = mbus->ycbcr_enc; > - pix->quantization = mbus->quantization; > - pix->field = mbus->field; > - pix->bytesperline = stride; > - pix->sizeimage = stride * pix->height; > - > - return 0; > -} > - > /* > --------------------------------------------------------------------------- > -- * Video Capture Device - IOCTLs > */ > @@ -1618,22 +1585,14 @@ static struct imx7_csi_vb2_buffer > *imx7_csi_video_next_buf(struct imx7_csi *csi) return buf; > } > > -static int imx7_csi_video_init_format(struct imx7_csi *csi) > +static void imx7_csi_video_init_format(struct imx7_csi *csi) > { > - struct v4l2_mbus_framefmt format = { }; > + struct v4l2_pix_format *pixfmt = &csi->vdev_fmt; > > - format.code = IMX7_CSI_DEF_MBUS_CODE; > - format.width = IMX7_CSI_DEF_PIX_WIDTH; > - format.height = IMX7_CSI_DEF_PIX_HEIGHT; > - format.field = V4L2_FIELD_NONE; > + pixfmt->width = IMX7_CSI_DEF_PIX_WIDTH; > + pixfmt->height = IMX7_CSI_DEF_PIX_HEIGHT; > > - imx7_csi_mbus_fmt_to_pix_fmt(&csi->vdev_fmt, &format, NULL); > - csi->vdev_compose.width = format.width; > - csi->vdev_compose.height = format.height; > - > - csi->vdev_cc = imx7_csi_find_pixel_format(csi- >vdev_fmt.pixelformat); > - > - return 0; > + csi->vdev_cc = __imx7_csi_video_try_fmt(pixfmt, &csi->vdev_compose); > } > > static int imx7_csi_video_register(struct imx7_csi *csi) > @@ -1646,9 +1605,7 @@ static int imx7_csi_video_register(struct imx7_csi > *csi) vdev->v4l2_dev = v4l2_dev; > > /* Initialize the default format and compose rectangle. */ > - ret = imx7_csi_video_init_format(csi); > - if (ret < 0) > - return ret; > + imx7_csi_video_init_format(csi); > > /* Register the video device. */ > ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); -- TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht München, HRB 105018 Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider http://www.tq-group.com/