These formats are compressed 12-bit raw bayer formats with four different
pixel orders. The pixel follow one another without any padding,
thus are packed in a 'linear' fashion.

Signed-off-by: Edgar Thier <i...@edgarthier.net>
---
 drivers/media/usb/uvc/uvc_driver.c | 21 ++++++++++++++++++++-
 drivers/media/usb/uvc/uvcvideo.h   | 12 ++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/media/usb/uvc/uvc_driver.c 
b/drivers/media/usb/uvc/uvc_driver.c
index 10cfe8e51626..d12298d18406 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -179,6 +179,26 @@ static struct uvc_format_desc uvc_fmts[] = {
                .guid           = UVC_GUID_FORMAT_RW10,
                .fcc            = V4L2_PIX_FMT_SRGGB10P,
        },
+       {
+               .name           = "Bayer 12-bit linear packed (SBGGR12LP)",
+               .guid           = UVC_GUID_FORMAT_BGCP,
+               .fcc            = V4L2_PIX_FMT_SBGGR12LP,
+       },
+       {
+               .name           = "Bayer 12-bit linear packed (SGBRG12LP)",
+               .guid           = UVC_GUID_FORMAT_GBCP,
+               .fcc            = V4L2_PIX_FMT_SGBRG12LP,
+       },
+       {
+               .name           = "Bayer 12-bit linear packed (SRGGB12LP)",
+               .guid           = UVC_GUID_FORMAT_RGCP,
+               .fcc            = V4L2_PIX_FMT_SRGGB12LP,
+       },
+       {
+               .name           = "Bayer 12-bit linear packed (SGRBG12LP)",
+               .guid           = UVC_GUID_FORMAT_GRCP,
+               .fcc            = V4L2_PIX_FMT_SGRBG12LP,
+       },
        {
                .name           = "Bayer 16-bit (SBGGR16)",
                .guid           = UVC_GUID_FORMAT_BG16,
@@ -2924,4 +2944,3 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRIVER_VERSION);
-
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index c7c1baa90dea..f5be00fb9a73 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -108,6 +108,18 @@
 #define UVC_GUID_FORMAT_RGGB \
        { 'R',  'G',  'G',  'B', 0x00, 0x00, 0x10, 0x00, \
         0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+#define UVC_GUID_FORMAT_BGCP \
+       { 'B',  'G',  'C',  'p', 0x00, 0x00, 0x10, 0x00, \
+        0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+#define UVC_GUID_FORMAT_GBCP \
+       { 'G',  'B',  'C',  'p', 0x00, 0x00, 0x10, 0x00, \
+        0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+#define UVC_GUID_FORMAT_RGCP \
+       { 'R',  'G',  'C',  'p', 0x00, 0x00, 0x10, 0x00, \
+        0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
+#define UVC_GUID_FORMAT_GRCP \
+       { 'G',  'R',  'C',  'p', 0x00, 0x00, 0x10, 0x00, \
+        0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
 #define UVC_GUID_FORMAT_BG16 \
        { 'B',  'G',  '1',  '6', 0x00, 0x00, 0x10, 0x00, \
         0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
-- 
2.20.1

Reply via email to