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:
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?