From 580828426f36c350d05292983f144992f7504e68 Mon Sep 17 00:00:00 2001 From: Nobuo Tsukamoto Date: Sun, 21 Feb 2021 08:52:09 +0900 Subject: [PATCH] Update l4t-r32.5-4.9 --- .../01-realsense-camera-formats-L4T-4.9.patch | 234 ++---------------- .../02-realsense-metadata-L4T-4.9.patch | 227 +---------------- scripts/patch-realsense-ubuntu-L4T.sh | 4 +- 3 files changed, 21 insertions(+), 444 deletions(-) diff --git a/scripts/Tegra/LRS_Patches/01-realsense-camera-formats-L4T-4.9.patch b/scripts/Tegra/LRS_Patches/01-realsense-camera-formats-L4T-4.9.patch index 5550a86f1d..f0b666bc9d 100644 --- a/scripts/Tegra/LRS_Patches/01-realsense-camera-formats-L4T-4.9.patch +++ b/scripts/Tegra/LRS_Patches/01-realsense-camera-formats-L4T-4.9.patch @@ -1,135 +1,21 @@ -From ceb29b08b480a2a6a5e9dccf396a284378268037 Mon Sep 17 00:00:00 2001 -From: aangerma -From: Evgeni Raikhel -From: icarpis - -Date: Thu, 30 Aug 2018 16:07:01 +0300 -Subject: [PATCH] [PATCH] RS400 ,SR300, RS500 pixel formats - -Signed-off-by: Evgeni Raikhel ---- - drivers/media/usb/uvc/Makefile | 1 + - drivers/media/usb/uvc/uvc_driver.c | 102 +++++++++++++++++++++++++++ - drivers/media/usb/uvc/uvcvideo.h | 54 ++++++++++++++ - drivers/media/v4l2-core/v4l2-ioctl.c | 11 +++ - include/uapi/linux/videodev2.h | 13 ++++ - 5 files changed, 181 insertions(+) - diff --git a/drivers/media/usb/uvc/Makefile b/drivers/media/usb/uvc/Makefile -index c26d12fdb8f4..d86cf22155d1 100644 +index c26d12fdb8f4..cf982eed5303 100644 --- a/drivers/media/usb/uvc/Makefile +++ b/drivers/media/usb/uvc/Makefile @@ -1,3 +1,4 @@ -+CONFIG_MODULE_SIG=n +++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 f4d55613b311..ea57491c3e84 100644 +index 879b91816ef9..e49e30efb736 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -169,6 +169,108 @@ static struct uvc_format_desc uvc_fmts[] = { - .guid = UVC_GUID_FORMAT_RW10, - .fcc = V4L2_PIX_FMT_SRGGB10P, +@@ -254,6 +254,11 @@ static struct uvc_format_desc uvc_fmts[] = { + .guid = UVC_GUID_FORMAT_PAIR, + .fcc = V4L2_PIX_FMT_PAIR, }, + { -+ .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, -+ }, -+ { -+ .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/Development formats for backward-compatibility*/ -+ { -+ .name = "Raw data 16-bit (RW16)", -+ .guid = UVC_GUID_FORMAT_RW16, -+ .fcc = V4L2_PIX_FMT_RW16, -+ }, -+ { -+ .name = "Frame Grabber (FG )", -+ .guid = UVC_GUID_FORMAT_FG, -+ .fcc = V4L2_PIX_FMT_FG, -+ }, -+ { -+ .name = "SR300 Depth/Confidence (INZC)", -+ .guid = UVC_GUID_FORMAT_INZC, -+ .fcc = V4L2_PIX_FMT_INZC, -+ }, -+ { -+ .name = "Relative IR (PAIR)", -+ .guid = UVC_GUID_FORMAT_PAIR, -+ .fcc = V4L2_PIX_FMT_PAIR, -+ }, -+ { + .name = "Z16 Huffman Compression", + .guid = UVC_GUID_FORMAT_Z16H, + .fcc = V4L2_PIX_FMT_Z16H, @@ -138,116 +24,28 @@ index f4d55613b311..ea57491c3e84 100644 /* ------------------------------------------------------------------------ diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index a1f590ac90c1..e11c7b9ee086 100644 +index 2ab3a330256e..9bcd276aaef1 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -138,6 +138,60 @@ - #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} -+#define UVC_GUID_FORMAT_W10 \ -+ { 'W', '1', '0', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_CONFIDENCE_MAP \ -+ { 'C', ' ', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_FG \ -+ { 'F', 'G', ' ', ' ', 0x00, 0x00, 0x10, 0x00, \ -+ 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} -+#define UVC_GUID_FORMAT_INZC \ -+ { 'I', 'N', 'Z', 'C', 0x02, 0xb6, 0x0f, 0x48, \ -+ 0x97, 0x8c, 0xe4, 0xe8, 0x8a, 0xe8, 0x9b, 0x89} -+#define UVC_GUID_FORMAT_PAIR \ -+ { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ -+ 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} +@@ -189,6 +189,9 @@ + #define UVC_GUID_FORMAT_PAIR \ + { 'P', 'A', 'I', 'R', 0x36, 0x85, 0x41, 0x48, \ + 0xb6, 0xbf, 0x8f, 0xc6, 0xff, 0xb0, 0x83, 0xa8} +#define UVC_GUID_FORMAT_Z16H \ + { 'Z', '1', '6', 'H', 0x00, 0x00, 0x10, 0x00, \ + 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} /* ------------------------------------------------------------------------ * Driver specific constants. -diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c -index f7a7f9787366..0063625ff938 100644 ---- a/drivers/media/v4l2-core/v4l2-ioctl.c -+++ b/drivers/media/v4l2-core/v4l2-ioctl.c -@@ -1262,6 +1262,17 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) - case V4L2_TCH_FMT_DELTA_TD08: descr = "8-bit signed deltas"; break; - case V4L2_TCH_FMT_TU16: descr = "16-bit unsigned touch data"; break; - case V4L2_TCH_FMT_TU08: descr = "8-bit unsigned touch data"; 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; -+ case V4L2_PIX_FMT_W10: descr = "10-bit packed 8888[2222]"; break; -+ case V4L2_PIX_FMT_CONFIDENCE_MAP: descr = "4-bit per pixel packed"; break; -+ case V4L2_PIX_FMT_FG: descr = "Frame Grabber (FG )"; break; -+ case V4L2_PIX_FMT_INZC: descr = "Planar Depth/Confidence (INZC)"; break; -+ case V4L2_PIX_FMT_PAIR: descr = "Relative IR (PAIR)"; break; -+ case V4L2_PIX_FMT_Z16H: descr = "Z16 Huffman Compression"; break; - - default: - /* Compressed formats */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index f4adb1ca1e1d..4693c6038457 100644 +index ae04e9e06600..f5ce7b6a75ab 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h -@@ -641,6 +641,19 @@ 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 */ -+#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 */ -+/* Librealsense development*/ -+#define V4L2_PIX_FMT_FG v4l2_fourcc('F', 'G', ' ', ' ') /* Frame Grabber */ -+#define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') /* Planar Depth/Confidence */ -+#define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') /* Relative IR */ +@@ -663,6 +663,7 @@ struct v4l2_pix_format { + #define V4L2_PIX_FMT_INZC v4l2_fourcc('I', 'N', 'Z', 'C') + /* Relative IR */ + #define V4L2_PIX_FMT_PAIR v4l2_fourcc('P', 'A', 'I', 'R') +#define V4L2_PIX_FMT_Z16H v4l2_fourcc('Z', '1', '6', 'H') /* Depth Z16 custom Huffman Code compression*/ /* SDR formats - used only for Software Defined Radio devices */ #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ --- -2.17.1 - diff --git a/scripts/Tegra/LRS_Patches/02-realsense-metadata-L4T-4.9.patch b/scripts/Tegra/LRS_Patches/02-realsense-metadata-L4T-4.9.patch index bf9d7a458d..74721c1298 100644 --- a/scripts/Tegra/LRS_Patches/02-realsense-metadata-L4T-4.9.patch +++ b/scripts/Tegra/LRS_Patches/02-realsense-metadata-L4T-4.9.patch @@ -13,184 +13,13 @@ Signed-off-by: Evgeni Raikhel 3 files changed, 267 insertions(+), 5 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c -index ea57491c3e84..d2026f6c339c 100644 +index 879b91816ef9..029f76f073d6 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2775,6 +2775,258 @@ static struct usb_device_id uvc_ids[] = { +@@ -2958,6 +2958,87 @@ static struct usb_device_id uvc_ids[] = { .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, - .driver_info = UVC_QUIRK_FORCE_Y8 }, -+ /* Intel SR300 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aa5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400/PSR depth camera*/ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad1, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/ASR depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/ASRC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad3, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430/AWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad4, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D450/AWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0ad5, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400 IMU Module */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af2, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420/PWG depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0af6, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D420_MM/PWGT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0afe, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410_MM/ASRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0aff, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D400_MM/PSRT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b00, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D430_MM/AWGCT depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b01, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D460/DS5U depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b03, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/AWGC depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b07, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D405 S depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0c, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel L500 depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b0d, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D410/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b15, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D415/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b16, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, -+ /* Intel D435/USB2 Depth camera */ -+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE -+ | USB_DEVICE_ID_MATCH_INT_INFO, -+ .idVendor = 0x8086, -+ .idProduct = 0x0b17, -+ .bInterfaceClass = USB_CLASS_VIDEO, -+ .bInterfaceSubClass = 1, -+ .bInterfaceProtocol = 0, -+ .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, + .driver_info = UVC_QUIRK_APPEND_UVC_HEADER }, + /* Intel D435i depth camera */ + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE + | USB_DEVICE_ID_MATCH_INT_INFO, @@ -275,55 +104,5 @@ index ea57491c3e84..d2026f6c339c 100644 /* Generic USB Video Class */ { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_UNDEFINED) }, { USB_INTERFACE_INFO(USB_CLASS_VIDEO, 1, UVC_PC_PROTOCOL_15) }, -diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c -index 39e5855a4c02..9fa4074199af 100644 ---- a/drivers/media/usb/uvc/uvc_video.c -+++ b/drivers/media/usb/uvc/uvc_video.c -@@ -1241,8 +1241,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - do { - ret = uvc_video_decode_start(stream, buf, mem, len); - if (ret == -EAGAIN) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) -+ { -+ uvc_video_decode_data(stream, buf, stream->bulk.header,256); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue,buf); -+ } - } while (ret == -EAGAIN); - - /* If an error occurred skip the rest of the payload. */ -@@ -1274,9 +1279,13 @@ static void uvc_video_decode_bulk(struct urb *urb, struct uvc_streaming *stream, - if (!stream->bulk.skip_payload && buf != NULL) { - uvc_video_decode_end(stream, buf, stream->bulk.header, - stream->bulk.payload_size); -- if (buf->state == UVC_BUF_STATE_READY) -- buf = uvc_queue_next_buffer(&stream->queue, -- buf); -+ if (buf->state == UVC_BUF_STATE_READY) { -+ if (stream->dev->quirks & UVC_QUIRK_APPEND_UVC_HEADER) { -+ uvc_video_decode_data(stream, buf, stream->bulk.header, -+ stream->bulk.header_size); -+ } -+ buf = uvc_queue_next_buffer(&stream->queue, buf); -+ } - } - - stream->bulk.header_size = 0; -diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h -index e11c7b9ee086..6ee0315d67fc 100644 ---- a/drivers/media/usb/uvc/uvcvideo.h -+++ b/drivers/media/usb/uvc/uvcvideo.h -@@ -226,6 +226,7 @@ - #define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400 - #define UVC_QUIRK_FORCE_Y8 0x00000800 - #define UVC_QUIRK_DISABLE_AUTOSUSPEND 0x00001000 -+#define UVC_QUIRK_APPEND_UVC_HEADER 0x00002000 - - /* Format flags */ - #define UVC_FMT_FLAG_COMPRESSED 0x00000001 --- 2.17.1 diff --git a/scripts/patch-realsense-ubuntu-L4T.sh b/scripts/patch-realsense-ubuntu-L4T.sh index abde5ff4a6..e17c5e0295 100755 --- a/scripts/patch-realsense-ubuntu-L4T.sh +++ b/scripts/patch-realsense-ubuntu-L4T.sh @@ -98,7 +98,7 @@ fi echo -e "\e[32mPrepare workspace for kernel build\e[0m" sudo make ARCH=arm64 mrproper -j$(($(nproc)-1)) && sudo make ARCH=arm64 tegra_defconfig -j$(($(nproc)-1)) #Reuse existing module.symver -sudo cp /usr/src/linux-headers-4.9.140-tegra-ubuntu18.04_aarch64/kernel-4.9/Module.symvers . +sudo cp /usr/src/linux-headers-4.9.201-tegra-ubuntu18.04_aarch64/kernel-4.9/Module.symvers . echo -e "\e[32mUpdate the kernel tree to support HID IMU sensors\e[0m" sudo sed -i '/CONFIG_HID_SENSOR_ACCEL_3D/c\CONFIG_HID_SENSOR_ACCEL_3D=m' .config @@ -109,7 +109,7 @@ sudo make ARCH=arm64 prepare modules_prepare -j$(($(nproc)-1)) echo -e "\e[32mApply Librealsense Kernel Patches\e[0m" sudo -s patch -p1 < ./LRS_Patches/01-realsense-camera-formats-L4T-4.9.patch sudo -s patch -p1 < ./LRS_Patches/02-realsense-metadata-L4T-4.9.patch -sudo -s patch -p1 < ./LRS_Patches/03-realsense-hid-L4T-4.9.patch +# sudo -s patch -p1 < ./LRS_Patches/03-realsense-hid-L4T-4.9.patch sudo -s patch -p1 < ./LRS_Patches/04-media-uvcvideo-mark-buffer-error-where-overflow.patch sudo -s patch -p1 < ./LRS_Patches/05-realsense-powerlinefrequency-control-fix.patch