"Device is not of CSI type" for IMX477 / Raspi HQ camera

We are building a unit around the NX and the Antmicro NX Baseboard. It hosts three CSI cameras, two Allied Vision Alvium plus one Raspi HQ camera (IMX477). We are using a custom kernel and DTB which started from the Allied Vision kernel, modified with the AntMicro NX baseboard patches and some cherry-picked changes from the Ridgerun IMX477 support.

My fork of the Allied Vision kernel source is here with the camera definitions in the dts here.

The Alvium cameras are working well and we are now trying to bring up the IMX477. We’d like to use nvargus-daemon as the ISP. However, when we run nvargus-daemon we get:

OFDPropertyGetString: could not read property [devnode-bus]
(NvOdmDevice) Error NotSupported: Device is not of CSI type (in dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)

To debug, I guess the first question is what heuristic is nvargus-daemon using to determine it isn’t a CSI device – or infact is this error related to something further up in the argus daemon startup. FWIW, I have run the camera with the dev kit baseboard, and the Ridgerun kernel, but the differences between the Allied Vision and “stock” Jetpack 4.4.1 kernel as significant enough that rolling back to a Ridgerun-based IMX477-only kernel on the Antmicro baseboard would be a major regression.

The full transcript from running v4l2-ctl --all and nvargus-daemon is attached:

nvargus_bringup.txt (15.7 KB)

Could you dump the device tree to check the context by below command.

sudo dtc -I fs -O dts -o extracted_proc.dts /proc/device-tree

Sure. As attached.

extracted_proc.dts (243.9 KB)

Could you remove avt_csi2 from the device tree to verify.

Sorry. I don’t entirely understand. Remove the AVT cameras from within the i2c branch of the tree?

Yes, I didn’t find any error only suspect avt_csi2