Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
6622fd9
intel: ipu6: release ipu6 binary to github
cjiang3x Aug 10, 2022
292fbf1
intel: ipu6: Update README.md
cjiang3x Aug 10, 2022
0a99543
Delete libia_camera.so
cjiang3x Sep 19, 2022
faff512
Delete libia_camera.so.0
cjiang3x Sep 19, 2022
7227f4c
Delete libia_camera.so.0.0.0
cjiang3x Sep 19, 2022
ae4ef61
Delete libia_cipf.so
cjiang3x Sep 19, 2022
9d8dd8c
Delete libia_cipf.so.0
cjiang3x Sep 19, 2022
324ca33
Delete libia_cipf.so.0.0.0
cjiang3x Sep 19, 2022
6348a31
Delete libiacss.pc
cjiang3x Sep 19, 2022
7273095
media: ipu6: Deleted incude/libipu
cjiang3x Sep 19, 2022
3dbdf1f
update camera bin (#26)
zouxiaoh Oct 12, 2022
22bcf65
ADL-PS Post MR1 release (#30)
zouxiaoh Nov 10, 2022
0bd5811
RPL-P Beta release (#33)
zouxiaoh Dec 7, 2022
3a3a9fb
Iotg ipu6 (#39)
zouxiaoh Feb 14, 2023
c6d9d1c
RPL PV release
zouxiaoh Mar 16, 2023
a4e0d56
iotg adl-n mr1 release (#41)
zouxiaoh Mar 23, 2023
54b42ec
iotg mtl-p alpha release (#42)
jia1sun Mar 28, 2023
d492c00
iotg mtl-p alpha readme (#43)
jia1sun Mar 29, 2023
3a3e5ee
iotg rpl mr1 release (#45)
zouxiaoh Apr 17, 2023
55bd208
iotg adl-p pv release (#46)
jia1sun May 8, 2023
fedaddb
MTL-PS Alpha release (#49)
zouxiaoh May 25, 2023
528771d
MTL-PS Alpha FW fix
jia1sun Jul 8, 2023
81be0d6
Merge pull request #50 from jia1sun/iotg_ipu6
hao-yao Jul 7, 2023
ec8ae26
iotg adl-n mr2 release
mjchen20220511 Jul 12, 2023
b64285d
Merge pull request #51 from mjchen20220511/iotg_ipu6
hao-yao Jul 13, 2023
0d03d3a
MTL-P Beta release with kernel 6.3 (#53)
zouxiaoh Aug 8, 2023
c10461a
Update README.md
zouxiaoh Aug 23, 2023
a33056c
RPL-P MR1 release (#61)
zouxiaoh Sep 1, 2023
97cba6c
Iotg ipu6 (#63)
zouxiaoh Oct 23, 2023
aa79a70
Iotg ipu6 (#64)
zouxiaoh Nov 22, 2023
0411069
ASL MR1 release (#65)
zouxiaoh Jan 18, 2024
5ad572b
Release for upgrade kernel 6.6.15 for ADL, RPL. (#66)
zouxiaoh Mar 21, 2024
2be2550
adl-ps yocto mr6 release
zouxiaoh Apr 16, 2024
9a80147
adl-ps yocto mr6 release (#68)
zouxiaoh Apr 16, 2024
8d73f24
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Apr 16, 2024
8391878
mtl-p mr1 release
zouxiaoh Apr 16, 2024
ead3e79
mtl-p mr1 release (#69)
zouxiaoh Apr 16, 2024
1dbd5ee
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Jun 6, 2024
e0e662a
MTL ECR engineer release: 6x IMX390 on kernel v6.6 Ubuntu 22.04
zouxiaoh Jun 6, 2024
895940b
Iotg ipu6 (#73)
zouxiaoh Jun 6, 2024
7ce5163
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Jun 25, 2024
d5ab235
ARL Beta release for kernel v6.9 on Ubuntu 24.04
zouxiaoh Jun 25, 2024
56bac0c
ARL Beta release kernel v6.9 on Ubuntu 24.04 (#74)
zouxiaoh Jun 25, 2024
a64f29b
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Aug 8, 2024
971a302
Multiple MTL, RPL, ADL releases.
zouxiaoh Aug 8, 2024
b0fc832
Multiple MTL, RPL, ADL releases. (#76)
zouxiaoh Aug 8, 2024
1c72778
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Aug 20, 2024
505ba30
ADL-PS Yocto MR7 release on kernel v6.6
zouxiaoh Aug 26, 2024
046d1d9
ADL-PS MR7 release (#78)
zouxiaoh Aug 26, 2024
8eb3385
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Sep 23, 2024
95d4241
ARL PV release for kernel v6.11-rc3
zouxiaoh Sep 25, 2024
605e2c6
ARL PV release for kernel v6.11-rc3 (#79)
zouxiaoh Sep 26, 2024
2d5701b
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Oct 31, 2024
c79e586
NEX TWL PV release
zouxiaoh Oct 31, 2024
e5bfe67
TWL PV release (#84)
zouxiaoh Oct 31, 2024
ed788b7
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Nov 20, 2024
5949bdd
Intel IMX390&TI960 enabled on MTL, iot kernel 6.11-rc3
zouxiaoh Nov 20, 2024
521db0b
Intel IMX390&TI960 enabled on MTL, iot kernel 6.11-rc3 (#86)
zouxiaoh Nov 21, 2024
2344610
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Nov 28, 2024
59b97cc
TWL PV release on kernel 6.12
zouxiaoh Dec 6, 2024
6120f35
TWL PV release on kernel (#89)
zouxiaoh Dec 6, 2024
5f0614e
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Dec 24, 2024
462f6c6
RPL-P MR4 & RPL-PS MR2 release
zouxiaoh Dec 24, 2024
a7afc3a
RPL-P MR4 & RPL-PS MR2 release (#91)
zouxiaoh Dec 24, 2024
05ea2b4
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Feb 10, 2025
df59130
ARL MR1 release on kernel 6.12
zouxiaoh Feb 10, 2025
1fad54f
ARL MR1 release for kernel 6.12 on Ubuntu 24.04 (#94)
zouxiaoh Feb 10, 2025
2ea0a1a
Merge branch 'intel:iotg_ipu6' into iotg_ipu6
zouxiaoh Mar 11, 2025
6dc2d52
MTL MR3 & RPL-P MR2 releases
zouxiaoh Mar 11, 2025
ab41a95
Merge pull request #95 from zouxiaoh/iotg_ipu6
zouxiaoh Mar 11, 2025
6f396ae
MTL MR3 & RPL-P MR2 releases, remove unused bin
zouxiaoh Mar 11, 2025
e5c20d0
Merge pull request #96 from zouxiaoh/iotg_ipu6
zouxiaoh Mar 11, 2025
bfa4795
MTL MR3 & RPL-P MR2 releases on kernel 6.12.15 Ubuntu 24.04 (iot)
zouxiaoh Mar 25, 2025
16e3ee9
MTL MR3 & RPL-P MR2 releases on kernel 6.12.15 Ubuntu 24.04 (iot)
zouxiaoh Mar 25, 2025
247ef66
MTL MR3 & RPL-P MR2 releases on kernel 6.12.15 Ubuntu 24.04 (iot)
zouxiaoh Mar 27, 2025
4ec3e3e
MTL MR3 & RPL-P MR2 releases on kernel 6.12.15 Ubuntu 24.04 (iot)
zouxiaoh Mar 27, 2025
dbb4951
ARL MR2, TWL MR1, ASL MR4 releases on kernel 6.12 Ubuntu 24.04 (iot)
zouxiaoh May 19, 2025
c8ca028
ARL MR2, TWL MR1, ASL MR4 releases on kernel 6.12 Ubuntu 24.04 (iot)
zouxiaoh May 19, 2025
dd3e3f0
Update README.md
zouxiaoh Jun 18, 2025
24492f5
Add ISX031 + MAX9296 support for kernel v6.12.15 Ubuntu 24.04 on ARL *
zouxiaoh Jun 26, 2025
5a369d2
Support isx031 + max9296 with intel acpi pdata for kernel v6.12 on AR…
zouxiaoh Jun 26, 2025
16af55e
IPU6 release for iot on 2025-12-10
hao-yao Dec 10, 2025
0b102ac
Merge pull request #107 from hao-yao/iotg_ipu6
hao-yao Dec 23, 2025
e122010
Port latest README.md from main branch
gohweikh Mar 10, 2026
fd1cb67
Merge pull request #108 from gohweikh/iotg_ipu6-fixreadme
hao-yao Mar 17, 2026
626b9ef
IPU6 release for iot on 2026-03-20
hao-yao Mar 20, 2026
d9421fe
Merge pull request #109 from hao-yao/iotg_ipu6
hao-yao Mar 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions LICENSE

This file was deleted.

33 changes: 22 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,33 @@
# ipu6-camera-bins

This repository supports MIPI cameras through the IPU6 on Intel Tiger Lake and
Alder Lake platforms. There are 4 repositories that provide the complete setup:
This repository supports MIPI cameras through the IPU6 on Intel Tiger Lake, Alder Lake, Raptor Lake and Meteor Lake platforms.
There are 4 repositories that provide the complete setup:

- https://github.com/intel/ipu6-drivers - kernel drivers for the IPU and sensors
- https://github.com/intel/ipu6-camera-hal - HAL for processing of images in userspace
- https://github.com/intel/ipu6-camera-bins - IPU firmware and proprietary image processing libraries
- https://github.com/intel/icamerasrc (branch:icamerasrc_slim_api) - Gstreamer src plugin
- https://github.com/intel/ipu6-camera-hal - HAL for processing of images in userspace
- https://github.com/intel/icamerasrc/tree/icamerasrc_slim_api (branch:icamerasrc_slim_api) - Gstreamer src plugin

## Content of this repository:
- IPU6 firmware
- IPU6ep firmware
- Library binary dependencies for IPU6 HAL
- Header files for those libraries
- IPU6 firmware binaries
- Library binary dependencies for ipu6-camera-hal
- Headerfiles for those libraries

## Deployment
ipu6-camera-bins should be copied to build server and target
```shell
cp -r ipu6-camera-bins/<IPU_VER>/include/* /usr/include/
cp -r ipu6-camera-bins/<IPU_VER>/lib/* /usr/lib/
```
# Runtime files
mkdir -p /lib/firmware/intel/ipu
cp -r ipu6-camera-bins/lib/firmware/intel/ipu/*.bin /lib/firmware/intel/ipu
# For developers using engineer samples, try use unsigned FW if authenticate fail:
# cp -r ipu6-camera-bins/lib/firmware/intel/ipu/unsigned/*.bin /lib/firmware/intel/ipu
for lib in ipu6-camera-bins/lib/lib*.so.*; do \
lib=${lib##*/}; \
ln -s $lib ipu6-camera-bins/lib/${lib%.*}; \
done
cp -P ipu6-camera-bins/lib/lib* /usr/lib/
# Development files
mkdir -p /usr/include /usr/lib/pkgconfig
cp -r ipu6-camera-bins/include/* /usr/include/
cp -r ipu6-camera-bins/lib/pkgconfig/* /usr/lib/pkgconfig/
```
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ GCSS_KEY (HW_BITMAPS, hw_bitmaps)
GCSS_KEY (DEB, deb)
GCSS_KEY (TEB, teb)
GCSS_KEY (REB, reb)
GCSS_KEY (PIPELINE, pipeline)
/* add new keys to this section above this line */
GCSS_KEY_SECTION_END (GENERIC_KEYS_END, generic_keys_end, 0x0FFF)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,8 @@ typedef enum ia_cipf_terminal_type {
ia_cipf_terminal_type_frame_input,
ia_cipf_terminal_type_frame_output,
ia_cipf_terminal_type_param_input,
ia_cipf_terminal_type_param_output
ia_cipf_terminal_type_param_output,
ia_cipf_terminal_type_max
} ia_cipf_terminal_type_t;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -846,6 +846,15 @@
#define veboxtnr_stage_id 101
#define veboxtnr_stage_uid ia_cipf_external_stage_uid(veboxtnr_stage_id)

#define dol_stage_id 104
#define dol_stage_uid ia_cipf_external_stage_uid(dol_stage_id)

#define gtm_stage_id 105
#define gtm_stage_uid ia_cipf_external_stage_uid(gtm_stage_id)

#define cas_stage_id 106
#define cas_stage_uid ia_cipf_external_stage_uid(cas_stage_id)

#define psys_interleaved_code_uid ia_fourcc('I','L','C','S')
#define psys_interleaved_code_in_uid psys_interleaved_code_uid + 1
#define psys_interleaved_code_out_uid psys_interleaved_code_uid + 2
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022 Intel Corporation.
* Copyright (C) 2022-2023 Intel Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -28,10 +28,10 @@ namespace cca {
* sensor, IPU, etc.
*/
const uint32_t MAX_CAM_NUM = 4U;
const uint32_t MAX_CPF_LEN = 1024 * 1024 * 4;
const uint32_t MAX_CPF_LEN = 1024 * 1024 * 5;
const uint32_t MAX_NVM_LEN = 1024 * 16;
const uint32_t MAX_AIQD_LEN = 1024 * 1024;
const uint32_t MAX_MKN_LEN = 64 * 1024;
const uint32_t MAX_MKN_LEN = 80 * 1024;
const uint32_t MAX_MKN_SECTION_SIZE = 100000;
const uint32_t MAX_CMC_LEN = 1024 * 1024;
const uint32_t MAX_TAG_LIST_LEN = 8;
Expand Down Expand Up @@ -76,10 +76,13 @@ const uint32_t MAX_KERNEL_NUM_IN_PG = 128;
const uint32_t MAX_PG_NUM = 5;
const uint32_t MAX_PG_TERMINAL_NUM = 16;

const float MIN_MANUAL_GAMMA = 0.4f;
const float MAX_MANUAL_GAMMA = 2.6f;

const uint32_t PDAF_STATS_GRID_WIDTH = 16;
const uint32_t PDAF_STATS_GRID_HEIGHT = 12;
const uint32_t PDAF_STATS_NUM_NONSVE = 1;
const uint32_t MAX_STREAM_NUM = 5;
const uint32_t MAX_STREAM_NUM = 15;
const uint32_t MAX_RGBIR_MODELS = 3;

const uint64_t INVALID_FRAME_ID = static_cast<uint64_t>(-1);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation.
* Copyright (C) 2020-2024 Intel Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2020-2022 Intel Corporation.
* Copyright (C) 2020-2023 Intel Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -23,7 +23,12 @@
#endif

namespace cca {

enum cfa_type_t
{
type_1x1 = 0,
type_2x2 = 1,
type_4x4 = 2,
};
/*!
* \brief decode stats input parameters
*/
Expand Down Expand Up @@ -174,19 +179,20 @@ class IIPUAic {
uint32_t max_stats_height, uint32_t max_num_stats_in, const ia_mkn *mkn,
const cca_stream_ids& aic_stream_ids) = 0;


/*!
* \brief update tuning file aiqb.
*
* \param[in] aiqb Mandatory.\n
* Tuning file.
* \param[in] cmc Mandatory.\n
* Parsed cmc data.
* \param[in] streamId Optional.\n
* \param[in] aicId Optional.\n
* The stream id for aic handle.
* \return Error code.
*/
virtual ia_err updateTuning(const ia_binary_data *aiqb, const ia_cmc_t *cmc,
int32_t streamId = -1) = 0;
int32_t aicId = -1) = 0;

/*!
* \brief pass parameters for statistic analysis.
Expand All @@ -200,6 +206,31 @@ class IIPUAic {
virtual ia_err setStatsParams(ia_aiq* aiqHandle, const cca_stats_params &params,
const cca_aiq_results_storage &aiqResults) = 0;

/*!
* \brief get the max bin index of non-zero element.
*
* \param[out] stats Mandatory.\n
* output the max bin index.
* \return Error code.
*/
virtual ia_err getBrightestIndex(uint32_t *outMaxBin) = 0;

/*!
* \brief calc the total pixel number in range [luminance_low, luminance_high]
*
* \param[in] luminance_low Mandatory.\n
* the low pixel value
*
* \param[in] luminance_high Mandatory.\n
* the high pixel value
*
* \param[out] outTotalPixels Mandatory.\n
* the total pixel number in range [luminance_low, luminance_high]
*
* \return Error code.
*/
virtual ia_err getPixelCount(uint32_t luminance_low, uint32_t luminance_high, uint32_t *outTotalPixels) = 0;

#ifdef PAC_ENABLE
/*!
* \brief configure cb including kernels group and kernels offset.
Expand All @@ -210,35 +241,44 @@ class IIPUAic {
* buffer offsets for all kernels.
* \param[out] termConfig Mandatory.\n
* the memory needed by terminals of cb.
* \param[in] aicId Optional.\n
* id for aic handle.
* \return Error code.
*/
virtual ia_err config(const cca_aic_config &conf, const cca_aic_kernel_offset &offset, cca_aic_terminal_config &termConfig) = 0;
virtual ia_err config(const cca_aic_config &conf, const cca_aic_kernel_offset &offset,
cca_aic_terminal_config &termConfig, int32_t aicId = -1) = 0;
/*!
* \brief register terminal buffers.
*
* \param[in] termConfig Mandatory.\n
* the memory needed by terminals of cb.
* \param[in] aicId Optional.\n
* id for aic handle.
* \return Error code.
*/
virtual ia_err registerBuf(const cca_aic_terminal_config &termConfig) = 0;
virtual ia_err registerBuf(const cca_aic_terminal_config &termConfig, int32_t aicId = -1) = 0;
/*!
* \brief get AIC buffers for FW input after runing PAL.
*
* \param[out] termConfig Mandatory.\n
* terminal memory of cb filled with IPU params.
* \param[in] aicId Optional.\n
* id for aic handle.
* \return Error code.
*/
virtual ia_err getBuf(cca_aic_terminal_config &termConfig) = 0;
virtual ia_err getBuf(cca_aic_terminal_config &termConfig, int32_t aicId = -1) = 0;
/*!
* \brief decode statistics for a specific type(AIQ, LTM, DVS stats).
*
* \param[in] groupId Mandatory.\n
* group id of CB.
* \param[in] seqId Mandatory.\n
* sequence id for streaming.
* \param[in] aicId Optional.\n
* id for aic handle.
* \return Error code.
*/
virtual ia_err decodeStats(int32_t groupId, int64_t seqId) = 0;
virtual ia_err decodeStats(int32_t groupId, int64_t seqId, int32_t aicId = -1) = 0;

/*!
* \brief run AIC parameters with graph config & Intel3A results.
Expand All @@ -247,11 +287,16 @@ class IIPUAic {
* AIQ plus parameters and manual settings.
* \param[in] aaaResults Mandatory.\n
* AIQ plus results.
* \param[in] bitmap Mandatory.\n
* Bitmap to decide which CB will be run.
* \param[out] pal Mandatory.\n
* AIC results for each CB.
* \return Error code.
*/
virtual ia_err run(const cca_pal_input_params& params, cca_3a_plus_results& aaaResults, cca_multi_pal_output& output) = 0;
virtual ia_err run(const cca_pal_input_params& params, cca_3a_plus_results& aaaResults,
cca_multi_pal_output& output, uint8_t bitmap) = 0;

virtual ia_err UpdateConfigurationResolutions(const cca_aic_config& conf, bool isKeyResolutionChanged, int32_t aicId) = 0;

#else
/*!
Expand All @@ -262,6 +307,7 @@ class IIPUAic {
* \return Error code.
*/
virtual ia_err getDvsStats(ia_dvs_statistics* stats) = 0;

/*!
* \brief decode statistics for a specific type(AIQ, LTM, DVS stats) <=IPU6.
*
Expand All @@ -276,16 +322,7 @@ class IIPUAic {
virtual ia_err decodeStats(const cca_dec_stats_input &decParams, ia_isp_bxt_statistics_query_results_t *results,
cca_out_stats *outStats = nullptr) = 0;

/*! Get PAL binary size
*
* Calculate the PAL size according to program group
*
* \param [in] programGroup kernel info for special stream id
*
*
* return Pal size in success. zero on failure
*/
virtual uint32_t getPalSize(const cca_program_group &programGroup) = 0;

/*!
* \brief run AIC parameters with graph config & Intel3A results.
*
Expand All @@ -295,9 +332,11 @@ class IIPUAic {
* AIQ plus results.
* \param[out] pal Mandatory.\n
* AIC results.
* \param[in] aicId Optional.\n
* id for aic handle.
* \return Error code.
*/
virtual ia_err run(const cca_pal_input_params& params, cca_3a_plus_results& aaaResults, ia_binary_data* pal) = 0;
virtual ia_err run(const cca_pal_input_params& params, cca_3a_plus_results& aaaResults, ia_binary_data* pal, int32_t aicId = -1) = 0;

#endif
/*!
Expand All @@ -312,15 +351,6 @@ class IIPUAic {
*/
virtual const char* getVersion() const = 0;

/*!
* \brief get the aic Handle.
*
* \param[in] streamId Optional.\n
* the stream id for aic handle.
* \return AIC handle.
*/
virtual void* getIspHandle(int32_t streamId = -1) = 0;

};
}//cca
#endif //IIPUAIC_H_
Loading