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.
161 lines
6.2 KiB
161 lines
6.2 KiB
From 574991645764df30366f9f2c319d5d9529eed5ba Mon Sep 17 00:00:00 2001
|
|
From: icarpis <itay.carpis@intel.com>
|
|
Date: Tue, 14 Aug 2018 10:18:09 +0300
|
|
Date: Tue, 14 Aug 2018 10:54:48 +0300
|
|
Subject: [PATCH] Patch D400/SR300/RS5 formats
|
|
|
|
---
|
|
drivers/media/usb/uvc/Makefile | 2 ++
|
|
drivers/media/usb/uvc/uvc_driver.c | 37 ++++++++++++++++++++++++++++++++++++
|
|
drivers/media/usb/uvc/uvcvideo.h | 28 ++++++++++++++++++++++++++-
|
|
drivers/media/v4l2-core/v4l2-dev.c | 1 +
|
|
drivers/media/v4l2-core/v4l2-ioctl.c | 3 +++
|
|
include/uapi/linux/videodev2.h | 3 +++
|
|
6 files changed, 73 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile
|
|
index 4f9eee4..71e0988 100644
|
|
--- a/drivers/media/usb/uvc/Makefile
|
|
+++ b/drivers/media/usb/uvc/Makefile
|
|
@@ -1,4 +1,6 @@
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
+CONFIG_MODULE_SIG=n
|
|
+ccflags-y := -DDRIVER_VERSION_SUFFIX=\".librealsense2-patch\"
|
|
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 uvc_metadata.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 fd387bf..90c2bc9 100644
|
|
--- a/drivers/media/usb/uvc/uvc_driver.c
|
|
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
|
@@ -209,6 +209,43 @@ static struct uvc_format_desc uvc_fmts[] = {
|
|
.guid = UVC_GUID_FORMAT_INZI,
|
|
.fcc = V4L2_PIX_FMT_INZI,
|
|
},
|
|
+ {
|
|
+ .name = "Luminosity data 8-bit (L8)",
|
|
+ .guid = UVC_GUID_FORMAT_L8,
|
|
+ .fcc = V4L2_PIX_FMT_GREY,
|
|
+ },
|
|
+ {
|
|
+ .name = "Depth data 16-bit (D16)",
|
|
+ .guid = UVC_GUID_FORMAT_D16,
|
|
+ .fcc = V4L2_PIX_FMT_Z16,
|
|
+ },
|
|
+ {
|
|
+ .name = "Packed raw data 10-bit",
|
|
+ .guid = UVC_GUID_FORMAT_W10,
|
|
+ .fcc = V4L2_PIX_FMT_W10,
|
|
+ },
|
|
+ {
|
|
+ .name = "Confidence data (C )",
|
|
+ .guid = UVC_GUID_FORMAT_CONFIDENCE_MAP,
|
|
+ .fcc = V4L2_PIX_FMT_CONFIDENCE_MAP,
|
|
+ },
|
|
+ /* FishEye 8-bit monochrome */
|
|
+ {
|
|
+ .name = "Raw data 8-bit (RAW8)",
|
|
+ .guid = UVC_GUID_FORMAT_RAW8,
|
|
+ .fcc = V4L2_PIX_FMT_GREY,
|
|
+ },
|
|
+ /* Legacy formats for backward-compatibility*/
|
|
+ {
|
|
+ .name = "Raw data 16-bit (RW16)",
|
|
+ .guid = UVC_GUID_FORMAT_RW16,
|
|
+ .fcc = V4L2_PIX_FMT_RW16,
|
|
+ },
|
|
+ {
|
|
+ .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 d9e7c70..4d51e80 100644
|
|
--- a/drivers/media/usb/uvc/uvcvideo.h
|
|
+++ b/drivers/media/usb/uvc/uvcvideo.h
|
|
@@ -153,6 +153,28 @@
|
|
#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_L8 \
|
|
+ { '2', 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_W10 \
|
|
+ { '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_CONFIDENCE_MAP \
|
|
+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \
|
|
+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
|
+/* Legacy formats */
|
|
+#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_BAYER16 \
|
|
+ { 'R', 'W', '1', '6', 0x66, 0x1a, 0x42, 0xa2, \
|
|
+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a}
|
|
|
|
#define UVC_GUID_FORMAT_D3DFMT_L8 \
|
|
{0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, \
|
|
@@ -163,7 +185,11 @@
|
|
* Driver specific constants.
|
|
*/
|
|
|
|
-#define DRIVER_VERSION "1.1.1"
|
|
+#ifndef DRIVER_VERSION_SUFFIX
|
|
+#define DRIVER_VERSION_SUFFIX
|
|
+#endif
|
|
+
|
|
+#define DRIVER_VERSION "1.1.1" DRIVER_VERSION_SUFFIX
|
|
|
|
/* Number of isochronous URBs. */
|
|
#define UVC_URBS 5
|
|
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
|
|
index 1d0b220..56df662 100644
|
|
--- a/drivers/media/v4l2-core/v4l2-dev.c
|
|
+++ b/drivers/media/v4l2-core/v4l2-dev.c
|
|
@@ -1076,3 +1076,4 @@ MODULE_AUTHOR("Alan Cox, Mauro Carvalho Chehab <mchehab@infradead.org>");
|
|
MODULE_DESCRIPTION("Device registrar for Video4Linux drivers v2");
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_ALIAS_CHARDEV_MAJOR(VIDEO_MAJOR);
|
|
+MODULE_VERSION("librealsense2-patch");
|
|
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
index 260288c..53c66dc 100644
|
|
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
@@ -1251,6 +1251,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
|
|
case V4L2_META_FMT_VSP1_HGO: descr = "R-Car VSP1 1-D Histogram"; break;
|
|
case V4L2_META_FMT_VSP1_HGT: descr = "R-Car VSP1 2-D Histogram"; break;
|
|
case V4L2_META_FMT_UVC: descr = "UVC payload header metadata"; break;
|
|
+ case V4L2_PIX_FMT_RW16: descr = "16-bit Raw data"; break;
|
|
+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break;
|
|
+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit/pixel 8-bit pack"; break;
|
|
|
|
default:
|
|
/* Compressed formats */
|
|
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
|
|
index 9827189..b6ce918 100644
|
|
--- a/include/uapi/linux/videodev2.h
|
|
+++ b/include/uapi/linux/videodev2.h
|
|
@@ -668,6 +668,9 @@ struct v4l2_pix_format {
|
|
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
|
|
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */
|
|
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
|
|
+#define V4L2_PIX_FMT_RW16 v4l2_fourcc('R', 'W', '1', '6') /* Raw data 16-bit */
|
|
+#define V4L2_PIX_FMT_W10 v4l2_fourcc('W', '1', '0', ' ') /* Packed raw data 10-bit */
|
|
+#define V4L2_PIX_FMT_CONFIDENCE_MAP v4l2_fourcc('C', ' ', ' ', ' ') /* Two pixels in one byte */
|
|
|
|
/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
|
|
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
|
|
--
|
|
2.7.4
|
|
|