[PATCHv2 4/4] media: imx: Use dedicated format handler for i.MX7/8
Dorota Czaplejewicz
dorota.czaplejewicz at puri.sm
Thu Nov 4 04:45:05 PDT 2021
Hi,
On Wed, 3 Nov 2021 13:41:00 +0300
Dan Carpenter <dan.carpenter at oracle.com> wrote:
> On Sun, Oct 17, 2021 at 01:08:37PM +0200, Dorota Czaplejewicz wrote:
> > +static int imx78_media_mbus_fmt_to_pix_fmt(struct v4l2_pix_format *pix,
> > + const struct v4l2_mbus_framefmt *mbus,
> > + const struct imx_media_pixfmt *cc)
> > +{
> > + u32 width;
> > + u32 stride;
> > + u8 divisor;
> > +
> > + if (!cc) {
> > + cc = imx_media_find_ipu_format(mbus->code,
> > + PIXFMT_SEL_YUV_RGB);
> > + if (!cc)
> > + cc = imx_media_find_mbus_format(mbus->code,
> > + PIXFMT_SEL_ANY);
> > + if (!cc)
> > + return -EINVAL;
> > + }
> > +
> > + /*
> > + * TODO: the IPU currently does not support the AYUV32 format,
> > + * so until it does convert to a supported YUV format.
> > + */
> > + if (cc->ipufmt && cc->cs == IPUV3_COLORSPACE_YUV) {
> > + u32 code;
> > +
> > + imx_media_enum_mbus_formats(&code, 0, PIXFMT_SEL_YUV);
> > + cc = imx_media_find_mbus_format(code, PIXFMT_SEL_YUV);
>
> Do we need a if (!cc) NULL check after this assignment?
In v3 of this series, this statement is only present in the IMX56 code path, which is unmodified compared to the original.
However, there's a missing check in the IMX78. I'm not sure if those can fail in practice, but for the sake of correctness, I rolled out an updated v4 series, where both checks are present. Message-id: 20211104113631.206899-1-dorota.czaplejewicz at puri.sm
Cheers,
Dorota
>
> > + }
> > +
> > + /*
> > + * The hardware can handle line lengths divisible by 4 bytes,
> > + * as long as the number of lines is even.
> > + * Otherwise, use the value of 8 bytes recommended in the datasheet.
> > + */
> > + divisor = 4 << (mbus->height % 2);
> > +
> > + width = round_up(mbus->width, divisor);
> > +
> > + if (cc->planar)
> > + stride = round_up(width, 16);
> > + else
> > + stride = round_up((width * cc->bpp) >> 3, divisor);
> > +
> > + 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 = cc->planar ? ((stride * pix->height * cc->bpp) >> 3) :
> > + stride * pix->height;
> > +
> > + return 0;
> > +}
>
> regards,
> dan carpenter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20211104/c553caf8/attachment.sig>
More information about the linux-arm-kernel
mailing list