lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 13 May 2024 18:35:28 +0300
From: "Gjorgji Rosikopulos (Consultant)" <quic_grosikop@...cinc.com>
To: Vladimir Zapolskiy <vladimir.zapolskiy@...aro.org>, <rfoss@...nel.org>,
        <todor.too@...il.com>, <bryan.odonoghue@...aro.org>,
        <andersson@...nel.org>, <konrad.dybcio@...aro.org>,
        <mchehab@...nel.org>
CC: <linux-media@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
        <linux-kernel@...r.kernel.org>, <laurent.pinchart@...asonboard.com>,
        <hverkuil-cisco@...all.nl>, <quic_hariramp@...cinc.com>
Subject: Re: [PATCH v3 2/8] media: qcom: camss: Attach formats to VFE
 resources

Hi Vladimir,

Thanks for the review.

On 5/13/2024 6:15 PM, Vladimir Zapolskiy wrote:
> On 4/11/24 15:45, Gjorgji Rosikopulos wrote:
>> From: Radoslav Tsvetkov <quic_rtsvetko@...cinc.com>
>>
>> Video node formats have direct dependency by the sub-device pad formats.
>> Remove dependency for SoC version and move format definitions in device
>> which creates video node.
>>
>> This commit attaches a struct to the VFE resources that holds format
>> description, so it is much easier to assign them to the video node.
>> No need to use a switch-case.
>>
>> NOTE: The mbus_bpp is used to calculate the clock rates and is different
>> from bpp which is the bits per pixel written to memory. We need to keep
>> both values to not break the calcualtions.
>>
>> Signed-off-by: Radoslav Tsvetkov <quic_rtsvetko@...cinc.com>
>> Signed-off-by: Gjorgji Rosikopulos <quic_grosikop@...cinc.com>
>> ---
>>   .../media/platform/qcom/camss/camss-format.h  |  62 +++
>>   drivers/media/platform/qcom/camss/camss-vfe.c | 359 ++++++++++++------
>>   drivers/media/platform/qcom/camss/camss-vfe.h |  11 +-
>>   .../media/platform/qcom/camss/camss-video.c   | 269 +------------
>>   .../media/platform/qcom/camss/camss-video.h   |   5 +-
>>   drivers/media/platform/qcom/camss/camss.c     |  80 +++-
>>   drivers/media/platform/qcom/camss/camss.h     |   1 +
>>   7 files changed, 383 insertions(+), 404 deletions(-)
>>   create mode 100644 drivers/media/platform/qcom/camss/camss-format.h
>>
>> diff --git a/drivers/media/platform/qcom/camss/camss-format.h
>> b/drivers/media/platform/qcom/camss/camss-format.h
>> new file mode 100644
>> index 000000000000..bfbc761bd46c
>> --- /dev/null
>> +++ b/drivers/media/platform/qcom/camss/camss-format.h
>> @@ -0,0 +1,62 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/* Copyright (c) 2023, The Linux Foundation. All rights reserved.
>> + * Copyright (c) 2023 Qualcomm Technologies, Inc.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 and
>> + * only version 2 as published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + */
>> +
> 
> The given SPDX-License-Identifier tag is sufficient to describe the
> licence,
> so all the lines above but the first one are redundant and should be
> removed.
> 
>> +#define PER_PLANE_DATA(plane, h_fract_num, h_fract_den, v_fract_num,
>> v_fract_den, _bpp)        \
>> +    .hsub[(plane)].numerator    = (h_fract_num),                    \
>> +    .hsub[(plane)].denominator    = (h_fract_den),                    \
>> +    .vsub[(plane)].numerator    = (v_fract_num),                    \
>> +    .vsub[(plane)].denominator    = (v_fract_den),                    \
>> +    .bpp[(plane)]            = (_bpp)
>> +
>> +#ifndef __CAMSS_FORMAT_H__
>> +#define __CAMSS_FORMAT_H__
>> +
> 
> PER_PLANE_DATA macro declaration shall be put under __CAMSS_FORMAT_H__
> macro guard,
> otherwise the macro guard does not work as expected, you'll get compile
> time issues,
> if you enter some kind of a header include collision.

Ups it seems we miss this during the review. Thanks i will check with
Bryan, whether to resend the series.

