Enable camera preview for AM62x boards with OV5640
This series enable Camera preview via the standard com.android.camera2
built-in AOSP app.
Reproduce steps
To reproduce, we should:
- Plug it in, hardware wise
- Select dtbo_index 2 in U-boot shell with:
=> env set dtbo_index 2
=> saveenv
=> reset
Hardware required:
- AM62x SK board
- OV5640 sensor module from ALINX
Detailed description
This series can be divided in 3 sections:
- Getting libcamera up-to-date with Android's (new) way of using gralloc + misc bugfixes.
- Extending the PostProcessorYuv to accept more formats than NV12
- Implement YUYV->NV12 conversion using libyuv and add various hacks around that
Some individual commits go over why this conversion is required, but I'll sum it up here for better visibility:
On am62x platforms, the receiver driver (j721e-csi2rx
) only
supports packed YUV422 formats such as YUYV, YVYU, UYVY and VYUY.
However, the IMGTEC gralloc implementation on am62x only supports semi-planar YUV420 formats such as NV12.
Since gralloc and j721e-csi2rx are incompatible, we need a way to get gralloc to allocate (NV12) the kernel-requested buffer length (YUYV).
Additional notes
The receiver and the sensor (ov5640) hardware are both capable of YUV420, however:
- we are not aware of OV5640 being tested with YUV420 formats on any vendor tree.
- NV12 has different line lines (even lines are twice as long as odd lines) Different line-sized DMA transfers have not been tested on the TI CSI-RX SHIM IP.
Bug: TIAU-319
Signed-off-by: Mattijs Korpershoek mkorpershoek@baylibre.com