From 39231728a36d8d15c2c7b3cd1c0515dde167516d Mon Sep 17 00:00:00 2001 From: Wojciech Gladysz Date: Mon, 24 Nov 2025 15:52:35 +0200 Subject: [PATCH 1/6] fix Y12I calibration stream --- kernel/realsense/d4xx.c | 17 ++++++++++++----- .../6.0/0003-Fix-y12i-calibration-stream.patch | 14 ++++++++++++++ .../6.1/0003-Fix-y12i-calibration-stream.patch | 1 + .../6.2/0003-Fix-y12i-calibration-stream.patch | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch create mode 120000 nvidia-oot/6.1/0003-Fix-y12i-calibration-stream.patch create mode 120000 nvidia-oot/6.2/0003-Fix-y12i-calibration-stream.patch diff --git a/kernel/realsense/d4xx.c b/kernel/realsense/d4xx.c index ae804ea1..a76ce1c1 100644 --- a/kernel/realsense/d4xx.c +++ b/kernel/realsense/d4xx.c @@ -1014,6 +1014,15 @@ static const struct ds5_resolution d46x_calibration_sizes[] = { }, }; +static const struct ds5_resolution ds5_calibration_sizes[] = { + { + .width = 1280, + .height = 800, + .framerates = ds5_framerate_15_25, + .n_framerates = ARRAY_SIZE(ds5_framerate_15_25), + }, +}; + static const struct ds5_resolution ds5_size_imu[] = { { .width = 32, @@ -1111,8 +1120,8 @@ static const struct ds5_format ds5_y_formats_ds5u[] = { }, { .data_type = GMSL_CSI_DT_RGB_888, /* 24-bit Calibration */ .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, /* FIXME */ - .n_resolutions = ARRAY_SIZE(d43x_calibration_sizes), - .resolutions = d43x_calibration_sizes, + .n_resolutions = ARRAY_SIZE(ds5_calibration_sizes), + .resolutions = ds5_calibration_sizes, }, }; @@ -1713,9 +1722,7 @@ static int ds5_configure(struct ds5 *state) #ifdef CONFIG_VIDEO_D4XX_SERDES data_type1 = sensor->config.format->data_type; data_type2 = state->is_imu ? 0x00 : md_fmt; - /* do not have metadata for y12i */ - if (state->is_y8 && data_type1 == GMSL_CSI_DT_RGB_888) - data_type2 = 0; + vc_id = state->g_ctx.dst_vc; ret = ds5_setup_pipeline(state, data_type1, data_type2, sensor->pipe_id, diff --git a/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch b/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch new file mode 100644 index 00000000..430b2881 --- /dev/null +++ b/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch @@ -0,0 +1,14 @@ +diff --git a/drivers/media/platform/tegra/camera/vi/vi5_fops.c b/drivers/media/platform/tegra/camera/vi/vi5_fops.c +index 7d07ccd7..c64dcc38 100644 +--- a/drivers/media/platform/tegra/camera/vi/vi5_fops.c ++++ b/drivers/media/platform/tegra/camera/vi/vi5_fops.c +@@ -612,7 +612,7 @@ static void vi5_capture_dequeue(struct tegra_channel *chan, + trace_tegra_channel_capture_frame("sof", &ts); + vb->vb2_buf.timestamp = descr->status.sof_timestamp; + +- if (frame_err) ++ if (false && frame_err) + buf->vb2_state = VB2_BUF_STATE_ERROR; + else + buf->vb2_state = VB2_BUF_STATE_DONE; + diff --git a/nvidia-oot/6.1/0003-Fix-y12i-calibration-stream.patch b/nvidia-oot/6.1/0003-Fix-y12i-calibration-stream.patch new file mode 120000 index 00000000..16be63f3 --- /dev/null +++ b/nvidia-oot/6.1/0003-Fix-y12i-calibration-stream.patch @@ -0,0 +1 @@ +../6.0/0003-Fix-y12i-calibration-stream.patch \ No newline at end of file diff --git a/nvidia-oot/6.2/0003-Fix-y12i-calibration-stream.patch b/nvidia-oot/6.2/0003-Fix-y12i-calibration-stream.patch new file mode 120000 index 00000000..16be63f3 --- /dev/null +++ b/nvidia-oot/6.2/0003-Fix-y12i-calibration-stream.patch @@ -0,0 +1 @@ +../6.0/0003-Fix-y12i-calibration-stream.patch \ No newline at end of file From 3b4898e2ebff4246f317968468438c4f56491f93 Mon Sep 17 00:00:00 2001 From: Wojciech Gladysz Date: Fri, 28 Nov 2025 16:49:03 +0200 Subject: [PATCH 2/6] toggling IR format from test_metadata --- kernel/realsense/d4xx.c | 28 ++++++++++++++++++++++++++-- test/test_metadata/build.sh | 4 +--- test/test_metadata/test_metadata | Bin 26312 -> 0 bytes test/test_metadata/test_metadata.c | 20 ++++++++++++++++---- 4 files changed, 43 insertions(+), 9 deletions(-) delete mode 100755 test/test_metadata/test_metadata diff --git a/kernel/realsense/d4xx.c b/kernel/realsense/d4xx.c index a76ce1c1..5a28b521 100644 --- a/kernel/realsense/d4xx.c +++ b/kernel/realsense/d4xx.c @@ -1120,8 +1120,8 @@ static const struct ds5_format ds5_y_formats_ds5u[] = { }, { .data_type = GMSL_CSI_DT_RGB_888, /* 24-bit Calibration */ .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, /* FIXME */ - .n_resolutions = ARRAY_SIZE(ds5_calibration_sizes), - .resolutions = ds5_calibration_sizes, + .n_resolutions = ARRAY_SIZE(d43x_calibration_sizes), + .resolutions = d43x_calibration_sizes, }, }; @@ -1145,6 +1145,26 @@ static const struct ds5_format ds5_y_formats_41x[] = { }, }; +static const struct ds5_format ds5_y_formats_45x[] = { + { + /* First format: default */ + .data_type = GMSL_CSI_DT_RAW_8, /* Y8 */ + .mbus_code = MEDIA_BUS_FMT_Y8_1X8, + .n_resolutions = ARRAY_SIZE(y8_sizes), + .resolutions = y8_sizes, + }, { + .data_type = GMSL_CSI_DT_YUV422_8, /* Y8I */ + .mbus_code = MEDIA_BUS_FMT_VYUY8_1X16, + .n_resolutions = ARRAY_SIZE(y8_sizes), + .resolutions = y8_sizes, + }, { + .data_type = GMSL_CSI_DT_RGB_888, /* 24-bit Calibration */ + .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, /* FIXME */ + .n_resolutions = ARRAY_SIZE(ds5_calibration_sizes), + .resolutions = ds5_calibration_sizes, + }, +}; + static const struct ds5_format ds5_41x_rgb_format = { .data_type = GMSL_CSI_DT_YUV422_8, /* UYVY */ .mbus_code = MEDIA_BUS_FMT_YUYV8_1X16, @@ -4824,6 +4844,10 @@ static int ds5_fixed_configuration(struct i2c_client *client, struct ds5 *state) sensor->formats = ds5_y_formats_41x; sensor->n_formats = ARRAY_SIZE(ds5_y_formats_41x); break; + case DS5_DEVICE_TYPE_D45X: + sensor->formats = ds5_y_formats_45x; + sensor->n_formats = ARRAY_SIZE(ds5_y_formats_45x); + break; default: sensor->formats = state->variant->formats; sensor->n_formats = state->variant->n_formats; diff --git a/test/test_metadata/build.sh b/test/test_metadata/build.sh index 683269df..7c324f6f 100755 --- a/test/test_metadata/build.sh +++ b/test/test_metadata/build.sh @@ -4,6 +4,4 @@ set -x rm -rf test_metadata test_metadata.o -gcc test_metadata.c framesextract.c -o test_metadata - -./test_metadata "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" +gcc -g -O0 test_metadata.c framesextract.c -o test_metadata diff --git a/test/test_metadata/test_metadata b/test/test_metadata/test_metadata deleted file mode 100755 index 82bb061e47fb6e8c3873ec4ba3e28e7cec357bba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26312 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 DFY_hK diff --git a/test/test_metadata/test_metadata.c b/test/test_metadata/test_metadata.c index aa86ff54..a654a3a0 100644 --- a/test/test_metadata/test_metadata.c +++ b/test/test_metadata/test_metadata.c @@ -270,7 +270,7 @@ int main(int argc, char** argv) { stream_repeat = inputArgs[7]; printf("\nTest started: Number of iterations of stream start and stop is %u",stream_repeat); - printf("\nrealsense: RESOLUTION: %u*%u, FPS: %u\n", width,height,fps); + printf("\nrealsense: RESOLUTION: %u*%u, FPS: %u\n", width, height, fps); temp_strem_inputvalue = stream_repeat; while (stream_repeat) { @@ -397,7 +397,18 @@ int main(int argc, char** argv) { } if(Ir_en) { - printf("\n/**************Streaming IR frames start: iteration:%u *****************/\n",temp_strem_inputvalue-stream_repeat); + uint32_t format = V4L2_PIX_FMT_GREY; + uint16_t iter = temp_strem_inputvalue - stream_repeat; + uint16_t size = 1; + + if (iter % 2) { + format = V4L2_PIX_FMT_Y12I; + width = 1280; + height = 800; + fps = 25; + size = 4; + } + printf("\n/**************Streaming IR frames start: iteration:%u *****************/\n",iter); mdVideoNode = "/dev/video4"; video_fd = open(mdVideoNode, O_RDWR); mdVideoNode = "/dev/video5"; @@ -406,7 +417,8 @@ int main(int argc, char** argv) { fprintf(stderr, "Error opening Ir video devices\n"); return 1; } - setFmt(video_fd, V4L2_PIX_FMT_GREY, width, height); + printf("realsense: %4s: %u*%u/%u\n", (char*)&format, width, height, fps); + setFmt(video_fd, format, width, height); setFPS(video_fd, fps); requestBuffers(video_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, SIZE_METADATA_BUFFERS); requestBuffers(md_fd, V4L2_BUF_TYPE_META_CAPTURE, V4L2_MEMORY_MMAP, SIZE_METADATA_BUFFERS); @@ -417,7 +429,7 @@ int main(int argc, char** argv) { V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, i, - width * height); + width * height * size); metaDataBuffers[i] = queryMapQueueBuf(md_fd, V4L2_BUF_TYPE_META_CAPTURE, V4L2_MEMORY_MMAP, From dcaef9364532800d43e27b4657d3a164cb08d254 Mon Sep 17 00:00:00 2001 From: Wojciech Gladysz Date: Mon, 1 Dec 2025 10:18:02 +0200 Subject: [PATCH 3/6] mmap reworked --- test/test_metadata/test_metadata.c | 40 +++++++++--------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/test/test_metadata/test_metadata.c b/test/test_metadata/test_metadata.c index a654a3a0..fa440e3e 100644 --- a/test/test_metadata/test_metadata.c +++ b/test/test_metadata/test_metadata.c @@ -218,7 +218,7 @@ void requestBuffers(int fd, uint32_t type, uint32_t memory, uint32_t count) } } -void* queryMapQueueBuf(int fd, uint32_t type, uint32_t memory, uint8_t index, uint32_t size) +void* queryMapQueueBuf(int fd, uint32_t type, uint32_t memory, uint8_t index) { struct v4l2_buffer v4l2Buffer; memset(&v4l2Buffer, 0, sizeof(v4l2Buffer)); @@ -229,7 +229,7 @@ void* queryMapQueueBuf(int fd, uint32_t type, uint32_t memory, uint8_t index, ui if (ret) return NULL; void* buffer = mmap(NULL, - size, + v4l2Buffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, @@ -270,7 +270,7 @@ int main(int argc, char** argv) { stream_repeat = inputArgs[7]; printf("\nTest started: Number of iterations of stream start and stop is %u",stream_repeat); - printf("\nrealsense: RESOLUTION: %u*%u, FPS: %u\n", width, height, fps); + printf("\nrealsense: RESOLUTION: %u*%u, FPS: %u\n", width,height,fps); temp_strem_inputvalue = stream_repeat; while (stream_repeat) { @@ -295,13 +295,11 @@ int main(int argc, char** argv) { depthBuffers[i] = queryMapQueueBuf(video_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, - i, - 2 * width * height); + i); metaDataBuffers[i] = queryMapQueueBuf(md_fd, V4L2_BUF_TYPE_META_CAPTURE, V4L2_MEMORY_MMAP, - i, - 4096); + i); } int ret = ioctl(md_fd, VIDIOC_STREAMON, &mdType); @@ -356,13 +354,11 @@ int main(int argc, char** argv) { depthBuffers[i] = queryMapQueueBuf(video_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, - i, - 2 * width * height); + i); metaDataBuffers[i] = queryMapQueueBuf(md_fd, V4L2_BUF_TYPE_META_CAPTURE, V4L2_MEMORY_MMAP, - i, - 4096); + i); } int ret = ioctl(md_fd, VIDIOC_STREAMON, &mdType); @@ -397,18 +393,7 @@ int main(int argc, char** argv) { } if(Ir_en) { - uint32_t format = V4L2_PIX_FMT_GREY; - uint16_t iter = temp_strem_inputvalue - stream_repeat; - uint16_t size = 1; - - if (iter % 2) { - format = V4L2_PIX_FMT_Y12I; - width = 1280; - height = 800; - fps = 25; - size = 4; - } - printf("\n/**************Streaming IR frames start: iteration:%u *****************/\n",iter); + printf("\n/**************Streaming IR frames start: iteration:%u *****************/\n",temp_strem_inputvalue-stream_repeat); mdVideoNode = "/dev/video4"; video_fd = open(mdVideoNode, O_RDWR); mdVideoNode = "/dev/video5"; @@ -417,7 +402,8 @@ int main(int argc, char** argv) { fprintf(stderr, "Error opening Ir video devices\n"); return 1; } - printf("realsense: %4s: %u*%u/%u\n", (char*)&format, width, height, fps); + uint32_t format = V4L2_PIX_FMT_GREY; + if (stream_repeat % 2) format = V4L2_PIX_FMT_Y12I; setFmt(video_fd, format, width, height); setFPS(video_fd, fps); requestBuffers(video_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, SIZE_METADATA_BUFFERS); @@ -428,13 +414,11 @@ int main(int argc, char** argv) { depthBuffers[i] = queryMapQueueBuf(video_fd, V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_MEMORY_MMAP, - i, - width * height * size); + i); metaDataBuffers[i] = queryMapQueueBuf(md_fd, V4L2_BUF_TYPE_META_CAPTURE, V4L2_MEMORY_MMAP, - i, - 4096); + i); } int ret = ioctl(md_fd, VIDIOC_STREAMON, &mdType); From 7846575aaa02756e92081f599af2ae5703c5776d Mon Sep 17 00:00:00 2001 From: Yogev Modlin <117653169+ymodlin@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:31:16 +0200 Subject: [PATCH 4/6] Update version d4xx.c --- kernel/realsense/d4xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/realsense/d4xx.c b/kernel/realsense/d4xx.c index 5a28b521..3a890693 100644 --- a/kernel/realsense/d4xx.c +++ b/kernel/realsense/d4xx.c @@ -5928,4 +5928,4 @@ MODULE_AUTHOR("Guennadi Liakhovetski ,\n\ Shikun Ding ,\n\ Dmitry Perchanov "); MODULE_LICENSE("GPL v2"); -MODULE_VERSION("1.0.1.31"); +MODULE_VERSION("1.0.1.32"); From daf6ddf2664b157bb8594a1c9b1bec1b5c081e00 Mon Sep 17 00:00:00 2001 From: Wojciech Gladysz Date: Thu, 4 Dec 2025 12:08:59 +0200 Subject: [PATCH 5/6] code review comments applied --- kernel/realsense/d4xx.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/kernel/realsense/d4xx.c b/kernel/realsense/d4xx.c index 3a890693..3abe8acb 100644 --- a/kernel/realsense/d4xx.c +++ b/kernel/realsense/d4xx.c @@ -659,12 +659,9 @@ static const u16 ds5_framerates[] = {5, 30}; #define DS5_FRAMERATE_DEFAULT_IDX 1 static const u16 ds5_framerate_30 = 30; - -static const u16 ds5_framerate_15_30[] = {15, 30}; - static const u16 ds5_framerate_25 = 25; +static const u16 ds5_framerate_15_30[] = {15, 30}; static const u16 ds5_framerate_15_25[] = {15, 25}; - static const u16 ds5_depth_framerate_to_30[] = {5, 15, 30}; static const u16 ds5_framerate_to_30[] = {5, 10, 15, 30}; static const u16 ds5_framerate_to_60[] = {5, 15, 30, 60}; @@ -1005,6 +1002,15 @@ static const struct ds5_resolution d43x_calibration_sizes[] = { }, }; +static const struct ds5_resolution d45x_calibration_sizes[] = { + { + .width = 1280, + .height = 800, + .framerates = ds5_framerate_15_25, + .n_framerates = ARRAY_SIZE(ds5_framerate_15_25), + }, +}; + static const struct ds5_resolution d46x_calibration_sizes[] = { { .width = 1600, @@ -1014,15 +1020,6 @@ static const struct ds5_resolution d46x_calibration_sizes[] = { }, }; -static const struct ds5_resolution ds5_calibration_sizes[] = { - { - .width = 1280, - .height = 800, - .framerates = ds5_framerate_15_25, - .n_framerates = ARRAY_SIZE(ds5_framerate_15_25), - }, -}; - static const struct ds5_resolution ds5_size_imu[] = { { .width = 32, @@ -1138,8 +1135,8 @@ static const struct ds5_format ds5_y_formats_41x[] = { .n_resolutions = ARRAY_SIZE(y8_41x_sizes), .resolutions = y8_41x_sizes, }, { - .data_type = GMSL_CSI_DT_RGB_888, /* 24-bit Calibration */ - .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, /* FIXME */ + .data_type = GMSL_CSI_DT_RGB_888, /* Y12I, 24-bit Calibration */ + .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, .n_resolutions = ARRAY_SIZE(d41x_calibration_sizes), .resolutions = d41x_calibration_sizes, }, @@ -1158,10 +1155,10 @@ static const struct ds5_format ds5_y_formats_45x[] = { .n_resolutions = ARRAY_SIZE(y8_sizes), .resolutions = y8_sizes, }, { - .data_type = GMSL_CSI_DT_RGB_888, /* 24-bit Calibration */ - .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, /* FIXME */ - .n_resolutions = ARRAY_SIZE(ds5_calibration_sizes), - .resolutions = ds5_calibration_sizes, + .data_type = GMSL_CSI_DT_RGB_888, /* Y12I, 24-bit Calibration */ + .mbus_code = MEDIA_BUS_FMT_RGB888_1X24, + .n_resolutions = ARRAY_SIZE(d45x_calibration_sizes), + .resolutions = d45x_calibration_sizes, }, }; From f4ee05b4ee6ff8a6a1deb61c38d7dad0ea9c23e8 Mon Sep 17 00:00:00 2001 From: Wojciech Gladysz Date: Thu, 4 Dec 2025 14:39:38 +0200 Subject: [PATCH 6/6] code review comments applied --- nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch b/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch index 430b2881..971da566 100644 --- a/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch +++ b/nvidia-oot/6.0/0003-Fix-y12i-calibration-stream.patch @@ -2,11 +2,12 @@ diff --git a/drivers/media/platform/tegra/camera/vi/vi5_fops.c b/drivers/media/p index 7d07ccd7..c64dcc38 100644 --- a/drivers/media/platform/tegra/camera/vi/vi5_fops.c +++ b/drivers/media/platform/tegra/camera/vi/vi5_fops.c -@@ -612,7 +612,7 @@ static void vi5_capture_dequeue(struct tegra_channel *chan, +@@ -612,7 +612,8 @@ static void vi5_capture_dequeue(struct tegra_channel *chan, trace_tegra_channel_capture_frame("sof", &ts); vb->vb2_buf.timestamp = descr->status.sof_timestamp; - if (frame_err) ++ /* TODO: Remove the branch or process the error for Y12I only */ + if (false && frame_err) buf->vb2_state = VB2_BUF_STATE_ERROR; else