You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
d4xx: defer SERDES pipe release and remove serializer init from light path
The previous commit (8b6430d) made SERDES recovery conditional but
still called max9295_init_settings() on the light path and eagerly
released deserializer pipes in Step 2. Both cause IMU test failures
(extrinsics-imu, intrinsics-motion, d400-mipi-motion):
1. max9295_init_settings() at ~22ms post-0xDEAD gets overwritten by
the D457 FW which continues reconfiguring the MAX9295 serializer
for ~50-100ms after reporting ready. The FW's final state does
not configure pipe 3 (IMU), so IMU streaming breaks.
2. Eager release_pipe() during HW reset invalidation frees deserializer
pipe slots immediately. Re-allocation in ds5_configure() then races
with the FW's ongoing serializer init.
Fix: match v1.0.1.33's proven zero-touch approach:
- Remove max9295_init_settings() from the light path entirely.
The FW's natural serializer config is sufficient when the GMSL link
recovers on its own. ds5_setup_pipeline() writes per-pipe settings
at stream-start time, seconds later, on top of the FW's stable state.
- Defer pipe release from ds5_invalidate_sensor() / Step 2 to
ds5_configure(). Clear pipe_data_type to force ds5_configure() into
the re-allocation path, where it release-then-reallocates with the
FW fully initialized.
- Keep full SERDES recovery (init_settings + stability + Phase 2) for
the broken-link case (D401, edge cases).
0 commit comments