[v2,0/2] Add Amlogic C3 ISP pipeline handler and IPA
mbox series

Message ID 20241227105840.159559-1-keke.li@amlogic.com
Headers show
Series
  • Add Amlogic C3 ISP pipeline handler and IPA
Related show

Message

Keke Li Dec. 27, 2024, 10:58 a.m. UTC
The Amlogic C3 platform integrates an ISP capable of supporting
multi-camera, multi-exposure high dynamic range (HDR) imaging with up to
14-bit raw RGB Bayer data.

The C3 ISP pipeline handler supports 3-channel image output,
1-channel 3A statistics ouput and 1-channel parameters input.

Link to the C3 ISP driver patch v5:
https://lore.kernel.org/r/20241227-c3isp-v5-0-c7124e762ff6@amlogic.com

Changes in v2:
- Align struct c3_isp_params_xxx to 8 bytes in c3-isp-config.h
- Modify c3_isp_stats_buffer to c3_isp_stats_info in c3-isp-config.h

Keke Li (2):
  libcamera: pipeline: Add C3 ISP pipeline handler
  libcamera: ipa: Add C3 ISP IPA

 include/libcamera/ipa/c3isp.mojom         |   42 +
 include/libcamera/ipa/meson.build         |    1 +
 include/linux/c3-isp-config.h             |  564 ++++++++++
 include/linux/videodev2.h                 |    4 +
 meson_options.txt                         |    3 +-
 src/ipa/c3-isp/algorithms/agc.cpp         |  260 +++++
 src/ipa/c3-isp/algorithms/agc.h           |   50 +
 src/ipa/c3-isp/algorithms/algorithm.h     |   31 +
 src/ipa/c3-isp/algorithms/awb.cpp         |  257 +++++
 src/ipa/c3-isp/algorithms/awb.h           |   42 +
 src/ipa/c3-isp/algorithms/blc.cpp         |  102 ++
 src/ipa/c3-isp/algorithms/blc.h           |   40 +
 src/ipa/c3-isp/algorithms/ccm.cpp         |   86 ++
 src/ipa/c3-isp/algorithms/ccm.h           |   40 +
 src/ipa/c3-isp/algorithms/csc.cpp         |   64 ++
 src/ipa/c3-isp/algorithms/csc.h           |   32 +
 src/ipa/c3-isp/algorithms/meson.build     |   10 +
 src/ipa/c3-isp/algorithms/post_gamma.cpp  |   64 ++
 src/ipa/c3-isp/algorithms/post_gamma.h    |   33 +
 src/ipa/c3-isp/c3-isp.cpp                 |  386 +++++++
 src/ipa/c3-isp/data/imx290.yaml           |   30 +
 src/ipa/c3-isp/data/meson.build           |    9 +
 src/ipa/c3-isp/ipa_context.cpp            |  251 +++++
 src/ipa/c3-isp/ipa_context.h              |  110 ++
 src/ipa/c3-isp/meson.build                |   32 +
 src/ipa/c3-isp/module.h                   |   28 +
 src/ipa/c3-isp/params.cpp                 |  127 +++
 src/ipa/c3-isp/params.h                   |  133 +++
 src/libcamera/pipeline/c3-isp/c3-isp.cpp  | 1161 +++++++++++++++++++++
 src/libcamera/pipeline/c3-isp/meson.build |    5 +
 30 files changed, 3996 insertions(+), 1 deletion(-)
 create mode 100644 include/libcamera/ipa/c3isp.mojom
 create mode 100644 include/linux/c3-isp-config.h
 create mode 100644 src/ipa/c3-isp/algorithms/agc.cpp
 create mode 100644 src/ipa/c3-isp/algorithms/agc.h
 create mode 100644 src/ipa/c3-isp/algorithms/algorithm.h
 create mode 100755 src/ipa/c3-isp/algorithms/awb.cpp
 create mode 100755 src/ipa/c3-isp/algorithms/awb.h
 create mode 100644 src/ipa/c3-isp/algorithms/blc.cpp
 create mode 100644 src/ipa/c3-isp/algorithms/blc.h
 create mode 100644 src/ipa/c3-isp/algorithms/ccm.cpp
 create mode 100644 src/ipa/c3-isp/algorithms/ccm.h
 create mode 100644 src/ipa/c3-isp/algorithms/csc.cpp
 create mode 100644 src/ipa/c3-isp/algorithms/csc.h
 create mode 100644 src/ipa/c3-isp/algorithms/meson.build
 create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.cpp
 create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.h
 create mode 100644 src/ipa/c3-isp/c3-isp.cpp
 create mode 100644 src/ipa/c3-isp/data/imx290.yaml
 create mode 100644 src/ipa/c3-isp/data/meson.build
 create mode 100644 src/ipa/c3-isp/ipa_context.cpp
 create mode 100644 src/ipa/c3-isp/ipa_context.h
 create mode 100644 src/ipa/c3-isp/meson.build
 create mode 100644 src/ipa/c3-isp/module.h
 create mode 100644 src/ipa/c3-isp/params.cpp
 create mode 100644 src/ipa/c3-isp/params.h
 create mode 100644 src/libcamera/pipeline/c3-isp/c3-isp.cpp
 create mode 100644 src/libcamera/pipeline/c3-isp/meson.build