My name is Dorien and am the firmware engineer primarily working on the MIPI CSI debugging for the IMX8.
While I probably can't share everything regarding source files and such, I do have a few questions and information that might point to something.
Currently, we are able to receive test patterns from a custom test pattern FPGA. There are a few issues with the output raw images but we are currently using the ISI along with the ov5640 mipi driver and v4l2 to obtain "raw image" captures. Even though we have a few options, we are able to successfully receive "perfect" white images and black images (where white and black are simply raw10 packets with all 10 bits set high or low).
However, when running what we are calling a "hgradient" pattern, OR any other set of bits that are not strictly white or strictly black, we start seeing some artifacts. We are currently receiving these test patterns as raw10 packets, our pipeline currently outputs the data shifted 4 bits to the right in LE format. For example the first pixel is white, the hex storage would be 0xF03F, after LE -> 0x3FF0 and shift by 4, 0x3FF, we get a 10 bit white pixel.
After running v4l2-ctl --stream-mmap --stream-count=1 --stream-to=/tmp/frame.raw and transferring the image off over SCP. We use a little python script to rearrange the 10 bit test pattern to be opened using cv2 libraries.
Output shows
bypass csc
Input fmt Y10P
Output fmt Y10
<
At a first glance, we can see the initial artifact. The image itself is a true gradient ONLY when removing every 4th pixel from the image. This also occurs with other test patterns as well.

The second and third artifact are a bit more nebulous.
For some reason, every second line's first 4 pixels are always some dark color. Not always zero, but just always really dark.
The last two lines are always black for some reason. However we have reason to believe this is an fpga test pattern generation bug but still something to call out.
Alongside all of that, I recently discovered that when sending NON white/black test patterns, we are receiving CRC errors by directly reading the RX CSI register space during streaming.
I’m seeing an issue where every 4th byte of pixel data appears corrupted, but only on non-uniform images. White and black test patterns look fine. My first thought is that CRC errors could be the cause, but I don’t understand why CRC would ONLY fail on non-uniform.
From the hardware side we seem to be receiving MIPI control packets correctly since images can still be generated. I’m looking for ideas on what other possible error sources might cause the above artifact behavior, and the best ways to approach debugging it.
Regarding source code, we are using this as our format.
{
.name = "RAW10P",
.fourcc = V4L2_PIX_FMT_Y10,
.depth = { 16 },
.color = MXC_ISI_OUT_FMT_RAW10P,
.memplanes = 1,
.colplanes = 1,
.mbus_code = MEDIA_BUS_FMT_Y10_1X10,
}
where the output of the test pattern generator as mipi packets look like