The FAQ explains the problem:
NXP has been lackluster in supporting its i.MX 8M chips in mainline Linux, and the mainline driver still doesn’t have good support for the i.MX 8M’s MIPI CSI2 camera interface. When asked about this issue, Guido Gunther responded on August 17, 2020:
CSI2 for mainline is still being worked on (as is mhdp for DisplayPort HDMI) by various parties but the diff has become more and more reasonable.
The “diff” is the difference between the code in NXP’s driver and mainline Linux’s driver for the i.MX 8M. This means that Purism has to take code from NXP’s driver in order to use the MIPI CSI2 interface. Another difficulty for Purism is that NXP has poorly documented its MIPI CSI2 interface, and people on the NXP forums are complaining that they are having trouble implementing their cameras (1 2 3 4 5 6).
At this point, the problem is the poor documentation by NXP of its CSI2 camera interface and you should read the links to the NXP forum threads that I provided if you want more info. NXP provided one sample implementation with a 5MP camera, and just expected everyone to figure it out from that sample implementation, rather than properly documented how their interface works. I could understand if NXP had just released the chip, but the i.MX 8M Quad has been in mass production since Jan. 2018. Just like NXP has never fixed the 2 bugs in the chip’s power management and never fixed the bug that limits USB 3.0 to 150-170 MB/s (see the FAQ for links), NXP hasn’t bothered to properly document its CSI2 camera interface.
I don’t know if NXP is ever planning to fix these problems in the Quad, or will only fix them in the future i.MX 8M Plus. At this point, the Plus is now almost a year behind schedule. Honestly, it is really depressing that the i.MX 8M is the best option available for making mobile devices (laptops, tablets and phones) that can run on 100% free software, because NXP has done a pretty bad job so far.
All NXP had to do was add two Cortex-A7x cores to the Plus and do a die shrink, but instead it designed a chip with a worse VPU and GPU and hasn’t fixed the problems in the Quad. Given that Samsung offers 11nm, 10nm and 8nm FinFET, it is pretty disappointing that NXP went with Samsung’s 14LPP FinFET for the Plus. NXP isn’t even trying to offer competitive mobile chips, compared to the RK3566, RK3568 and RK3588 that Rockchip will be releasing in 2021.