Ok, I've read it again - not really sure why is there a distinction between Generic data and Bayer data, as IPU driver treats it the same. Anyway, it seems that it is possible to do this, but the 12bit pixel gets written into MSB of a 16bit word, which is still fine for me. However, I have read on several other threads that IPU and MIPI need to have a synchronized format, but I have never tried it, so I can't confirm.
I'll try to reconfigure everything to 800x600x2 except for MIPI regs, which will stay 12bit. So to summarize for someone who maybe follows this:
1. V4L config - mxc_v4l2_capture.c : reconfigure mxc_v4l2_s_fmt() function for correct bytesperline and size.
2. CPMEM config - ipu_param_mem.h : reconfigure _ipu_ch_param_init() function to work with IPU_PIX_FMT_GENERIC in 16bit mode. Stride and width/height come from V4L and should be the same, no recalc necessary (as for 12bit pack), but BPP and DMA burst size need to change.
3. For MIPI, as far as I can see, we only need to do mipi_csi2_set_datatype(mipi_csi2_info, MIPI_DT_RAW12) inside of the actual sensor driver (which is already done in my case).
I'll post back the results.