Skip to content

Max96712 multicamera - #404

Merged
ejgoldik merged 6 commits into
devfrom
max96712_multicamera
Mar 30, 2026
Merged

Max96712 multicamera#404
ejgoldik merged 6 commits into
devfrom
max96712_multicamera

Conversation

@ejgoldik

@ejgoldik ejgoldik commented Mar 25, 2026

Copy link
Copy Markdown
Contributor

This enables up to four cameras connected at once to the same max96712 deserializer.
Note that as max96712 has 8 video pipes, the user can stream up to 8 streams at once from all cameras connected to the same deserializer (ir left + right count as 1)

@ejgoldik
ejgoldik requested review from Nikolai-L and sareluzi March 26, 2026 06:48
Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
@ejgoldik
ejgoldik force-pushed the max96712_multicamera branch from 08d3241 to f1b5ec3 Compare March 26, 2026 10:30

@sareluzi sareluzi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR Review: Max96712 multicamera

This PR adds support for 4 cameras on a single MAX96712 deserializer. Key changes:

  • New DT overlay for 4-camera config
  • Dynamic pipe allocation in MAX96712 (replaces hardcoded vc_id == pipe_id)
  • New bind_ser_to_dser_pipe / get_ser_pipe_id APIs
  • external_addr_reassign DT property for MAX9295
  • MAX96712 reset via register when GPIO not available
  • MAX_DS5_NUM increased from MAX_DSER_NUM * 2 to * 4
  • -ENOSR early-return to avoid pointless retries

14 comments below.

Comment thread kernel/realsense/d4xx.c
Comment thread kernel/realsense/d4xx.c
Comment thread kernel/realsense/d4xx.c Outdated
Comment thread kernel/realsense/d4xx.c Outdated
Comment thread kernel/realsense/d4xx.c
Comment thread nvidia-oot/6.0/0006-Adding-max96712-support-for-D4xx.patch Outdated
Comment thread nvidia-oot/6.0/0006-Adding-max96712-support-for-D4xx.patch Outdated
Comment thread nvidia-oot/6.0/0006-Adding-max96712-support-for-D4xx.patch Outdated
Comment thread nvidia-oot/6.0/0006-Adding-max96712-support-for-D4xx.patch Outdated
Comment thread nvidia-oot/6.0/0006-Adding-max96712-support-for-D4xx.patch Outdated
@sareluzi

Copy link
Copy Markdown
Collaborator

13/14 - JP5.1.2 patch symlinks — verify they apply cleanly

kernel/nvidia/5.1.2/0008-Allow-external-address-assignment-on-max9295.patch and 0009-Align-max9296-api-to-max96712.patch are symlinks to the 5.0.2 versions. That's fine for identical patches, but the 5.0.2 and 5.1.2 max96712 patches (0017 vs 0007) are NOT symlinks and have different content. Verify the max9295 and max9296 patches truly apply cleanly to both 5.0.2 and 5.1.2 kernel source trees.

Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
@ejgoldik

Copy link
Copy Markdown
Contributor Author

13/14 - JP5.1.2 patch symlinks — verify they apply cleanly

kernel/nvidia/5.1.2/0008-Allow-external-address-assignment-on-max9295.patch and 0009-Align-max9296-api-to-max96712.patch are symlinks to the 5.0.2 versions. That's fine for identical patches, but the 5.0.2 and 5.1.2 max96712 patches (0017 vs 0007) are NOT symlinks and have different content. Verify the max9295 and max9296 patches truly apply cleanly to both 5.0.2 and 5.1.2 kernel source trees.

I had to make it not a link as the base file max96712 differs by a tiny bit between 5.0.1 and 5.1.2 so you can't use a link. Verified it applies correctly.

Signed-off-by: ejgoldik <ehud.joseph.goldik@realsenseai.com>
@ejgoldik
ejgoldik requested a review from sareluzi March 26, 2026 15:51
@ejgoldik
ejgoldik merged commit e9082f1 into dev Mar 30, 2026
10 of 11 checks passed
EmanueleGiacomini added a commit to EmanueleGiacomini/realsense_mipi_platform_driver that referenced this pull request Apr 28, 2026
…uild helper

Tested 2026-04-28 with the post-realsenseai#11 driver: setting force_clk0; on
the dser node makes 0x08A0 = 0x24 (FORCE_CLK0_HS bit 5 set) which
wedges MAX96712 forward I2C the moment v4l2-ctl --stream-mmap fires;
the chip becomes unreachable on its primary I2C bus until a DC power
cycle. Same failure class as the previously documented "FORCE_CLK
0x81 harmful" finding from the pre-PR#404 era; the offending bit is
5 (FORCE_CLK0_HS), not just specific full-byte values.

Replace the experimental force_clk0; line with a multi-line comment
that warns future readers off the property. The avermedia overlay in
this tree sets force_clk0; — that pattern does NOT carry over to
LI-JAG-ADP-GMSL2-8CH.

Also adds scripts/lijag_rebuild_dtbo.sh so iterating on this DT
overlay no longer requires running build_stage1_oot.sh (which
rebuilds max9296.ko it doesn't need): preprocess + dtc + cp into
/boot/, then reboot.

A research pass on realsenseai PRs (realsenseai#356, realsenseai#399, realsenseai#404, realsenseai#405, realsenseai#426)
confirmed our 6.2 patch series already incorporates all upstream
MAX96712-touching fixes. The "NVCSI sees zero frames" symptom we
still have is therefore not addressed by any merged upstream PR.
@ymodlin
ymodlin deleted the max96712_multicamera branch May 27, 2026 10:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants