forked from IntelRealSense/librealsense
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PR IntelRealSense#12602 from dmipx: RealSense kernel 6.5 support.
- Loading branch information
Showing
3 changed files
with
179 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,154 @@ | ||
From c22cccc6123bc487652ccaafdeb31fce5b45bdf2 Mon Sep 17 00:00:00 2001 | ||
From: Dmitry Perchanov <[email protected]> | ||
Date: Mon, 22 Jan 2024 14:48:48 +0200 | ||
Subject: [PATCH] RealSense support for kernel 6.5 | ||
|
||
Signed-off-by: Dmitry Perchanov <[email protected]> | ||
--- | ||
drivers/media/common/uvc.c | 20 ++++++++++++++++++++ | ||
drivers/media/usb/uvc/uvc_driver.c | 27 +++++++++++++++++++++++++++ | ||
drivers/media/v4l2-core/v4l2-ioctl.c | 3 +++ | ||
include/linux/usb/uvc.h | 15 +++++++++++++++ | ||
include/uapi/linux/videodev2.h | 3 +++ | ||
5 files changed, 68 insertions(+) | ||
|
||
diff --git a/drivers/media/common/uvc.c b/drivers/media/common/uvc.c | ||
index 9c0ba7a6c..a00b743cc 100644 | ||
--- a/drivers/media/common/uvc.c | ||
+++ b/drivers/media/common/uvc.c | ||
@@ -120,6 +120,10 @@ static const struct uvc_format_desc uvc_fmts[] = { | ||
.guid = UVC_GUID_FORMAT_Y12I, | ||
.fcc = V4L2_PIX_FMT_Y12I, | ||
}, | ||
+ { | ||
+ .guid = UVC_GUID_FORMAT_Y16I, | ||
+ .fcc = V4L2_PIX_FMT_Y16I, | ||
+ }, | ||
{ | ||
.guid = UVC_GUID_FORMAT_Z16, | ||
.fcc = V4L2_PIX_FMT_Z16, | ||
@@ -164,6 +168,22 @@ static const struct uvc_format_desc uvc_fmts[] = { | ||
.guid = UVC_GUID_FORMAT_HEVC, | ||
.fcc = V4L2_PIX_FMT_HEVC, | ||
}, | ||
+ { | ||
+ .guid = UVC_GUID_FORMAT_RAW8, | ||
+ .fcc = V4L2_PIX_FMT_GREY, | ||
+ }, | ||
+ { | ||
+ .guid = UVC_GUID_FORMAT_RW16, | ||
+ .fcc = V4L2_PIX_FMT_RW16, | ||
+ }, | ||
+ { | ||
+ .guid = UVC_GUID_FORMAT_D16, | ||
+ .fcc = V4L2_PIX_FMT_Z16, | ||
+ }, | ||
+ { | ||
+ .guid = UVC_GUID_FORMAT_W10, | ||
+ .fcc = V4L2_PIX_FMT_W10, | ||
+ }, | ||
}; | ||
|
||
const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) | ||
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c | ||
index 08fcd2ffa..0409f5bca 100644 | ||
--- a/drivers/media/usb/uvc/uvc_driver.c | ||
+++ b/drivers/media/usb/uvc/uvc_driver.c | ||
@@ -3084,6 +3084,15 @@ static const struct usb_device_id uvc_ids[] = { | ||
.bInterfaceSubClass = 1, | ||
.bInterfaceProtocol = 0, | ||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, | ||
+ /* Intel D555e Depth Camera */ | ||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | ||
+ | USB_DEVICE_ID_MATCH_INT_INFO, | ||
+ .idVendor = 0x8086, | ||
+ .idProduct = 0x0b56, | ||
+ .bInterfaceClass = USB_CLASS_VIDEO, | ||
+ .bInterfaceSubClass = 1, | ||
+ .bInterfaceProtocol = UVC_PC_PROTOCOL_15, | ||
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, | ||
/* Intel D405 Depth Camera */ | ||
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | ||
| USB_DEVICE_ID_MATCH_INT_INFO, | ||
@@ -3102,6 +3111,24 @@ static const struct usb_device_id uvc_ids[] = { | ||
.bInterfaceSubClass = 1, | ||
.bInterfaceProtocol = 0, | ||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, | ||
+ /* Intel D585 Depth Camera */ | ||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | ||
+ | USB_DEVICE_ID_MATCH_INT_INFO, | ||
+ .idVendor = 0x8086, | ||
+ .idProduct = 0x0b6a, | ||
+ .bInterfaceClass = USB_CLASS_VIDEO, | ||
+ .bInterfaceSubClass = 1, | ||
+ .bInterfaceProtocol = UVC_PC_PROTOCOL_15, | ||
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, | ||
+ /* Intel 585 Camera */ | ||
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE | ||
+ | USB_DEVICE_ID_MATCH_INT_INFO, | ||
+ .idVendor = 0x8086, | ||
+ .idProduct = 0x0b6b, | ||
+ .bInterfaceClass = USB_CLASS_VIDEO, | ||
+ .bInterfaceSubClass = 1, | ||
+ .bInterfaceProtocol = UVC_PC_PROTOCOL_15, | ||
+ .driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) }, | ||
/* 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/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c | ||
index 01ba27f2e..fdb9b21b4 100644 | ||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c | ||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c | ||
@@ -1314,6 +1314,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) | ||
case V4L2_PIX_FMT_IPU3_Y10: descr = "10-bit greyscale (IPU3 Packed)"; break; | ||
case V4L2_PIX_FMT_Y8I: descr = "Interleaved 8-bit Greyscale"; break; | ||
case V4L2_PIX_FMT_Y12I: descr = "Interleaved 12-bit Greyscale"; break; | ||
+ case V4L2_PIX_FMT_Y16I: descr = "Interleaved 16-bit Greyscale"; 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_Z16: descr = "16-bit Depth"; break; | ||
case V4L2_PIX_FMT_INZI: descr = "Planar 10:16 Greyscale Depth"; break; | ||
case V4L2_PIX_FMT_CNF4: descr = "4-bit Depth Confidence (Packed)"; break; | ||
diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h | ||
index 88d96095b..11456a014 100644 | ||
--- a/include/linux/usb/uvc.h | ||
+++ b/include/linux/usb/uvc.h | ||
@@ -118,6 +118,21 @@ | ||
#define UVC_GUID_FORMAT_Y12I \ | ||
{ 'Y', '1', '2', 'I', 0x00, 0x00, 0x10, 0x00, \ | ||
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} | ||
+#define UVC_GUID_FORMAT_Y16I \ | ||
+ { 'Y', '1', '6', 'I', 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', 0x66, 0x1a, 0x42, 0xa2, \ | ||
+ 0x90, 0x65, 0xd0, 0x18, 0x14, 0xa8, 0xef, 0x8a} | ||
+#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_Z16 \ | ||
{ 'Z', '1', '6', ' ', 0x00, 0x00, 0x10, 0x00, \ | ||
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71} | ||
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h | ||
index 3af6a82d0..039c14961 100644 | ||
--- a/include/uapi/linux/videodev2.h | ||
+++ b/include/uapi/linux/videodev2.h | ||
@@ -793,6 +793,9 @@ struct v4l2_pix_format { | ||
#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ | ||
#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_Y16I v4l2_fourcc('Y', '1', '6', 'I') /* Greyscale 16-bit L/R interleaved */ | ||
+#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_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_MM21 v4l2_fourcc('M', 'M', '2', '1') /* Mediatek 8-bit block mode, two non-contiguous planes */ | ||
-- | ||
2.34.1 | ||
|