> 
>> +#include <linux/types.h>
>> +
>> +/*
>> + * struct fract - Represents a fraction
>> + * @numerator: Store the numerator part of the fraction
>> + * @denominator: Store the denominator part of the fraction
>> + */
>> +struct fract {
>> +    u8 numerator;
>> +    u8 denominator;
>> +};
>> +
> 
> Please note a "struct v4l2_fract" and find the next comment.
> 
> I see that the structure is moved from "camss-video.c", to some extent it
> might be acceptable to keep it .c file, but probably it's better to replace
> it in a header file.

This is migrated code from camss-video.c as you noticed. For sure there
are other things to cleanup but i will propose to have next cleanup
series for that.

> 
>> +/*
>> + * struct camss_format_info - ISP media bus format information
>> + * @code: V4L2 media bus format code
>> + * @mbus_bpp: Media bus bits per pixel
>> + * @pixelformat: V4L2 pixel format FCC identifier
> 
> Apparently and according to the comments above the header file references
> to V4L2 specific structures and types. So, I'd say it makes a sense to
> reuse V4L2 code rather than redefining it.
> 
>> + * @planes: Number of planes
>> + * @hsub: Horizontal subsampling (for each plane)
>> + * @vsub: Vertical subsampling (for each plane)
>> + * @bpp: Bits per pixel when stored in memory (for each plane)
>> + */
>> +struct camss_format_info {
>> +    u32 code;
>> +    u32 mbus_bpp;
>> +    u32 pixelformat;
>> +    u8 planes;
>> +    struct fract hsub[3];
>> +    struct fract vsub[3];
>> +    unsigned int bpp[3];
> 
> struct plane {
>     struct fract hsub;
>     struct fract vsub;
>     unsigned int bpp;
> }
> 
> and then define an array of planes, plance argument will go away from
> the macro in
> the beginning of the file.

I agree but i would propose to have next series for cleanup up patches,
Otherwise we will have to many changes across the files.

> 
>> +};
>> +
>> +struct camss_formats {
>> +    unsigned int nformats;
>> +    const struct camss_format_info *formats;
>> +};
>> +
>> +#endif /* __CAMSS_FORMAT_H__ */
>> diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c
>> b/drivers/media/platform/qcom/camss/camss-vfe.c
>> index 459c70a4b319..2d5a64c055f1 100644
>> --- a/drivers/media/platform/qcom/camss/camss-vfe.c
>> +++ b/drivers/media/platform/qcom/camss/camss-vfe.c
>> @@ -32,96 +32,250 @@
>>     #define SCALER_RATIO_MAX 16
>>   -struct vfe_format {
>> -    u32 code;
>> -    u8 bpp;
>> +static const struct camss_format_info formats_rdi_8x16[] = {
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_UYVY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_VYUY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_YUYV, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_YVYU, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_SBGGR8_1X8, 8, V4L2_PIX_FMT_SBGGR8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGBRG8_1X8, 8, V4L2_PIX_FMT_SGBRG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGRBG8_1X8, 8, V4L2_PIX_FMT_SGRBG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SRGGB8_1X8, 8, V4L2_PIX_FMT_SRGGB8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SBGGR10_1X10, 10, V4L2_PIX_FMT_SBGGR10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGBRG10_1X10, 10, V4L2_PIX_FMT_SGBRG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGRBG10_1X10, 10, V4L2_PIX_FMT_SGRBG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SRGGB10_1X10, 10, V4L2_PIX_FMT_SRGGB10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SBGGR12_1X12, 12, V4L2_PIX_FMT_SBGGR12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGBRG12_1X12, 12, V4L2_PIX_FMT_SGBRG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGRBG12_1X12, 12, V4L2_PIX_FMT_SGRBG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SRGGB12_1X12, 12, V4L2_PIX_FMT_SRGGB12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_Y10_1X10, 10, V4L2_PIX_FMT_Y10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +};
>> +
>> +static const struct camss_format_info formats_rdi_8x96[] = {
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_UYVY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_VYUY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_YUYV, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_YVYU, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_SBGGR8_1X8, 8, V4L2_PIX_FMT_SBGGR8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGBRG8_1X8, 8, V4L2_PIX_FMT_SGBRG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGRBG8_1X8, 8, V4L2_PIX_FMT_SGRBG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SRGGB8_1X8, 8, V4L2_PIX_FMT_SRGGB8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SBGGR10_1X10, 10, V4L2_PIX_FMT_SBGGR10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGBRG10_1X10, 10, V4L2_PIX_FMT_SGBRG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGRBG10_1X10, 10, V4L2_PIX_FMT_SGRBG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SRGGB10_1X10, 10, V4L2_PIX_FMT_SRGGB10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, 16, V4L2_PIX_FMT_SBGGR10, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_SBGGR12_1X12, 12, V4L2_PIX_FMT_SBGGR12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGBRG12_1X12, 12, V4L2_PIX_FMT_SGBRG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGRBG12_1X12, 12, V4L2_PIX_FMT_SGRBG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SRGGB12_1X12, 12, V4L2_PIX_FMT_SRGGB12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SBGGR14_1X14, 14, V4L2_PIX_FMT_SBGGR14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SGBRG14_1X14, 14, V4L2_PIX_FMT_SGBRG14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SGRBG14_1X14, 14, V4L2_PIX_FMT_SGRBG14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SRGGB14_1X14, 14, V4L2_PIX_FMT_SRGGB14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_Y10_1X10, 10, V4L2_PIX_FMT_Y10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, 16, V4L2_PIX_FMT_Y10, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +};
>> +
>> +static const struct camss_format_info formats_rdi_845[] = {
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_UYVY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_VYUY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_YUYV, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_YVYU, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_SBGGR8_1X8, 8, V4L2_PIX_FMT_SBGGR8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGBRG8_1X8, 8, V4L2_PIX_FMT_SGBRG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SGRBG8_1X8, 8, V4L2_PIX_FMT_SGRBG8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SRGGB8_1X8, 8, V4L2_PIX_FMT_SRGGB8, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_SBGGR10_1X10, 10, V4L2_PIX_FMT_SBGGR10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGBRG10_1X10, 10, V4L2_PIX_FMT_SGBRG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SGRBG10_1X10, 10, V4L2_PIX_FMT_SGRBG10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SRGGB10_1X10, 10, V4L2_PIX_FMT_SRGGB10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, 16, V4L2_PIX_FMT_SBGGR10, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_SBGGR12_1X12, 12, V4L2_PIX_FMT_SBGGR12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGBRG12_1X12, 12, V4L2_PIX_FMT_SGBRG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SGRBG12_1X12, 12, V4L2_PIX_FMT_SGRBG12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SRGGB12_1X12, 12, V4L2_PIX_FMT_SRGGB12P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 12) },
>> +    { MEDIA_BUS_FMT_SBGGR14_1X14, 14, V4L2_PIX_FMT_SBGGR14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SGBRG14_1X14, 14, V4L2_PIX_FMT_SGBRG14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SGRBG14_1X14, 14, V4L2_PIX_FMT_SGRBG14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_SRGGB14_1X14, 14, V4L2_PIX_FMT_SRGGB14P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 14) },
>> +    { MEDIA_BUS_FMT_Y8_1X8, 8, V4L2_PIX_FMT_GREY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 8) },
>> +    { MEDIA_BUS_FMT_Y10_1X10, 10, V4L2_PIX_FMT_Y10P, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 10) },
>> +    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, 16, V4L2_PIX_FMT_Y10, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +};
>> +
>> +static const struct camss_format_info formats_pix_8x16[] = {
>> +    { MEDIA_BUS_FMT_YUYV8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +};
>> +
>> +static const struct camss_format_info formats_pix_8x96[] = {
>> +    { MEDIA_BUS_FMT_YUYV8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1_5X8, 8, V4L2_PIX_FMT_NV12, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1_5X8, 8, V4L2_PIX_FMT_NV21, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 2, 3, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_NV16, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_NV61, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 2, 8) },
>> +    { MEDIA_BUS_FMT_UYVY8_1X16, 8, V4L2_PIX_FMT_UYVY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_VYUY8_1X16, 8, V4L2_PIX_FMT_VYUY, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YUYV8_1X16, 8, V4L2_PIX_FMT_YUYV, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +    { MEDIA_BUS_FMT_YVYU8_1X16, 8, V4L2_PIX_FMT_YVYU, 1,
>> +      PER_PLANE_DATA(0, 1, 1, 1, 1, 16) },
>> +};
>> +
>> +const struct camss_formats vfe_formats_rdi_8x16 = {
>> +    .nformats = ARRAY_SIZE(formats_rdi_8x16),
>> +    .formats = formats_rdi_8x16
>>   };
>>   -static const struct vfe_format formats_rdi_8x16[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_Y10_1X10, 10 },
>> +const struct camss_formats vfe_formats_pix_8x16 = {
>> +    .nformats = ARRAY_SIZE(formats_pix_8x16),
>> +    .formats = formats_pix_8x16
>>   };
>>   -static const struct vfe_format formats_pix_8x16[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, 8 },
>> +const struct camss_formats vfe_formats_rdi_8x96 = {
>> +    .nformats = ARRAY_SIZE(formats_rdi_8x96),
>> +    .formats = formats_rdi_8x96
>>   };
>>   -static const struct vfe_format formats_rdi_8x96[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, 16 },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SBGGR14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SGBRG14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SGRBG14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SRGGB14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_Y10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, 16 },
>> +const struct camss_formats vfe_formats_pix_8x96 = {
>> +    .nformats = ARRAY_SIZE(formats_pix_8x96),
>> +    .formats = formats_pix_8x96
>>   };
>>   -static const struct vfe_format formats_pix_8x96[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, 8 },
>> +const struct camss_formats vfe_formats_rdi_845 = {
>> +    .nformats = ARRAY_SIZE(formats_rdi_845),
>> +    .formats = formats_rdi_845
>>   };
>>   -static const struct vfe_format formats_rdi_845[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, 16 },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, 12 },
>> -    { MEDIA_BUS_FMT_SBGGR14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SGBRG14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SGRBG14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_SRGGB14_1X14, 14 },
>> -    { MEDIA_BUS_FMT_Y8_1X8, 8 },
>> -    { MEDIA_BUS_FMT_Y10_1X10, 10 },
>> -    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, 16 },
>> +/* TODO: Replace with pix formats */
>> +const struct camss_formats vfe_formats_pix_845 = {
>> +    .nformats = ARRAY_SIZE(formats_rdi_845),
>> +    .formats = formats_rdi_845
>>   };
>>     /*
>> @@ -132,18 +286,18 @@ static const struct vfe_format formats_rdi_845[]
>> = {
>>    *
>>    * Return number of bits per pixel
>>    */
>> -static u8 vfe_get_bpp(const struct vfe_format *formats,
>> +static u8 vfe_get_bpp(const struct camss_format_info *formats,
>>                 unsigned int nformats, u32 code)
>>   {
>>       unsigned int i;
>>         for (i = 0; i < nformats; i++)
>>           if (code == formats[i].code)
>> -            return formats[i].bpp;
>> +            return formats[i].mbus_bpp;
>>         WARN(1, "Unknown format\n");
>>   -    return formats[0].bpp;
>> +    return formats[0].mbus_bpp;
>>   }
>>     static u32 vfe_find_code(u32 *code, unsigned int n_code,
>> @@ -1495,32 +1649,12 @@ int msm_vfe_subdev_init(struct camss *camss,
>> struct vfe_device *vfe,
>>           init_completion(&l->output.sof);
>>           init_completion(&l->output.reg_update);
>>   -        switch (camss->res->version) {
>> -        case CAMSS_8x16:
>> -            if (i == VFE_LINE_PIX) {
>> -                l->formats = formats_pix_8x16;
>> -                l->nformats = ARRAY_SIZE(formats_pix_8x16);
>> -            } else {
>> -                l->formats = formats_rdi_8x16;
>> -                l->nformats = ARRAY_SIZE(formats_rdi_8x16);
>> -            }
>> -            break;
>> -        case CAMSS_8x96:
>> -        case CAMSS_660:
>> -            if (i == VFE_LINE_PIX) {
>> -                l->formats = formats_pix_8x96;
>> -                l->nformats = ARRAY_SIZE(formats_pix_8x96);
>> -            } else {
>> -                l->formats = formats_rdi_8x96;
>> -                l->nformats = ARRAY_SIZE(formats_rdi_8x96);
>> -            }
>> -            break;
>> -        case CAMSS_845:
>> -        case CAMSS_8250:
>> -        case CAMSS_8280XP:
>> -            l->formats = formats_rdi_845;
>> -            l->nformats = ARRAY_SIZE(formats_rdi_845);
>> -            break;
>> +        if (i == VFE_LINE_PIX) {
>> +            l->nformats = res->vfe.formats_pix->nformats;
>> +            l->formats = res->vfe.formats_pix->formats;
>> +        } else {
>> +            l->nformats = res->vfe.formats_rdi->nformats;
>> +            l->formats = res->vfe.formats_rdi->formats;
>>           }
>>       }
>>   @@ -1684,10 +1818,13 @@ int msm_vfe_register_entities(struct
>> vfe_device *vfe,
>>               video_out->bpl_alignment = 16;
>>               video_out->line_based = 1;
>>           }
>> +
>> +        video_out->nformats = vfe->line[i].nformats;
>> +        video_out->formats = vfe->line[i].formats;
>> +
>>           snprintf(name, ARRAY_SIZE(name), "%s%d_%s%d",
>>                MSM_VFE_NAME, vfe->id, "video", i);
>> -        ret = msm_video_register(video_out, v4l2_dev, name,
>> -                     i == VFE_LINE_PIX ? 1 : 0);
>> +        ret = msm_video_register(video_out, v4l2_dev, name);
>>           if (ret < 0) {
>>               dev_err(dev, "Failed to register video node: %d\n",
>>                   ret);
>> diff --git a/drivers/media/platform/qcom/camss/camss-vfe.h
>> b/drivers/media/platform/qcom/camss/camss-vfe.h
>> index 87fc159c48cc..10e2cc3c0b83 100644
>> --- a/drivers/media/platform/qcom/camss/camss-vfe.h
>> +++ b/drivers/media/platform/qcom/camss/camss-vfe.h
>> @@ -92,7 +92,7 @@ struct vfe_line {
>>       struct v4l2_rect crop;
>>       struct camss_video video_out;
>>       struct vfe_output output;
>> -    const struct vfe_format *formats;
>> +    const struct camss_format_info *formats;
>>       unsigned int nformats;
>>   };
>>   @@ -132,6 +132,8 @@ struct vfe_subdev_resources {
>>       bool has_pd;
>>       char *pd_name;
>>       const struct vfe_hw_ops *hw_ops;
>> +    const struct camss_formats *formats_rdi;
>> +    const struct camss_formats *formats_pix;
>>   };
>>     struct vfe_device {
>> @@ -224,6 +226,13 @@ void vfe_pm_domain_off(struct vfe_device *vfe);
>>    */
>>   int vfe_pm_domain_on(struct vfe_device *vfe);
>>   +extern const struct camss_formats vfe_formats_rdi_8x16;
>> +extern const struct camss_formats vfe_formats_pix_8x16;
>> +extern const struct camss_formats vfe_formats_rdi_8x96;
>> +extern const struct camss_formats vfe_formats_pix_8x96;
>> +extern const struct camss_formats vfe_formats_rdi_845;
>> +extern const struct camss_formats vfe_formats_pix_845;
>> +
>>   extern const struct vfe_hw_ops vfe_ops_4_1;
>>   extern const struct vfe_hw_ops vfe_ops_4_7;
>>   extern const struct vfe_hw_ops vfe_ops_4_8;
>> diff --git a/drivers/media/platform/qcom/camss/camss-video.c
>> b/drivers/media/platform/qcom/camss/camss-video.c
>> index 54cd82f74115..cd13a432e291 100644
>> --- a/drivers/media/platform/qcom/camss/camss-video.c
>> +++ b/drivers/media/platform/qcom/camss/camss-video.c
>> @@ -24,244 +24,6 @@
>>   #define CAMSS_FRAME_MAX_HEIGHT_RDI    8191
>>   #define CAMSS_FRAME_MAX_HEIGHT_PIX    4096
>>   -struct fract {
>> -    u8 numerator;
>> -    u8 denominator;
>> -};
>> -
>> -/*
>> - * struct camss_format_info - ISP media bus format information
>> - * @code: V4L2 media bus format code
>> - * @pixelformat: V4L2 pixel format FCC identifier
>> - * @planes: Number of planes
>> - * @hsub: Horizontal subsampling (for each plane)
>> - * @vsub: Vertical subsampling (for each plane)
>> - * @bpp: Bits per pixel when stored in memory (for each plane)
>> - */
>> -struct camss_format_info {
>> -    u32 code;
>> -    u32 pixelformat;
>> -    u8 planes;
>> -    struct fract hsub[3];
>> -    struct fract vsub[3];
>> -    unsigned int bpp[3];
>> -};
>> -
>> -static const struct camss_format_info formats_rdi_8x16[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_UYVY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_VYUY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_YUYV, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_YVYU, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, V4L2_PIX_FMT_SBGGR8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, V4L2_PIX_FMT_SGBRG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, V4L2_PIX_FMT_SGRBG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, V4L2_PIX_FMT_SRGGB8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, V4L2_PIX_FMT_SBGGR10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, V4L2_PIX_FMT_SGBRG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, V4L2_PIX_FMT_SGRBG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, V4L2_PIX_FMT_SRGGB10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, V4L2_PIX_FMT_SBGGR12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, V4L2_PIX_FMT_SGBRG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, V4L2_PIX_FMT_SGRBG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, V4L2_PIX_FMT_SRGGB12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_Y10_1X10, V4L2_PIX_FMT_Y10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -};
>> -
>> -static const struct camss_format_info formats_rdi_8x96[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_UYVY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_VYUY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_YUYV, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_YVYU, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, V4L2_PIX_FMT_SBGGR8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, V4L2_PIX_FMT_SGBRG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, V4L2_PIX_FMT_SGRBG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, V4L2_PIX_FMT_SRGGB8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, V4L2_PIX_FMT_SBGGR10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, V4L2_PIX_FMT_SGBRG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, V4L2_PIX_FMT_SGRBG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, V4L2_PIX_FMT_SRGGB10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, V4L2_PIX_FMT_SBGGR10, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, V4L2_PIX_FMT_SBGGR12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, V4L2_PIX_FMT_SGBRG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, V4L2_PIX_FMT_SGRBG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, V4L2_PIX_FMT_SRGGB12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SBGGR14_1X14, V4L2_PIX_FMT_SBGGR14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SGBRG14_1X14, V4L2_PIX_FMT_SGBRG14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SGRBG14_1X14, V4L2_PIX_FMT_SGRBG14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SRGGB14_1X14, V4L2_PIX_FMT_SRGGB14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_Y10_1X10, V4L2_PIX_FMT_Y10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, V4L2_PIX_FMT_Y10, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -};
>> -
>> -static const struct camss_format_info formats_rdi_845[] = {
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_UYVY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_VYUY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_YUYV, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_YVYU, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_SBGGR8_1X8, V4L2_PIX_FMT_SBGGR8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGBRG8_1X8, V4L2_PIX_FMT_SGBRG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SGRBG8_1X8, V4L2_PIX_FMT_SGRBG8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SRGGB8_1X8, V4L2_PIX_FMT_SRGGB8, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_SBGGR10_1X10, V4L2_PIX_FMT_SBGGR10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGBRG10_1X10, V4L2_PIX_FMT_SGBRG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SGRBG10_1X10, V4L2_PIX_FMT_SGRBG10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SRGGB10_1X10, V4L2_PIX_FMT_SRGGB10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, V4L2_PIX_FMT_SBGGR10, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_SBGGR12_1X12, V4L2_PIX_FMT_SBGGR12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGBRG12_1X12, V4L2_PIX_FMT_SGBRG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SGRBG12_1X12, V4L2_PIX_FMT_SGRBG12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SRGGB12_1X12, V4L2_PIX_FMT_SRGGB12P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 12 } },
>> -    { MEDIA_BUS_FMT_SBGGR14_1X14, V4L2_PIX_FMT_SBGGR14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SGBRG14_1X14, V4L2_PIX_FMT_SGBRG14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SGRBG14_1X14, V4L2_PIX_FMT_SGRBG14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_SRGGB14_1X14, V4L2_PIX_FMT_SRGGB14P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 14 } },
>> -    { MEDIA_BUS_FMT_Y8_1X8, V4L2_PIX_FMT_GREY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_Y10_1X10, V4L2_PIX_FMT_Y10P, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 10 } },
>> -    { MEDIA_BUS_FMT_Y10_2X8_PADHI_LE, V4L2_PIX_FMT_Y10, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -};
>> -
>> -static const struct camss_format_info formats_pix_8x16[] = {
>> -    { MEDIA_BUS_FMT_YUYV8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -};
>> -
>> -static const struct camss_format_info formats_pix_8x96[] = {
>> -    { MEDIA_BUS_FMT_YUYV8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1_5X8, V4L2_PIX_FMT_NV12, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1_5X8, V4L2_PIX_FMT_NV21, 1,
>> -      { { 1, 1 } }, { { 2, 3 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_NV16, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_NV61, 1,
>> -      { { 1, 1 } }, { { 1, 2 } }, { 8 } },
>> -    { MEDIA_BUS_FMT_UYVY8_1X16, V4L2_PIX_FMT_UYVY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_VYUY8_1X16, V4L2_PIX_FMT_VYUY, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YUYV8_1X16, V4L2_PIX_FMT_YUYV, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -    { MEDIA_BUS_FMT_YVYU8_1X16, V4L2_PIX_FMT_YVYU, 1,
>> -      { { 1, 1 } }, { { 1, 1 } }, { 16 } },
>> -};
>> -
>>   /*
>> -----------------------------------------------------------------------------
>>    * Helper functions
>>    */
>> @@ -968,8 +730,7 @@ static int msm_video_init_format(struct
>> camss_video *video)
>>    * Return 0 on success or a negative error code otherwise
>>    */
>>   -int msm_video_register(struct camss_video *video, struct
>> v4l2_device *v4l2_dev,
>> -               const char *name, int is_pix)
>> +int msm_video_register(struct camss_video *video, struct v4l2_device
>> *v4l2_dev, const char *name)
> 
> Please wrap the line above.
> 
>>   {
>>       struct media_pad *pad = &video->pad;
>>       struct video_device *vdev;
>> @@ -1006,34 +767,6 @@ int msm_video_register(struct camss_video
>> *video, struct v4l2_device *v4l2_dev,
>>         mutex_init(&video->lock);
>>   -    switch (video->camss->res->version) {
>> -    case CAMSS_8x16:
>> -        if (is_pix) {
>> -            video->formats = formats_pix_8x16;
>> -            video->nformats = ARRAY_SIZE(formats_pix_8x16);
>> -        } else {
>> -            video->formats = formats_rdi_8x16;
>> -            video->nformats = ARRAY_SIZE(formats_rdi_8x16);
>> -        }
>> -        break;
>> -    case CAMSS_8x96:
>> -    case CAMSS_660:
>> -        if (is_pix) {
>> -            video->formats = formats_pix_8x96;
>> -            video->nformats = ARRAY_SIZE(formats_pix_8x96);
>> -        } else {
>> -            video->formats = formats_rdi_8x96;
>> -            video->nformats = ARRAY_SIZE(formats_rdi_8x96);
>> -        }
>> -        break;
>> -    case CAMSS_845:
>> -    case CAMSS_8250:
>> -    case CAMSS_8280XP:
>> -        video->formats = formats_rdi_845;
>> -        video->nformats = ARRAY_SIZE(formats_rdi_845);
>> -        break;
>> -    }
>> -
>>       ret = msm_video_init_format(video);
>>       if (ret < 0) {
>>           dev_err(v4l2_dev->dev, "Failed to init format: %d\n", ret);
>> diff --git a/drivers/media/platform/qcom/camss/camss-video.h
>> b/drivers/media/platform/qcom/camss/camss-video.h
>> index bdbae8424140..4f6c0821ead2 100644
>> --- a/drivers/media/platform/qcom/camss/camss-video.h
>> +++ b/drivers/media/platform/qcom/camss/camss-video.h
>> @@ -33,8 +33,6 @@ struct camss_video_ops {
>>                    enum vb2_buffer_state state);
>>   };
>>   -struct camss_format_info;
>> -
>>   struct camss_video {
>>       struct camss *camss;
>>       struct vb2_queue vb2_q;
>> @@ -52,8 +50,7 @@ struct camss_video {
>>       unsigned int nformats;
>>   };
>>   -int msm_video_register(struct camss_video *video, struct
>> v4l2_device *v4l2_dev,
>> -               const char *name, int is_pix);
>> +int msm_video_register(struct camss_video *video, struct v4l2_device
>> *v4l2_dev, const char *name);
> 
> Please wrap the line above.

Yes this should be fixed. Thanks for catching this.

~Gjorgji

> 
>>     void msm_video_unregister(struct camss_video *video);
>>   diff --git a/drivers/media/platform/qcom/camss/camss.c
>> b/drivers/media/platform/qcom/camss/camss.c
>> index e4ae81dc9a15..f3242d2d9807 100644
>> --- a/drivers/media/platform/qcom/camss/camss.c
>> +++ b/drivers/media/platform/qcom/camss/camss.c
>> @@ -143,7 +143,9 @@ static const struct camss_subdev_resources
>> vfe_res_8x16[] = {
>>           .type = CAMSS_SUBDEV_TYPE_VFE,
>>           .vfe = {
>>               .line_num = 3,
>> -            .hw_ops = &vfe_ops_4_1
>> +            .hw_ops = &vfe_ops_4_1,
>> +            .formats_rdi = &vfe_formats_rdi_8x16,
>> +            .formats_pix = &vfe_formats_pix_8x16
>>           }
>>       }
>>   };
>> @@ -318,7 +320,9 @@ static const struct camss_subdev_resources
>> vfe_res_8x96[] = {
>>           .vfe = {
>>               .line_num = 3,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_4_7
>> +            .hw_ops = &vfe_ops_4_7,
>> +            .formats_rdi = &vfe_formats_rdi_8x96,
>> +            .formats_pix = &vfe_formats_pix_8x96
>>           }
>>       },
>>   @@ -342,7 +346,9 @@ static const struct camss_subdev_resources
>> vfe_res_8x96[] = {
>>           .vfe = {
>>               .line_num = 3,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_4_7
>> +            .hw_ops = &vfe_ops_4_7,
>> +            .formats_rdi = &vfe_formats_rdi_8x96,
>> +            .formats_pix = &vfe_formats_pix_8x96
>>           }
>>       }
>>   };
>> @@ -538,7 +544,9 @@ static const struct camss_subdev_resources
>> vfe_res_660[] = {
>>           .vfe = {
>>               .line_num = 3,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_4_8
>> +            .hw_ops = &vfe_ops_4_8,
>> +            .formats_rdi = &vfe_formats_rdi_8x96,
>> +            .formats_pix = &vfe_formats_pix_8x96
>>           }
>>       },
>>   @@ -565,7 +573,9 @@ static const struct camss_subdev_resources
>> vfe_res_660[] = {
>>           .vfe = {
>>               .line_num = 3,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_4_8
>> +            .hw_ops = &vfe_ops_4_8,
>> +            .formats_rdi = &vfe_formats_rdi_8x96,
>> +            .formats_pix = &vfe_formats_pix_8x96
>>           }
>>       }
>>   };
>> @@ -758,7 +768,9 @@ static const struct camss_subdev_resources
>> vfe_res_845[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>   @@ -784,7 +796,9 @@ static const struct camss_subdev_resources
>> vfe_res_845[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .has_pd = true,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>   @@ -809,7 +823,9 @@ static const struct camss_subdev_resources
>> vfe_res_845[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       }
>>   };
>> @@ -985,7 +1001,9 @@ static const struct camss_subdev_resources
>> vfe_res_8250[] = {
>>               .line_num = 3,
>>               .has_pd = true,
>>               .pd_name = "ife0",
>> -            .hw_ops = &vfe_ops_480
>> +            .hw_ops = &vfe_ops_480,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE1 */
>> @@ -1010,7 +1028,9 @@ static const struct camss_subdev_resources
>> vfe_res_8250[] = {
>>               .line_num = 3,
>>               .has_pd = true,
>>               .pd_name = "ife1",
>> -            .hw_ops = &vfe_ops_480
>> +            .hw_ops = &vfe_ops_480,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE2 (lite) */
>> @@ -1033,7 +1053,9 @@ static const struct camss_subdev_resources
>> vfe_res_8250[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_480
>> +            .hw_ops = &vfe_ops_480,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE3 (lite) */
>> @@ -1056,7 +1078,9 @@ static const struct camss_subdev_resources
>> vfe_res_8250[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_480
>> +            .hw_ops = &vfe_ops_480,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>   };
>> @@ -1267,7 +1291,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .pd_name = "ife0",
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE1 */
>> @@ -1285,7 +1311,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .pd_name = "ife1",
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE2 */
>> @@ -1303,7 +1331,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .pd_name = "ife2",
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE3 */
>> @@ -1321,7 +1351,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .line_num = 4,
>>               .pd_name = "ife3",
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE_LITE_0 */
>> @@ -1338,7 +1370,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE_LITE_1 */
>> @@ -1355,7 +1389,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE_LITE_2 */
>> @@ -1372,7 +1408,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>       /* VFE_LITE_3 */
>> @@ -1389,7 +1427,9 @@ static const struct camss_subdev_resources
>> vfe_res_sc8280xp[] = {
>>           .vfe = {
>>               .is_lite = true,
>>               .line_num = 4,
>> -            .hw_ops = &vfe_ops_170
>> +            .hw_ops = &vfe_ops_170,
>> +            .formats_rdi = &vfe_formats_rdi_845,
>> +            .formats_pix = &vfe_formats_pix_845
>>           }
>>       },
>>   };
>> diff --git a/drivers/media/platform/qcom/camss/camss.h
>> b/drivers/media/platform/qcom/camss/camss.h
>> index 2477821dfd85..4b13012940bf 100644
>> --- a/drivers/media/platform/qcom/camss/camss.h
>> +++ b/drivers/media/platform/qcom/camss/camss.h
>> @@ -22,6 +22,7 @@
>>   #include "camss-csiphy.h"
>>   #include "camss-ispif.h"
>>   #include "camss-vfe.h"
>> +#include "camss-format.h"
>>     #define to_camss(ptr_module)    \
>>       container_of(ptr_module, struct camss, ptr_module)
> 
> -- 
> Best wishes,
> Vladimir

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