diff options
Diffstat (limited to 'users/flokli/ipu6-softisp/libcamera/0001-libcamera-Add-support-for-IGIG_GBGR_IGIG_GRGB-bayer-.patch')
-rw-r--r-- | users/flokli/ipu6-softisp/libcamera/0001-libcamera-Add-support-for-IGIG_GBGR_IGIG_GRGB-bayer-.patch | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/users/flokli/ipu6-softisp/libcamera/0001-libcamera-Add-support-for-IGIG_GBGR_IGIG_GRGB-bayer-.patch b/users/flokli/ipu6-softisp/libcamera/0001-libcamera-Add-support-for-IGIG_GBGR_IGIG_GRGB-bayer-.patch deleted file mode 100644 index 5340901edb94..000000000000 --- a/users/flokli/ipu6-softisp/libcamera/0001-libcamera-Add-support-for-IGIG_GBGR_IGIG_GRGB-bayer-.patch +++ /dev/null @@ -1,243 +0,0 @@ -From 0e94883c2f4f6164d40d4ea355449ba0864dc4f9 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 19 Dec 2023 11:16:26 +0100 -Subject: [PATCH 1/3] libcamera: Add support for IGIG_GBGR_IGIG_GRGB bayer - order DNU - -The ov01a1s sensor has the following bayer pattern (4x4 tile repeating): - -IGIG -GBGR -IGIG -GRGB - -Add support for this PixelFormat to libcamera. - -Do Not Upstream, first the include/linux/media-bus-format.h and -include/linux/videodev2.h changes need to land in the upstream kernel. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - include/libcamera/internal/bayer_format.h | 3 ++- - include/linux/drm_fourcc.h | 2 ++ - include/linux/media-bus-format.h | 4 +++- - include/linux/videodev2.h | 3 +++ - src/libcamera/bayer_format.cpp | 5 +++++ - src/libcamera/formats.cpp | 20 ++++++++++++++++++++ - src/libcamera/formats.yaml | 5 +++++ - src/libcamera/sensor/camera_sensor.cpp | 3 +++ - src/libcamera/v4l2_pixelformat.cpp | 4 ++++ - src/libcamera/v4l2_subdevice.cpp | 7 +++++++ - 10 files changed, 54 insertions(+), 2 deletions(-) - -diff --git a/include/libcamera/internal/bayer_format.h b/include/libcamera/internal/bayer_format.h -index 5c14bb5f..49b7f417 100644 ---- a/include/libcamera/internal/bayer_format.h -+++ b/include/libcamera/internal/bayer_format.h -@@ -27,7 +27,8 @@ public: - GBRG = 1, - GRBG = 2, - RGGB = 3, -- MONO = 4 -+ MONO = 4, -+ IGIG_GBGR_IGIG_GRGB = 5, - }; - - enum class Packing : uint16_t { -diff --git a/include/linux/drm_fourcc.h b/include/linux/drm_fourcc.h -index b4e1a092..070696bc 100644 ---- a/include/linux/drm_fourcc.h -+++ b/include/linux/drm_fourcc.h -@@ -447,6 +447,8 @@ extern "C" { - #define DRM_FORMAT_SGRBG10 fourcc_code('B', 'A', '1', '0') - #define DRM_FORMAT_SGBRG10 fourcc_code('G', 'B', '1', '0') - #define DRM_FORMAT_SBGGR10 fourcc_code('B', 'G', '1', '0') -+/* Mixed 10 bit bayer + ir pixel pattern found on Omnivision ov01a1s */ -+#define DRM_FORMAT_SIGIG_GBGR_IGIG_GRGB10 fourcc_code('O', 'V', '1', 'S') - - /* 12-bit Bayer formats */ - #define DRM_FORMAT_SRGGB12 fourcc_code('R', 'G', '1', '2') -diff --git a/include/linux/media-bus-format.h b/include/linux/media-bus-format.h -index f05f747e..1b4a65db 100644 ---- a/include/linux/media-bus-format.h -+++ b/include/linux/media-bus-format.h -@@ -121,7 +121,7 @@ - #define MEDIA_BUS_FMT_YUV16_1X48 0x202a - #define MEDIA_BUS_FMT_UYYVYY16_0_5X48 0x202b - --/* Bayer - next is 0x3021 */ -+/* Bayer - next is 0x3022 */ - #define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001 - #define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013 - #define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002 -@@ -154,6 +154,8 @@ - #define MEDIA_BUS_FMT_SGBRG16_1X16 0x301e - #define MEDIA_BUS_FMT_SGRBG16_1X16 0x301f - #define MEDIA_BUS_FMT_SRGGB16_1X16 0x3020 -+/* Mixed bayer + ir pixel pattern found on ov01a1s */ -+#define MEDIA_BUS_FMT_SIGIG_GBGR_IGIG_GRGB10_1X10 0x3021 - - /* JPEG compressed formats - next is 0x4002 */ - #define MEDIA_BUS_FMT_JPEG_1X8 0x4001 -diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h -index 0b5482a0..a51d6755 100644 ---- a/include/linux/videodev2.h -+++ b/include/linux/videodev2.h -@@ -704,6 +704,9 @@ struct v4l2_pix_format { - #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */ - #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */ - #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16 RGRG.. GBGB.. */ -+ /* 10bit mixed bayer + ir pixel pattern found on ov01a1s */ -+#define V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10 v4l2_fourcc('O', 'V', '1', 'S') /* unpacked */ -+#define V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10P v4l2_fourcc('O', 'V', '1', 'P') /* packed */ - - /* HSV formats */ - #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3') -diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp -index 014f716d..325887a2 100644 ---- a/src/libcamera/bayer_format.cpp -+++ b/src/libcamera/bayer_format.cpp -@@ -112,6 +112,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{ - { formats::SGRBG10, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10) } }, - { { BayerFormat::RGGB, 10, BayerFormat::Packing::None }, - { formats::SRGGB10, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10) } }, -+ { { BayerFormat::IGIG_GBGR_IGIG_GRGB, 10, BayerFormat::Packing::None }, -+ { formats::SIGIG_GBGR_IGIG_GRGB10, V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10) } }, - { { BayerFormat::BGGR, 10, BayerFormat::Packing::CSI2 }, - { formats::SBGGR10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P) } }, - { { BayerFormat::GBRG, 10, BayerFormat::Packing::CSI2 }, -@@ -120,6 +122,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{ - { formats::SGRBG10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P) } }, - { { BayerFormat::RGGB, 10, BayerFormat::Packing::CSI2 }, - { formats::SRGGB10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P) } }, -+ { { BayerFormat::IGIG_GBGR_IGIG_GRGB, 10, BayerFormat::Packing::CSI2 }, -+ { formats::SIGIG_GBGR_IGIG_GRGB10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10P) } }, - { { BayerFormat::BGGR, 10, BayerFormat::Packing::IPU3 }, - { formats::SBGGR10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10) } }, - { { BayerFormat::GBRG, 10, BayerFormat::Packing::IPU3 }, -@@ -211,6 +215,7 @@ const std::unordered_map<unsigned int, BayerFormat> mbusCodeToBayer{ - { MEDIA_BUS_FMT_SGBRG10_1X10, { BayerFormat::GBRG, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG10_1X10, { BayerFormat::GRBG, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB10_1X10, { BayerFormat::RGGB, 10, BayerFormat::Packing::None } }, -+ { MEDIA_BUS_FMT_SIGIG_GBGR_IGIG_GRGB10_1X10, { BayerFormat::IGIG_GBGR_IGIG_GRGB, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR12_1X12, { BayerFormat::BGGR, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG12_1X12, { BayerFormat::GBRG, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG12_1X12, { BayerFormat::GRBG, 12, BayerFormat::Packing::None } }, -diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp -index cf41f2c2..13ac3253 100644 ---- a/src/libcamera/formats.cpp -+++ b/src/libcamera/formats.cpp -@@ -639,6 +639,16 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, -+ { formats::SIGIG_GBGR_IGIG_GRGB10, { -+ .name = "SIGIG_GBGR_IGIG_GRGB10", -+ .format = formats::SIGIG_GBGR_IGIG_GRGB10, -+ .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10), }, -+ .bitsPerPixel = 10, -+ .colourEncoding = PixelFormatInfo::ColourEncodingRAW, -+ .packed = false, -+ .pixelsPerGroup = 4, -+ .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, -+ } }, - { formats::SBGGR10_CSI2P, { - .name = "SBGGR10_CSI2P", - .format = formats::SBGGR10_CSI2P, -@@ -679,6 +689,16 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ - .pixelsPerGroup = 4, - .planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, -+ { formats::SIGIG_GBGR_IGIG_GRGB10_CSI2P, { -+ .name = "SIGIG_GBGR_IGIG_GRGB10_CSI2P", -+ .format = formats::SIGIG_GBGR_IGIG_GRGB10_CSI2P, -+ .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10P), }, -+ .bitsPerPixel = 10, -+ .colourEncoding = PixelFormatInfo::ColourEncodingRAW, -+ .packed = true, -+ .pixelsPerGroup = 4, -+ .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, -+ } }, - { formats::SBGGR12, { - .name = "SBGGR12", - .format = formats::SBGGR12, -diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml -index fe027a7c..394f980c 100644 ---- a/src/libcamera/formats.yaml -+++ b/src/libcamera/formats.yaml -@@ -107,6 +107,8 @@ formats: - fourcc: DRM_FORMAT_SGBRG10 - - SBGGR10: - fourcc: DRM_FORMAT_SBGGR10 -+ - SIGIG_GBGR_IGIG_GRGB10: -+ fourcc: DRM_FORMAT_SIGIG_GBGR_IGIG_GRGB10 - - - SRGGB12: - fourcc: DRM_FORMAT_SRGGB12 -@@ -151,6 +153,9 @@ formats: - - SBGGR10_CSI2P: - fourcc: DRM_FORMAT_SBGGR10 - mod: MIPI_FORMAT_MOD_CSI2_PACKED -+ - SIGIG_GBGR_IGIG_GRGB10_CSI2P: -+ fourcc: DRM_FORMAT_SIGIG_GBGR_IGIG_GRGB10 -+ mod: MIPI_FORMAT_MOD_CSI2_PACKED - - - SRGGB12_CSI2P: - fourcc: DRM_FORMAT_SRGGB12 -diff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp -index c6d7f801..77c396b9 100644 ---- a/src/libcamera/sensor/camera_sensor.cpp -+++ b/src/libcamera/sensor/camera_sensor.cpp -@@ -526,6 +526,9 @@ int CameraSensor::initProperties() - case BayerFormat::MONO: - cfa = properties::draft::MONO; - break; -+ case BayerFormat::IGIG_GBGR_IGIG_GRGB: -+ cfa = properties::draft::RGB; -+ break; - } - - properties_.set(properties::draft::ColorFilterArrangement, cfa); -diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp -index 70568335..a2fbd644 100644 ---- a/src/libcamera/v4l2_pixelformat.cpp -+++ b/src/libcamera/v4l2_pixelformat.cpp -@@ -159,6 +159,8 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{ - { formats::SGRBG10, "10-bit Bayer GRGR/BGBG" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), - { formats::SRGGB10, "10-bit Bayer RGRG/GBGB" } }, -+ { V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10), -+ { formats::SIGIG_GBGR_IGIG_GRGB10, "10-bit Bayer GRGB/IGIG/GBGR/IGIG" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), - { formats::SBGGR10_CSI2P, "10-bit Bayer BGBG/GRGR Packed" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), -@@ -167,6 +169,8 @@ const std::map<V4L2PixelFormat, V4L2PixelFormat::Info> vpf2pf{ - { formats::SGRBG10_CSI2P, "10-bit Bayer GRGR/BGBG Packed" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), - { formats::SRGGB10_CSI2P, "10-bit Bayer RGRG/GBGB Packed" } }, -+ { V4L2PixelFormat(V4L2_PIX_FMT_SIGIG_GBGR_IGIG_GRGB10P), -+ { formats::SIGIG_GBGR_IGIG_GRGB10_CSI2P, "10-bit Bayer GRGB/IGIG/GBGR/IGIG Packed" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), - { formats::SBGGR12, "12-bit Bayer BGBG/GRGR" } }, - { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), -diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp -index 6da77775..0ba8c0de 100644 ---- a/src/libcamera/v4l2_subdevice.cpp -+++ b/src/libcamera/v4l2_subdevice.cpp -@@ -595,6 +595,13 @@ const std::map<uint32_t, MediaBusFormatInfo> mediaBusFormatInfo{ - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - } }, -+ { MEDIA_BUS_FMT_SIGIG_GBGR_IGIG_GRGB10_1X10, { -+ .name = "SIGIG_GBGR_IGIG_GRGB10_1X10", -+ .code = MEDIA_BUS_FMT_SIGIG_GBGR_IGIG_GRGB10_1X10, -+ .type = MediaBusFormatInfo::Type::Image, -+ .bitsPerPixel = 10, -+ .colourEncoding = PixelFormatInfo::ColourEncodingRAW, -+ } }, - { MEDIA_BUS_FMT_SBGGR12_1X12, { - .name = "SBGGR12_1X12", - .code = MEDIA_BUS_FMT_SBGGR12_1X12, --- -2.45.2 - |