I'm trying to receive RAW10 data from a MIPI camera. The camera is configured to send a test pattern. According to the manufacturer, it sends the following 10-bit values (shown as 16-bit with actual data in the 10 high bits):
ffc0, cc80, 9940, 6600, 3300, 0000
Instead, I receive them in memory like this:
expected actual
value value
c0 ff ff ff
80 cc b3 cc
40 99 66 99
00 66 19 66
00 33 0c 33
00 00 00 00
The high 10 bits contain the expected values. But the low 6 bits are not filled with 0 as I expected.
I think I see a pattern, though. i.MX6 takes the high byte, inverts it, and copies the resulting low 6 bits into the low 6 bits of the final value. Unless the high byte is ff or 00, in which case the 6 bits are all set or cleared, respectively,.
Is this the proper functioning of i.MX6? Can someone confirm?