You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
7.0 KiB
187 lines
7.0 KiB
From 2fb29ac45b298b1dbea7fca174b6e8b7d22e4fb3 Mon Sep 17 00:00:00 2001
|
|
From: administrator <evgeni.raikhel@intel.com>
|
|
Date: Sun, 4 Jun 2017 17:30:59 +0300
|
|
Subject: [PATCH] RS4xx and ZR300 Pixel formats patch
|
|
|
|
Signed-off-by: administrator <evgeni.raikhel@intel.com>
|
|
---
|
|
drivers/media/usb/uvc/Makefile | 1 +
|
|
drivers/media/usb/uvc/uvc_driver.c | 55 ++++++++++++++++++++++++++++++++++++
|
|
drivers/media/usb/uvc/uvcvideo.h | 35 ++++++++++++++++++++++-
|
|
drivers/media/v4l2-core/v4l2-ioctl.c | 5 ++++
|
|
include/uapi/linux/videodev2.h | 6 ++++
|
|
5 files changed, 101 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile
|
|
index c26d12f..d86cf22 100644
|
|
--- a/drivers/media/usb/uvc/Makefile
|
|
+++ b/drivers/media/usb/uvc/Makefile
|
|
@@ -1,3 +1,4 @@
|
|
+CONFIG_MODULE_SIG=n
|
|
uvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.o uvc_ctrl.o \
|
|
uvc_status.o uvc_isight.o uvc_debugfs.o
|
|
ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
|
|
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
|
|
index 9b8ac20..9d44f8e 100644
|
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
|
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
|
@@ -168,6 +168,66 @@ static struct uvc_format_desc uvc_fmts[] = {
|
|
.guid = UVC_GUID_FORMAT_RW10,
|
|
.fcc = V4L2_PIX_FMT_SRGGB10P,
|
|
},
|
|
+ {
|
|
+ .name = "Raw data 8-bit (RAW8)",
|
|
+ .guid = UVC_GUID_FORMAT_RAW8,
|
|
+ .fcc = V4L2_PIX_FMT_GREY,
|
|
+ },
|
|
+ {
|
|
+ .name = "Raw data 16-bit (RW16)",
|
|
+ .guid = UVC_GUID_FORMAT_RW16,
|
|
+ .fcc = V4L2_PIX_FMT_RW16,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth 16-bit (INVZ)",
|
|
+ .guid = UVC_GUID_FORMAT_INVZ,
|
|
+ .fcc = V4L2_PIX_FMT_Z16,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth:IR 16:8 24-bit (INZI)",
|
|
+ .guid = UVC_GUID_FORMAT_INZI,
|
|
+ .fcc = V4L2_PIX_FMT_INZI,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth 16-bit (INVR)",
|
|
+ .guid = UVC_GUID_FORMAT_INVR,
|
|
+ .fcc = V4L2_PIX_FMT_INVR,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth:IR 16:8 24-bit (INRI)",
|
|
+ .guid = UVC_GUID_FORMAT_INRI,
|
|
+ .fcc = V4L2_PIX_FMT_INRI,
|
|
+ },
|
|
+ {
|
|
+ .name = "Infrared 8-bit (INVI)",
|
|
+ .guid = UVC_GUID_FORMAT_INVI,
|
|
+ .fcc = V4L2_PIX_FMT_GREY,
|
|
+ },
|
|
+ {
|
|
+ .name = "FlickerIR 8-bit (RELI)",
|
|
+ .guid = UVC_GUID_FORMAT_RELI,
|
|
+ .fcc = V4L2_PIX_FMT_RELI,
|
|
+ },
|
|
+ {
|
|
+ .name = "Luminosity data 8-bit (L8)",
|
|
+ .guid = UVC_GUID_FORMAT_L8,
|
|
+ .fcc = V4L2_PIX_FMT_GREY,
|
|
+ },
|
|
+ {
|
|
+ .name = "Luminosity data 16-bit (L16)",
|
|
+ .guid = UVC_GUID_FORMAT_L16,
|
|
+ .fcc = V4L2_PIX_FMT_Y16,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth data 16-bit (D16)",
|
|
+ .guid = UVC_GUID_FORMAT_D16,
|
|
+ .fcc = V4L2_PIX_FMT_Z16,
|
|
+ },
|
|
+ {
|
|
+ .name = "16-bit Bayer BGBG/GRGR",
|
|
+ .guid = UVC_GUID_FORMAT_BAYER16,
|
|
+ .fcc = V4L2_PIX_FMT_SBGGR16,
|
|
+ },
|
|
};
|
|
|
|
/* ------------------------------------------------------------------------
|
|
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
|
|
index 7e4d3ee..020dbb7 100644
|
|
--- a/drivers/media/usb/uvc/uvcvideo.h
|
|
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
|
@@ -115,7 +115,6 @@
|
|
#define UVC_GUID_FORMAT_M420 \
|
|
{ 'M', '4', '2', '0', 0x00, 0x00, 0x10, 0x00, \
|
|
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
-
|
|
#define UVC_GUID_FORMAT_H264 \
|
|
{ 'H', '2', '6', '4', 0x00, 0x00, 0x10, 0x00, \
|
|
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
@@ -131,6 +130,43 @@
|
|
#define UVC_GUID_FORMAT_RW10 \
|
|
{ 'R', 'W', '1', '0', 0x00, 0x00, 0x10, 0x00, \
|
|
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+#define UVC_GUID_FORMAT_RAW8 \
|
|
+ { 'R', 'A', 'W', '8', 0x66, 0x1a, 0x42, 0xa2, \
|
|
+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a}
|
|
+#define UVC_GUID_FORMAT_RW16 \
|
|
+ { 'R', 'W', '1', '6', 0x00, 0x00, 0x10, 0x00, \
|
|
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+#define UVC_GUID_FORMAT_INVZ \
|
|
+ { 'I', 'N', 'V', 'Z', 0x90, 0x2d, 0x58, 0x4a, \
|
|
+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b}
|
|
+#define UVC_GUID_FORMAT_INZI \
|
|
+ { 'I', 'N', 'Z', 'I', 0x66, 0x1a, 0x42, 0xa2, \
|
|
+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a}
|
|
+#define UVC_GUID_FORMAT_INVR \
|
|
+ { 'I', 'N', 'V', 'R', 0x90, 0x2d, 0x58, 0x4a, \
|
|
+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b}
|
|
+#define UVC_GUID_FORMAT_INRI \
|
|
+ { 'I', 'N', 'R', 'I', 0x90, 0x2d, 0x58, 0x4a, \
|
|
+ 0x92, 0x0b, 0x77, 0x3f, 0x1f, 0x2c, 0x55, 0x6b}
|
|
+#define UVC_GUID_FORMAT_INVI \
|
|
+ { 'I', 'N', 'V', 'I', 0xdb, 0x57, 0x49, 0x5e, \
|
|
+ 0x8e, 0x3f, 0xf4, 0x79, 0x53, 0x2b, 0x94, 0x6f}
|
|
+#define UVC_GUID_FORMAT_RELI \
|
|
+ { 'R', 'E', 'L', 'I', 0x14, 0x13, 0x43, 0xf9, \
|
|
+ 0xa7, 0x5a, 0xee, 0x6b, 0xbf, 0x01, 0x2e, 0x23}
|
|
+#define UVC_GUID_FORMAT_L8 \
|
|
+ { '2', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \
|
|
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+#define UVC_GUID_FORMAT_L16 \
|
|
+ { 'Q', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \
|
|
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+#define UVC_GUID_FORMAT_D16 \
|
|
+ { 'P', 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \
|
|
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+#define UVC_GUID_FORMAT_BAYER16 \
|
|
+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \
|
|
+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a}
|
|
+
|
|
|
|
/* ------------------------------------------------------------------------
|
|
* Driver specific constants.
|
|
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
index 7486af2..124dd35 100644
|
|
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
@@ -1229,6 +1229,11 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
|
|
case V4L2_SDR_FMT_CS8: descr = "Complex S8"; break;
|
|
case V4L2_SDR_FMT_CS14LE: descr = "Complex S14LE"; break;
|
|
case V4L2_SDR_FMT_RU12LE: descr = "Real U12LE"; break;
|
|
+ case V4L2_PIX_FMT_Y8I: descr = "8-bit Greyscale L/R interleaved"; break;
|
|
+ case V4L2_PIX_FMT_Y12I: descr = "12-bit Grey L/R interleaved"; break;
|
|
+ case V4L2_PIX_FMT_Z16: descr = "16-bit Depth data"; break;
|
|
+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break;
|
|
+ case V4L2_PIX_FMT_INZI: descr = "32-bit IR:Depth 10:16"; break;
|
|
|
|
default:
|
|
/* Compressed formats */
|
|
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
|
|
index 421d274..c41b5c0 100644
|
|
--- a/include/uapi/linux/videodev2.h
|
|
+++ b/include/uapi/linux/videodev2.h
|
|
@@ -624,6 +624,12 @@ struct v4l2_pix_format {
|
|
#define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */
|
|
#define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
|
|
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
|
|
+#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* Greyscale 16-bit */
|
|
+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */
|
|
+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* 24 Depth/IR 16:8 */
|
|
+#define V4L2_PIX_FMT_INVR v4l2_fourcc('I', 'N', 'V', 'R') /* 16 Depth */
|
|
+#define V4L2_PIX_FMT_INRI v4l2_fourcc('I', 'N', 'R', 'I') /* 24 Depth/IR 16:8 */
|
|
+#define V4L2_PIX_FMT_RELI v4l2_fourcc('R', 'E', 'L', 'I') /* 8 IR alternating on off illumination */
|
|
|
|
/* SDR formats - used only for Software Defined Radio devices */
|
|
#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
|
|
--
|
|
2.7.4
|
|
|