Hi igor,
Thanks for your reply.
1) I'm sending the frames 800x600x3 (Custom image) from MIPI excersior and set IPU as IPU_PIX_FMT_GENERIC_32 and got the interrupt & received frame.
But its totally not matched for IPU_PIX_FMT_GENERIC_32 IPU format setting.
2) If I set IPU as IPU_PIX_FMT_GENERIC_16 then I'm receiving exact data but upto 960000 bytes i.e 800x600x2 and rest of the datas are filled with zeros.
3) If I set IPU as IPU_PIX_FMT_GENERIC then I'm receiving exact data but upto 480000 bytes i.e 800x600 and rest of the datas are filled with zeros.
Do we have any IPU GENERIC for 24bit ?
IPU_PIX_FMT_GENERIC_24
And also, why there is no "ipu_ch_param_set_field" function is not used for "IPU_PIX_FMT_GENERIC_32" ?
drivers/mxc/ipu3/ipu_param_mem.h
case IPU_PIX_FMT_GENERIC:
/*Represents 8-bit Generic data */
ipu_ch_param_set_field(¶ms, 0, 107, 3, 5); /* bits/pixel */
ipu_ch_param_set_field(¶ms, 1, 85, 4, 6); /* pix format */
ipu_ch_param_set_field(¶ms, 1, 78, 7, 63); /* burst size */
break;
case IPU_PIX_FMT_GENERIC_16:
/* Represents 16-bit generic data */
ipu_ch_param_set_field(¶ms, 0, 107, 3, 3); /* bits/pixel */
ipu_ch_param_set_field(¶ms, 1, 85, 4, 6); /* pix format */
ipu_ch_param_set_field(¶ms, 1, 78, 7, 31); /* burst size */
break;
case IPU_PIX_FMT_GENERIC_32:
/*Represents 32-bit Generic data */
break;
Then I used RGB24 & BGR24, it received 14400000 bytes (800x600x3) of data with no zeros but datas are missing in between values.
Received data for RGB24 & BGR24:
0000000 0301 0500 0007 0b09 0d00 000f 1311 1500
0000010 0017 1b19 1d00 001f 2321 2500 0027 2b29
0000020 2d00 002f 3331 3500 0037 3b39 3d00 003f
0000030 4341 4500 0047 4b49 4d00 004f 5351 5500
0000040 0057 5b59 5d00 005f 6361 6500 0067 6b69
0000050 6d00 006f 7371 7500 0077 7b79 7d00 007f
It seems, the data are got swaped and some data's are missed.
Actual data:
0000000 0100 0302 0504 0706 0908 0b0a 0d0c 0f0e
0000010 1110 1312 1514 1716 1918 1b1a 1d1c 1f1e
0000020 2120 2322 2524 2726 2928 2b2a 2d2c 2f2e
0000030 3130 3332 3534 3736 3938 3b3a 3d3c 3f3e
0000040 4140 4342 4544 4746 4948 4b4a 4d4c 4f4e
0000050 5150 5352 5554 5756 5958 5b5a 5d5c 5f5e
I've also tried to disable the "_ipu_ch_params_set_packing(¶ms, 5, 1, 5, 6, 5, 11, 1, 0);" function for BGR24 and RGB24, the behavior is same.
These are the files I have modified for "IPU_PIX_FMT_GENERIC_32"
ipu_prp_enc.c
ipu_csi_enc.c
ipu_still.c
Do I need to change any other files ?
How can I disable the IPU stuff (should not process anything) and it should pass the the data comes to memory ?
Which IPU format I have to select to get the data in 800x600x3 ?
Can you please help me on this issue ?
Regards,
Titus S.