`serdes_pix_clk_hz` vs `pix_clk_hz

How is pix_clk_hz used in autoexposure calculations? How is serdes_pix_clk_hz used in autoexposure calculations?

Running L4T 35.1 and have noticed that my images are now blown out, but they previously looked good on L4T 32.7.1.

Using an LI-IMX490-FPDLinkIII with a TI954/TI953 serdes pair.

Only significant change to camera driver between L4T 32.7.1 and L4T 35.1 was a change to serdes_pix_clk_hz from 833333333 to 500000000:

96c95
< 						serdes_pix_clk_hz = "833333333";
---
> 						serdes_pix_clk_hz = "500000000";

If I revert serdes_pix_clk_hzto 833333333 and try to stream from my camera, Argus gives me a timeout:

[09/13/23 22:57:24.866661680] CAM: serial no file already exists, skips storing again=== gst-launch-1.0[1508]: CameraProvider initialized (0xffff994519a0)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
[09/13/23 22:57:32.119070832] CAM: serial no file already exists, skips storing againSCF: Error InvalidState: Timeout waiting on frame start sensor guid 0, capture sequence ID = 0 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 507)
[09/13/23 22:57:32.123673872] SCF: Error InvalidState:  (propagating from src/common/Utils.cpp, function workerThread(), line 114)
[09/13/23 22:57:32.128238800] SCF: Error InvalidState: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
[09/13/23 22:57:32.132807824] SCF: Error Timeout:  (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 593)
[09/13/23 22:57:32.136265936] SCF: Error Timeout:  (propagating from src/common/Utils.cpp, function workerThread(), line 114)
[09/13/23 22:57:32.139723568] SCF: Error Timeout: Worker thread ViCsiHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 133)
[09/13/23 22:57:34.083221616] SCF: Error Timeout:  (propagating from src/services/capture/CaptureServiceEvent.cpp, function wait(), line 59)
[09/13/23 22:57:34.086668112] Error: Camera HwEvents wait, this may indicate a hardware timeout occured,abort current/incoming cc
[09/13/23 22:58:33.871770334] SCF: Error InvalidState: 2 buffers still pending during EGLStreamProducer destruction (propagating from src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 302)
[09/13/23 22:58:33.875306891] SCF: Error InvalidState:  (propagating from src/services/gl/EGLStreamProducer.cpp, function ~EGLStreamProducer(), line 50)
[09/13/23 22:58:38.881517340] waitForIdleLocked remaining request 102
[09/13/23 22:58:38.886052962] waitForIdleLocked remaining request 101
[09/13/23 22:58:38.895854195] SCF: Error Timeout: waitForIdle() timed out (in src/api/Session.cpp, function waitForIdleLocked(), line 909)
[09/13/23 22:58:38.900465889] (Argus) Error Timeout:  (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 169)

hello jack31,

you may refer to Sensor Software Driver Programming for these two property.
please use serdes_pix_clk_hz since you’re working with serializer/deserializer, you may dig into SerDes Pixel Clock section for the calculation formula to review your clock settings.