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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 13 May 2024 18:15:43 +0300
From: Vladimir Zapolskiy <vladimir.zapolskiy@...aro.org>
To: Gjorgji Rosikopulos <quic_grosikop@...cinc.com>, 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

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.

> +#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.

> +/*
> + * 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.

> +};
> +
> +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.

>   
>   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