DRIVE OS Version: 7.0.3
Issue Description:
Summary
On DRIVE OS 7.0.3.0 (DriveWorks 7.0.3), nvsipl_camera captures two trigger-mode IMX728 GMSL cameras at a synchronized 30 fps, but a DriveWorks application (dwSensorCamera via a `camera.gmsl` rig) on the same hardware and rig runs at ~1 fps and logs Custom FSYNC is disabled. How do we make DriveWorks enable/program the FSYNC (TSC) group start so trigger-mode cameras run at full rate?
Environment
- Platform: DRIVE AGX Thor, board p3960-10-sw03, ENABLE_THOR_U=y
- Booted DTB: tegra264-p3960-0010-sw01-av-l-linux-gos (hypervisor / Guest-OS)
- DRIVE OS: 7.0.3.0
- DriveWorks: 7.0.3
- Cameras: 2x IMX728_RGGB (CPHY x4, trigger mode enabled, 30 fps)
- Deserializer / serializer: MAX96724_Fusa_nv / MAX96717F
- Topology: both cameras on one deserializer, CSI G/H, links 0 and 1
What works: nvsipl_camera reaches 30 fps synchronized
cd /opt/nvidia/drive-linux/samples/nvmedia/nvsipl/test/camera
./nvsipl_camera -c "IMX728_96724_RGGB_CPHY_x4" -m "0x0000 0x0000 0x0000 0x0011" --showfps
Result: both sensors report 29.999 fps, 0 drops. Verbose output shows SIPL programming the serializer FSYNC automatically:
CNvMTransportLink_Max96724_96717F: Trigger mode sync: true
SetSERFsync: Set FSYNC mode
What does not work: DriveWorks stays at ~1 fps
A DriveWorks app (sample_camera / our dwSensorCamera app) on the same rig logs:
Custom FSYNC is disabled
SIPLClient: Acquisition started
SIPLNotifier: Notification received ... NOTIF_WARN_ICP_FRAME_DROP
Both cameras then report ~0.94 fps (free-run fallback). Frames stream, but there is no FSYNC.
Device-tree state (verified on the running target)
We enabled fsync-groups in tegra264-p3960-camera.dtsi and reflashed the DTB. On the target:
/proc/device-tree/tsc_sig_gen@c230000/fsync-groups/status = okay
generator@380 / @480 / @500 : freq_hz = 30, status okay
generator@400 : freq_hz = 15
fsync-group@0 : generators <&gen0>, <&gen2>, <&gen3> (30 Hz)
We understand from the DRIVE OS docs that once fsync-groups is enabled it is mandatory to program the start time (cam_fsync_program_abs_start_value). nvsipl_camera does this; DriveWorks apparently does not.
What we tried on the DriveWorks side
We added sync-gpio-idx-des=2 to the camera.gmsl rig parameter string. This had no effect: DriveWorks still logs Custom FSYNC is disabled and stays at ~1 fps (and no “invalid params” error). We could not find any rig parameter that enables custom FSYNC.
Questions
1. How does a DriveWorks dwSensorCamera / camera.gmsl rig enable custom FSYNC (program the TSC fsync-group start) on DRIVE OS 7.0.3? Is there a rig parameter token, a dwSensorCamera / SAL API call, an environment variable, or a required config? What are the exact valid values and format for sync-gpio-idx-des / sync-mux-sel-des on this board, and do they actually trigger the group start or only routing?
2. Is DriveWorks custom FSYNC gated on PTP sync? We see PTP sync check failed. Please confirm PTP sync establishment before running dwSal_start. This is a standalone unit with no PPS/GPS (nvpps in timer mode). If FSYNC is PTP-gated in DriveWorks, how do we enable synchronized capture without an external PPS/GPS source?
3. What is the recommended path to get synchronized, full-rate (30 fps) capture through DriveWorks for trigger-mode IMX728 on this platform, given that nvsipl_camera already achieves it on the same hardware?
Related observation
nvsipl_camera -b 0, and any re-init after a fsync group is already started, fails with Master initialization failed. status: 10. We believe this is the “group already started / no stop IOCTL” condition. Is rmmod/modprobe cam_fsync the intended reset, and is there a supported way to query whether a group is already started?