I'm working on a device driver for a Sony IMX208 MIPI Image Sensor for the iMX6 on Linux 3.0.35.
My MIPI is set up as follows:
mipi_csi2_info.mipi_en = 1
mipi_csi2_info.ipu_id = 0
mipi_csi2_info.csi_id = 0
mipi_csi2_info.v_channel = 0
mipi_csi2_info.lanes = 1
mipi_csi2_info.datatype = 0x2b (RAW10)
I am able to communicate with the sensor over I2C and everything seems to be working. However, starting the stream and waiting for buffers (using select()), no buffers are available. I have 'DEBUG' enabled for the drivers; the log I get is:
In MVC: mxc_v4l_do_ioctl c0445611
ERROR: v4l2 capture: mxc_v4l_dqueue() interrupt received
If I check the CSI-MIPI Error registers, I see an err_id_vc0 in MIPI_CSI_ERR2 ("Unrecognized or unimplemented data type detected in Virtual Channel 0"). I tried both RAW8 and RAW10 formats, and I get the same error. According to MIPI-CSI2 Specs, this would be an "Unrecognized ID, caused by the presence of an unimplemented or unrecognized ID in the header", and the proposed receiver behavior "to indicate that the data packet is unidentified and cannot be unpacked by the receiver". So, my guess is that the MIPI-CSI2 hardware detects an error and doesn't forward any data, and that's why dqbuf fails.
But -- I don't understand why this error is happening!
Does anyone know of possible reasons for such an error to occur?
Any recommendations how to debug this issue?