From 284f4c1e222ed2f141c328e4d69ee2cd0ce7c1d3 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Tue, 29 Nov 2022 11:16:11 -0800 Subject: [PATCH] NVIDIA: SAUCE: include/linux: Add new packed v4l2 pixel format BugLink: https://bugs.launchpad.net/bugs/2072591 Add pacekd 10-bit formats to v4l2 pixel formats list. X(Bayer)10 packs 3 pixels to 4 bytes with two MSB bits set to zero. All four corresponding phases are added. Snapshot of packing different bayer formats below: BGGR10 - X2B10G10B10 X2G10B10G10.. X2G10R10G10 X2R10G10R10.. RGGB10 - X2R10G10R10 X2G10R10G10.. X2G10B10G10 X2B10G10B10.. GRGB10 - X2G10R10G10 X2R10G10R10.. X2G10B10G10 X2B10G10B10.. GBGR10 - X2G10B10G10 X2B10G10B10.. X2G10R10G10 X2R10G10R10.. In general if the pixels are L0L1L2L3L4L5.., the packed 32-bit integers would be X2L2L1L0 X2L5L4L3.. Add corresponding MBUS formats to represent packed 10bit. http://nvbugs/200602400 Signed-off-by: Frank Chen Tested-by: Abhilash G Reviewed-by: Abhilash G Signed-off-by: Laxman Dewangan Acked-by: Jacob Martin Acked-by: Noah Wager Signed-off-by: Noah Wager --- include/uapi/linux/media-bus-format.h | 5 +++++ include/uapi/linux/videodev2.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h index f05f747e444d..d10e57d983c3 100644 --- a/include/uapi/linux/media-bus-format.h +++ b/include/uapi/linux/media-bus-format.h @@ -154,6 +154,11 @@ #define MEDIA_BUS_FMT_SGBRG16_1X16 0x301e #define MEDIA_BUS_FMT_SGRBG16_1X16 0x301f #define MEDIA_BUS_FMT_SRGGB16_1X16 0x3020 +/* Maintain a higher offset untill upstreamed */ +#define MEDIA_BUS_FMT_XBGGR10P_3X10 0x3050 +#define MEDIA_BUS_FMT_XGBRG10P_3X10 0x3051 +#define MEDIA_BUS_FMT_XGRBG10P_3X10 0x3052 +#define MEDIA_BUS_FMT_XRGGB10P_3X10 0x3053 /* JPEG compressed formats - next is 0x4002 */ #define MEDIA_BUS_FMT_JPEG_1X8 0x4001 diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 0a388d68c5ad..4665de26201d 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -692,6 +692,11 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */ #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */ #define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */ + /*10bit raw bayer packed, 4 bytes for every 3 pixels */ +#define V4L2_PIX_FMT_XBGGR10P v4l2_fourcc('X', 'B', 'G', 'P') /* 32 BGGR Packed 10-10-10-2 */ +#define V4L2_PIX_FMT_XGBRG10P v4l2_fourcc('X', 'G', 'B', 'P') /* 32 GBRG Packed 10-10-10-2 */ +#define V4L2_PIX_FMT_XGRBG10P v4l2_fourcc('X', 'G', 'R', 'P') /* 32 GRBG Packed 10-10-10-2 */ +#define V4L2_PIX_FMT_XRGGB10P v4l2_fourcc('X', 'R', 'G', 'P') /* 32 RGGB Packed 10-10-10-2 */ /* 10bit raw bayer packed, 5 bytes for every 4 pixels */ #define V4L2_PIX_FMT_SBGGR10P v4l2_fourcc('p', 'B', 'A', 'A') #define V4L2_PIX_FMT_SGBRG10P v4l2_fourcc('p', 'G', 'A', 'A')