The new Jetpack 5.1.2 kernel has a uint32 underflow bug where the
min_gain_val has 1 subtracted from it as a uint32, before an implicit cast to signed sint64, resulting in a
check_range() validation failure (because min becomes greater than max if set to 0 (which is a valid min gain)).
A workaround is to edit DTBs to use a min gain of 1 instead of 0 but fundamentally this is a casting bug in the kernel sources.
The developer probably meant to cast to sint64 before doing the subtraction
((__s64) ctrlprops->min_gain_val) - 1
The failed range check (when using a min gain of 0) manifests as a -34 error during driver load:
[ 12.717909] imx462 202-001a: probing v4l2 sensor [ 12.717998] imx462 202-001a: initializing mipi... [ 12.723783] imx462 202-001a: tegracam sensor driver:imx462_v2.0.6 [ 12.794224] imx462 202-001a: ctrl Gain range update failed [ 12.800117] imx462 202-001a: Error -34 updating mode specific control ranges [ 12.807501] imx462 202-001a: Error -34 updating control ranges [ 12.813614] imx462 202-001a: Failed to init ctrls imx462 [ 12.825898] imx462 202-001a: tegra camera subdev registration failed [ 12.832620] imx462: probe of 202-001a failed with error -34 [ 12.838429] imx462 203-001a: probing v4l2 sensor [ 12.838491] imx462 203-001a: initializing mipi... [ 12.846784] imx462 203-001a: tegracam sensor driver:imx462_v2.0.6 [ 12.909648] imx462 203-001a: ctrl Gain range update failed [ 12.917777] imx462 203-001a: Error -34 updating mode specific control ranges [ 12.927866] imx462 203-001a: Error -34 updating control ranges [ 12.937600] imx462 203-001a: Failed to init ctrls imx462 [ 12.944988] imx462 203-001a: tegra camera subdev registration failed [ 12.955145] imx462: probe of 203-001a failed with error -34