i.MX 8M Plus Camera and Display Guide
i.MX 8M Plus Camera and Display Guide
Contents
Chapter 1 ISP Independent Sensor Interface API................................................. 3
1.1 Overview....................................................................................................................................3
1.2 Independent Sensor Interface API Components....................................................................... 4
1.3 Independent Sensor Interface Functions.................................................................................19
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 2 / 138
NXP Semiconductors
Chapter 1
ISP Independent Sensor Interface API
1.1 Overview
This document describes the Application Programming Interface (API) of the i.MX 8M Plus ISP Independent Sensor Interface
(ISI) module.
Details of the i.MX 8M Plus ISP Independent Sensor Interface API are described in this document.
• Components such as data types, enumerations, relevant structures, and return codes are described first.
• Then function syntax and description are presented.
The API explained in this document is applicable to BSP release LF5.10.72_2.2.0.
The code is written in C and parameter types follow standard C conventions. This document assumes that the reader understands
the fundamentals of C language.
Currently, there are no deprecated functions in this API.
AE Auto Exposure
AF Auto Focus
DPF De
MI Memory Interface
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 3 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
SRZE Self
YCbCr Color space with one luma and two chroma components used for digital encoding
Conventions
• The prefix “0x” indicates a hexadecimal number. For example, 0x32CF.
• The prefix “0b” indicates a binary number. For example, "0b0011.0010.1100.1111".
• Code snippets are given in Consolas or Courier typeset.
float Float
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 4 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
1.2.3 Enumerations
This section describes the enumeration definitions.
1.2.3.1 IsiBayerPattern_e
Specifies the sensor Bayer pattern mode.
1.2.3.2 IsiColorComponent_e
Specifies the color components.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 5 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
1.2.3.3 IsiExpoFrmType_e
Specifies the sensor exposure time.
1.2.3.4 IsiFocus_e
Specifies the focus position type.
1.2.3.5 IsiHdrMode_e
Specifies the sensor HDR mode.
1.2.3.6 IsiSensorTpgMode_e
Specifies the sensor test pattern mode.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 6 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
ISI_TPG_MODE_0 1 Mode 0
ISI_TPG_MODE_1 2 Mode 1
ISI_TPG_MODE_2 3 Mode 2
ISI_TPG_MODE_3 4 Mode 3
ISI_TPG_MODE_4 5 Mode 4
ISI_TPG_MODE_5 6 Mode 5
1.2.3.7 IsiStitchingMode_e
Specifies the sensor HDR stitching mode.
1.2.4 Structures
This section describes the structure definitions.
IsiCamDrvConfig_t
This structure defines camera sensor driver-specific data.
*pfIsiGetSensorIss IsiGetSensorIss_t The function pointer to initialize the member IsiSensor in this
current structure.
IsiSensor IsiSensor_t The structure includes the sensor name and the function
pointers to control the sensor in the ISI layer.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 7 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsidualGain_t
This structure defines the sensor gain for dual frame exposure HDR.
dualSGain uint32_t Gain for short exposure frame (fixed point, q10)
dualGain uint32_t Gain for normal exposure frame (fixed point, q10)
IsidualInt_t
This structure defines the sensor integration time for dual frame exposure HDR.
IsiFocusCalibAttr_t
This structure defines the focus calibration information.
IsiFocusPos_t
This structure defines the focus position.
IsiLinearGain_t
This structure defines the sensor gain (fixed point, q10) for linear mode.
Typedef IsiLinearGain_t to uint32_t
IsiLinearInt_t
This structure defines the sensor integration time microsecond (fixed point, q10) for linear mode.
Typedef IsiLinearInt_t to uint32_t
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 8 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiQuadGain_t
This structure defines the sensor gain for quad-frame exposure HDR.
quadVSGain uint32_t Gain for very short exposure frame (fixed point, q10)
quadSGain uint32_t Gain for short exposure frame (fixed point, q10)
quadGain uint32_t Gain for normal exposure frame (fixed point, q10)
quadLGain uint32_t Gain for long exposure frame (fixed point, q10)
IsiQuadInt_t
This structure defines the integration time for quad-frame exposure HDR.
IsiSensor_t
This structure defines attributes for the sensor.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 9 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiSensorAeInfo_t
This structure defines the ISI layer AE information.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 10 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
ISI_EXPO_FRAME_TYPE_1FRAME:
no ratio
ISI_EXPO_FRAME_TYPE_2FRAMES:
hdrRatio[0]= Normal/Short
ISI_EXPO_FRAME_TYPE_3FRAMES:
hdrRatio[0]= Long/Normal
hdrRatio[1]=Normal/Short
IsiSensorBlc_t
This structure defines the configuration structure used to set the sensor black level.
Typedef IsiSensorBlc_t to sensor_blc_t
IsiSensorCaps_t
This structure defines the sensor capabilities.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 11 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiSensorContext_t
This structure defines the sensor context.
SlaveAddress uint16_t The I2C slave address to which the sensor is configured.
IsiSensorExpandCurve_t
This structure defines the configuration structure used to set the sensor expand curve.
Typedef IsiSensorExpandCurve_t to sensor_expand_curve_t
IsiSensorGain_t
This structure defines the sensor gain.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 12 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiSensorGain_u
This union defines the sensor gain.
IsiSensorInstanceConfig_t
This structure defines the configuration structure used to create a new sensor instance.
SlaveAddr uint16_t The I2C slave address to which the sensor is configured.
SlaveAfAddr uint16_t The I2C slave address of which the AF module is configured.
IsiSensorIntTime_t
This structure defines the sensor integration time.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 13 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiSensorIntTime_u
This union defines the sensor integration time.
IsiSensorIspStatus_t
This structure defines the ISP status of sensor.
IsiSensorMipiInfo
This structure defines Sensor-specific information for MIPI.
IsiSensorMode_t
Typedef IsiSensorMode_t to vvcam_mode_info_t
IsiSensorModeInfoArray_t
Typedef IsiSensorModeInfoArray _t to vvcam_mode_info_array_t
IsiSensorWB_t
This structure defines the configuration structure used to set the sensor WB.
Typedef IsiSensorWB_t_t to sensor_white_balance_t
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 14 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiTriGain_t
This structure defines the sensor gain for tri-frame exposure HDR.
triSGain uint32_t Gain for short exposure frame (fixed point, q10)
triGain uint32_t Gain for normal exposure frame (fixed point, q10)
triLGain uint32_t Gain for long exposure frame (fixed point, q10)
IsiTriInt_t
This structure defines the integration time for tri-frame exposure HDR.
sensor_blc_t
sensor_data_compress_t
x_bit uint32_t If sensor data is compressed, x_bit represents the data bit width
before compression.
y_bit uint32_t If sensor data is compressed, y_bit represents the data bit width
after compression.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 15 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
sensor_expand_curve_t
sensor_hdr_artio_t
ratio_l_s uint32_t Sensor HDR exposure ratio of long exposure to short exposure
(fixed point, q10)
ratio_s_vs uint32_t Sensor HDR exposure ratio of short exposure to very short
exposure (fixed point, q10)
sensor_mipi_info_s
sensor_test_pattern_t
sensor_white_balance_t
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 16 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
vvcam_ae_info_t
def_frm_len_lines uint32_t Sensor default frame length lines (is always set to the sensor
default mode VTS)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 17 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
vvcam_clk_s
vvcam_mode_info_array_t
This structure is an abstraction of vvcam_mode_info.
vvcam_mode_info_t
vvcam_sccb_array_s
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 18 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
vvcam_sccb_cfg_s
vvcam_sccb_data_s
RESULT IsiSensorSetPowerIss (
bool_t_t on
);
Parameters:
Returns:
IsiReadRegister
Description:
This function reads the value from the specified register from the image sensor device.
Syntax:
RESULT IsiReadRegister (
IsiSensorHandle_t handle,
const uint32_t RegAddress,
uint32_t *pRegValue
);
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 19 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Parameters:
Returns
IsiWriteRegister
Description:
This function writes a given number of bytes to the image sensor device by calling the corresponding sensor function.
Syntax:
RESULT IsiWriteRegister (
IsiSensorHandle_t handle,
const uint32_t RegAddress,
const uint32_t RegValue
);
Parameters:
Returns
IsiCreateSensorIss
Description:
This function creates a sensor instance.
Syntax:
RESULT IsiCreateSensorIss (
IsiSensorInstanceConfig_t *pConfig
);
Parameters:
Returns:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 20 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiGetSensorModeIss
Description:
This function is used to get the sensor mode info by sensor mode index.
Syntax:
RESULT IsiGetSensorModeIss (
IsiSensorHandle_t *handle,
void *pmode
);
Parameters:
Returns:
IsiSetSensorModeIss
Description:
This function gets sensor mode information by sensor mode index.
Syntax:
RESULT IsiSetSensorModeIss (
IsiSensorHandle_t handle,
IsiSensorMode_t *pmode
);
Parameters:
Returns:
IsiQuerySensorIss
Description:
This function is used to query the sensor support modes info.
Syntax:
RESULT IsiQuerySensorIss (
IsiSensorHandle_t *handle,
vvcam_mode_info_array_t *pSensorInfo
);
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 21 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Parameters:
Returns:
IsiReleaseSensorIss
Description:
This function destroys/releases a sensor instance.
Syntax:
RESULT IsiReleaseSensorIss (
IsiSensorHandle_t handle
);
Parameters:
Returns:
IsiGetCapsIss
Description:
This function fills in the correct pointers for the sensor description structure.
Syntax:
RESULT IsiGetCapsIss (
IsiSensorHandle_t handle,
IsiSensorCaps_t *pIsiSensorCaps
);
Parameters:
Returns:
IsiSetupSensorIss
Description:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 22 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
This function sets up the image sensor with the specified configuration.
Syntax:
RESULT IsiSetupSensorIss (
IsiSensorHandle_t handle,
IsiSensorConfig_t *pConfig
);
Parameters:
Returns:
IsiSensorSetStreamingIss
Description:
This function enables/disables streaming of sensor data, if possible.
Syntax:
RESULT IsiSensorSetStreamingIss (
IsiSensorHandle_t handle,
bool_t on
);
Parameters:
Returns:
IsiCheckSensorConnectionIss
Description:
This function checks the connection to the camera sensor, if possible.
Syntax:
RESULT IsiCheckSensorConnectionIss (
IsiSensorHandle_t handle
);
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 23 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Returns:
IsiGetSensorRevisionIss
Description:
This function reads the sensor revision register and returns it.
Syntax:
RESULT IsiGetSensorRevisionIss (
IsiSensorHandle_t handle,
uint32_t *p_value
);
Parameters:
Returns:
IsiRegisterWriteIss
Description:
This function writes a given number of bytes to the image sensor device by calling the corresponding sensor function.
Syntax:
RESULT IsiRegisterWriteIss (
IsiSensorHandle_t handle,
const uint32_t address,
const uint32_t *p_value
);
Parameters:
Returns:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 24 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
IsiRegisterReadIss
Description:
This function reads the value from the specified register from the image sensor device.
Syntax:
RESULT IsiRegisterReadIss (
IsiSensorHandle_t handle,
const uint32_t address,
uint32_t value
);
Parameters:
Returns:
RESULT IsiGetAeInfoIss(
IsiSensorHandle_t handle,
IsiSensorAeInfo_t *pAeInfo
);
Parameters:
Returns:
IsiSetHdrRatioIss
Description:
This function sets the HDR ratio.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 25 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Syntax:
RESULT IsiSetHdrRatioIss (
IsiSensorHandle_t handle,
uint8_t hdrRatioNum ,
uint32_t* HdrRatio
);
Parameters:
Returns:
IsiGetGainIss
Description:
This function reads gain values from the image sensor module.
Syntax:
RESULT IsiGetGainIss (
IsiSensorHandle_t handle,
float *pGain
);
Parameters:
Returns:
IsiSetGainIss
Description:
This function writes gain values to the image sensor module.
Syntax:
RESULT IsiSetGainIss (
IsiSensorHandle_t handle,
float NewGain,
float *pSetGain,
float *hdr_ratio
);
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 26 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Parameters:
Returns:
IsiGetSensorFpsIss
Description:
This function returns the sensor current frame rate.
Syntax:
RESULT IsiGetSensorFpsIss (
IsiSensorHandle_t handle,
uint32_t *pFps,
);
Parameters:
Returns
IsiSetSensorFpsIss
Description:
This function sets the sensor frame rate.
Syntax:
RESULT IsiSetSensorFpsIss (
IsiSensorHandle_t handle,
uint32_t Fps,
);
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 27 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Returns
IsiSetSensorAfpsLimitsIss
Description:
This function set the minimum FPS for auto FPS control.
Syntax:
RESULT IsiSetSensorAfpsLimitsIss (
IsiSensorHandle_t handle,
uint32_t minAfps
);
Parameters:
Returns
IsiGetAeStartExposureIss
Description:
This function returns the AE start exposure (IntegrationTime(µs) x Gain) (fixed point, q10).
Syntax:
RESULT IsiSensorGetStartExposure (
IsiSensorHandle_t handle,
uint64_t *pExposure
);
Parameters:
Returns
IsiSensorAeSetStartExposure
Description:
This function sets the AE start exposure (IntegrationTime x Gain).
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 28 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Syntax:
RESULT IsiSensorAeSetStartExposure (
IsiSensorHandle_t handle,
uint64_t fExposure
);
Parameters:
Returns
IsiGetIntegrationTimeIss
Description:
This function gets the current integration time.
Syntax:
RESULT IsiGetIntegrationTimeIss (
IsiSensorHandle_t handle,
IsiSensorIntTime_t *pIntegrationTime
);
Parameters:
Returns
IsiSetIntegrationTimeIss
Description:
This function sets the integration time.
Syntax:
RESULT IsiSetIntegrationTimeIss (
IsiSensorHandle_t handle,
IsiSensorIntTime_t *pIntegrationTime,
);
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 29 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Returns
IsiGetSensorFpsIss
Description:
This function is used to get the sensor current frame rate.
Syntax:
RESULT IsiGetSensorFpsIss (
IsiSensorHandle_t handle,
uint32_t *pFps,
);
Parameters:
Returns:
IsiSetSensorFpsIss
Description:
This function is used to set the sensor frame rate.
Syntax:
RESULT IsiSetSensorFpsIss(
IsiSensorHandle_t handle,
uint32_t Fps,
);
Parameters:
Returns:
IsiGetIntegrationTimeIncrementIss
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 30 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Description:
This function returns the smallest possible integration time increment.
Syntax:
RESULT IsiGetIntegrationTimeIncrementIss(
IsiSensorHandle_t handle,
float *pIncr
);
Parameters:
Returns:
RESULT IsiGetSensorIspStatusIss (
IsiSensorHandle_t handle,
IsiSensorIspStatus_t *pSensorIspStatus
);
Parameters:
Returns
IsiSensorSetBlcIss
Description:
This function is used to set the sensor black level.
Syntax:
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 31 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Returns:
IsiSensorSetWB
Description:
This function used to set the sensor white balance.
Syntax:
RESULT IsiSensorSetWB (
IsiSensorHandle_t handle,
IsiSensorWB_t *pWb
);
Parameters:
Returns:
RESULT IsiSensorGetExpandCurveIss(
IsiSensorHandle_t handle,
sensor_expand_curve_t *pexpand_curve
);
Parameters:
Returns:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 32 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
RESULT IsiFocusSetupIss(
IsiSensorHandle_t handle
);
Parameters:
Returns
IsiFocusReleaseIss
Description:
This function releases the focus module.
Syntax:
RESULT IsiFocusReleaseIss (
IsiSensorHandle_t handle,
);
Parameters:
Returns
IsiFocusSetIss
Description:
This function sets the focus position.
Syntax:
RESULT IsiFocusSetIss (
IsiSensorHandle_t handle,
IsiFocusPos_t *pPos
);
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 33 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
Returns
IsiFocusGetIss
Description:
This function gets the focus position.
Syntax:
RESULT IsiFocusGetIss (
IsiSensorHandle_t handle,
IsiFocusPos_t *pPos
);
Parameters:
Returns
IsiFocusCalibrateIss
Description:
This function gets the focus calibration information.
Syntax:
RESULT IsiFocusCalibrateIss (
IsiSensorHandle_t handle
IsiFoucsCalibAttr_t *pFocusCalib
);
Parameters:
Returns
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 34 / 138
NXP Semiconductors
ISP Independent Sensor Interface API
RESULT IsiActivateTestPattern (
IsiSensorHandle_t handle,
IsiSensorTpgMode_e tpgMode
);
Parameters:
Returns
RESULT IsiDumpAllRegisters(
IsiSensorHandle_t handle,
const uint8_t *filename
);
Parameters:
Returns:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 35 / 138
NXP Semiconductors
Chapter 2
Camera Sensor Porting Guide
2.1 Overview
This chapter describes the architecture of the i.MX 8M PLUS Image Signal Processing (ISP sensor driver, API functions, and
calling process. It also describes the methods to add new APIs and the implementation process for mounting different sensors.
Acronyms and Conventions
3A: Auto Exposure, Auto Focus, Auto White Balance
AE: Auto Exposure
AF: Auto Focus
API: Application Programming Interface
AWB: Automatic White Balance
BLC: Black Level Correction
fps: Frames Per Second
I2C: Inter-Integrated Circuit
IOCTL: Input Output Control
ISI: Independent Sensor Interface
ISP: Image Signal Processing
ISS: Image Sensor Specific
VVCAM: Vivante’s kernel driver integration layer
WB: White Balance
The prefix “0x” or suffix “H” indicates a hexadecimal number —for example, "0x32CF" or "32CFH".
The prefix “0b” indicates a binary number —for example, "0b0011.0010.1100.1111".
Code snippets are given in Consolas typeset.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 36 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 37 / 138
NXP Semiconductors
Camera Sensor Porting Guide
1. V4L2 Mode: kernel driver that acts as a part of V4L2 kernel driver, register device name, and operations as a V4L2
subdevice style. This mode is compatible with the V4L2 sensor device format.
2.3.1.1 IsiCamDrvConfig_s
This structure defines camera sensor driver-specific data.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 38 / 138
NXP Semiconductors
Camera Sensor Porting Guide
IsiSensor IsiSensor_t The structure includes the sensor name and the function
pointers to control the sensor in the ISI layer.
2.3.1.2 IsiSensor_t
This structure defines the configuration structure used to create a sensor instance. For data structure definition details, see ISP
Independent Sensor Interface API.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 39 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.3.1.3 IsiSensorInstanceConfig_s
This structure defines the configuration structure used to create a sensor instance.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 40 / 138
NXP Semiconductors
Camera Sensor Porting Guide
IsiGetAeStartExposureIss (…) Get AE start exposure (exposure time us* gain) (fixed point
q10)
IsiSetAeStartExposureIss (…) Set AE start exposure (exposure time us* gain) (fixed point
q10)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 41 / 138
NXP Semiconductors
Camera Sensor Porting Guide
SENSOR STRUCTURES
SENSOR FUNCTIONS
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 42 / 138
NXP Semiconductors
Camera Sensor Porting Guide
<sensor>_IsiGetAeStartExposureIss (…) Get AE start exposure (exposure time us* gain) (fixed point
q10)
<sensor>_IsiSetAeStartExposureIss (…) Set AE start exposure (exposure time us* gain) (fixed point
q10)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 43 / 138
NXP Semiconductors
Camera Sensor Porting Guide
The application layer obtains the address of the function pointer with the IsiCamDrvConfig_t data structure through the
SensorOps::driverChange() function.
At the same time, the application layer passes this address down to ISS so that ISS can access different sensors.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 44 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 45 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 46 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.1.1 SENSOR_BAYER_PATTERN_E
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 47 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.1.2 sensor_hdr_mode_e
SENSOR_MODE_HDR_NATIVE Before ISP processes the different exposure images, they are combined in
the sensor.
2.5.1.3 sensor_stitching_mode_e
2.5.2.1 sensor_blc_t
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 48 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.2.2 sensor_data_compress_t
2.5.2.3 sensor_expand_curve_t
2.5.2.4 sensor_hdr_artio_t
ratio_l_s uint32_t Sensor HDR exposure ratio of long exposure to short exposure
(fixed point, q10)
ratio_s_vs uint32_t Sensor HDR exposure ratio of short exposure to very short
exposure (fixed point, q10)
2.5.2.5 sensor_mipi_info
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 49 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.2.6 sensor_test_pattern_t
2.5.2.7 sensor_white_balance_t
2.5.2.8 vvcam_ae_info_t
def_frm_len_lines uint32_t Sensor default Frame length lines (always in sensor default
mode VTS)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 50 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.2.9 vvcam_clk_s
2.5.2.10 vvcam_mode_info_array_t
This structure is an abstraction of vvcam_mode_info.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 51 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.2.11 vvcam_mode_info_t
2.5.2.12 vvcam_sccb_array_s
2.5.2.13 vvcam_sccb_cfg_s
2.5.2.14 vvcam_sccb_data_s
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 52 / 138
NXP Semiconductors
Camera Sensor Porting Guide
2.5.2.15 vvcam_sensor_function_s
This structure defines function pointers corresponding to functions in the sensor driver. This structure is only used in Native mode.
sensor_set_fps int32_t (*sensor_set_fps) (void Function pointer to set the frame rate of
*ctx, uint32_t fps) sensor in FPS(frames per second)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 53 / 138
NXP Semiconductors
Camera Sensor Porting Guide
sensor_set_vs_gain (…) Set the gain of the very short exposure frame in multiples
rather than dB
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 54 / 138
NXP Semiconductors
Camera Sensor Porting Guide
<sensor>_set_lgain(…) Set the gain of the long exposure frame in multiples rather
than dB
<sensor>_set_vsgain(…) Set the gain of the very short exposure frame in multiples
rather than dB
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 55 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 56 / 138
NXP Semiconductors
Camera Sensor Porting Guide
The hardware interface is defined in the sensor driver. These interfaces read and write the hardware registers through I2C to
realize the functions to be completed by the sensor API. At the same time, these interfaces are attached to the function pointer
in the vvcam_sensor_function_s data structure.
The VVCAM driver specifies the vvcam_sensor_function_s data structure in vvcam/native/sensor/Makefile. The
sensor driver then copies the data structure variables of the vvcam_sensor_function_s to the member variables of the
vvcam_sensor_dev data structure.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 57 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 58 / 138
NXP Semiconductors
Camera Sensor Porting Guide
For example:
In file vvcam/native/sensor/sensor_ioctl.c, the driver uses the SENSR0_FUNCTION and SENSR1_FUNCTION macros to get the
vvcam_sensor_function_s data structure. The VVCAM operates different sensor drivers by accessing their pointer variables to
achieve this.
For example:
NOTE
Developers should add their own sensor into makefile vvcam/native/sensor/Makefile as shown in the
example below.
where: ISP8000xxxx_Vxxxx is the version number of the ISP you are using.
add_definitions(-DISP_HDR_STITCH)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 59 / 138
NXP Semiconductors
Camera Sensor Porting Guide
NOTE
Developers should replace the Vivante V4L2-Subdev Driver with their own sensor as shown in the figure below.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 60 / 138
NXP Semiconductors
Camera Sensor Porting Guide
&i2c2 {
/delete-node/ov5640_mipi@3c;
ov2775_0: ov2775_mipi@36 {
compatible = "ovti,ov2775";
reg = <0x36>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_csi0_pwn>, <&pinctrl_csi0_rst>, <&pinctrl_csi_mclk>;
clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
clock-names = "csi_mclk";
assigned-clocks = <&clk IMX8MP_CLK_IPP_DO_CLKO2>;
assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
assigned-clock-rates = <24000000>;
csi_id = <0>;
pwn-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
rst-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
mclk = <24000000>;
mclk_source = <0>;
status = "okay";
port {
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 61 / 138
NXP Semiconductors
Camera Sensor Porting Guide
ov2775_mipi_0_ep: endpoint {
data-lanes = <1 2 3 4>;
clock-lanes = <0>;
max-pixel-frequency = /bits/ 64 <500000000>;
remote-endpoint = <&mipi_csi0_ep>;
};
};
};
};
.max_integration_line = 0x466 - 4,
.min_integration_line = 1,
.max_again = 8 * 1024,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
.gain_step = 4,
.start_exposure = 3 * 400 * 1024,
.cur_fps = 30 * 1024,
.max_fps = 30 * 1024,
.min_fps = 5 * 1024,
.min_afps = 5 * 1024,
.int_update_delay_frm = 1,
.gain_update_delay_frm = 1,
},
.mipi_info = {
.mipi_lane = 4,
},
.preg_data = ov2775_init_setting_1080p,
.reg_data_count = ARRAY_SIZE(ov2775_init_setting_1080p),
},
{
.index = 1,
.width = 1920,
.height = 1080,
.hdr_mode = SENSOR_MODE_HDR_STITCH,
.stitching_mode = SENSOR_STITCHING_DUAL_DCG,
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 62 / 138
NXP Semiconductors
Camera Sensor Porting Guide
.bit_width = 12,
.data_compress = {
.enable = 0,
},
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.def_frm_len_lines = 0x466,
.curr_frm_len_lines = 0x466,
.one_line_exp_time_ns = 59167,
.max_integration_line = 0x400,
.min_integration_line = 1,
.max_vsintegration_line = 44,
.min_vsintegration_line = 1,
.max_again = 8 * 1024,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
.max_short_again = 8 * 1024,
.min_short_again = 2 * 1024,
.max_short_dgain = 4 * 1024,
.min_short_dgain = 1.5 * 1024,
.start_exposure = 3 * 400 * 1024,
.gain_step = 4,
.cur_fps = 30 * 1024,
.max_fps = 30 * 1024,
.min_fps = 5 * 1024,
.min_afps = 5 * 1024,
.hdr_ratio = {
.ratio_l_s = 8 * 1024,
.ratio_s_vs = 8 * 1024,
.accuracy = 1024,
},
.int_update_delay_frm = 1,
.gain_update_delay_frm = 1,
},
.mipi_info = {
.mipi_lane = 4,
},
.preg_data = ov2775_init_setting_1080p_hdr,
.reg_data_count = ARRAY_SIZE(ov2775_init_setting_1080p_hdr),
},
{
.index = 2,
.width = 1920,
.height = 1080,
.hdr_mode = SENSOR_MODE_HDR_NATIVE,
.stitching_mode = SENSOR_STITCHING_DUAL_DCG_NOWAIT,
.bit_width = 12,
.data_compress = {
.enable = 1,
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 63 / 138
NXP Semiconductors
Camera Sensor Porting Guide
.x_bit = 16,
.y_bit = 12,
},
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.def_frm_len_lines = 0x466,
.curr_frm_len_lines = 0x466,
.one_line_exp_time_ns = 59167,
.max_integration_line = 0x466 - 4,
.min_integration_line = 1,
.max_again = 8 * 1024 ,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
.gain_step = 4,
.cur_fps = 30 * 1024,
.max_fps = 30 * 1024,
.min_fps = 5 * 1024,
.min_afps = 5 * 1024,
.hdr_ratio = {
.ratio_l_s = 8 * 1024,
.ratio_s_vs = 8 * 1024,
.accuracy = 1024,
},
.int_update_delay_frm = 1,
.gain_update_delay_frm = 1,
},
.mipi_info = {
.mipi_lane = 4,
},
.preg_data = ov2775_1080p_native_hdr_regs,
.reg_data_count = ARRAY_SIZE(ov2775_1080p_native_hdr_regs),
},
};
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 64 / 138
NXP Semiconductors
Camera Sensor Porting Guide
if (!sensor)
return -ENOMEM;
memset(sensor, 0, sizeof(*sensor));
sensor->i2c_client = client;
retval = ov2775_retrieve_capture_properties(sensor,&sensor->ocp);
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 65 / 138
NXP Semiconductors
Camera Sensor Porting Guide
if (retval) {
dev_warn(dev, "retrive capture properties error\n");
}
retval = ov2775_regulator_enable(sensor);
if (retval) {
dev_err(dev, "regulator enable failed\n");
return retval;
}
ov2775_set_clk_rate(sensor);
retval = clk_prepare_enable(sensor->sensor_clk);
if (retval < 0) {
dev_err(dev, "%s: enable sensor clk fail\n", __func__);
goto probe_err_regulator_disable;
}
retval = ov2775_power_on(sensor);
if (retval < 0) {
dev_err(dev, "%s: sensor power on fail\n", __func__);
goto probe_err_regulator_disable;
}
ov2775_reset(sensor);
sd = &sensor->subdev;
v4l2_i2c_subdev_init(sd, client, &ov2775_subdev_ops);
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
sd->dev = &client->dev;
sd->entity.ops = &ov2775_sd_media_ops;
sd->entity.function = MEDIA_ENT_F_CAM_SENSOR;
sensor->pads[OV2775_SENS_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 66 / 138
NXP Semiconductors
Camera Sensor Porting Guide
retval = media_entity_pads_init(&sd->entity,
OV2775_SENS_PADS_NUM,
sensor->pads);
if (retval < 0)
goto probe_err_power_off;
retval = v4l2_async_register_subdev_sensor_common(sd);
if (retval < 0) {
dev_err(&client->dev,"%s--Async register failed, ret=%d\n",
__func__,retval);
goto probe_err_free_entiny;
}
memcpy(&sensor->cur_mode, &pov2775_mode_info[0],
sizeof(struct vvcam_mode_info_s));
mutex_init(&sensor->lock);
pr_info("%s camera mipi ov2775, is found\n", __func__);
return 0;
probe_err_free_entiny:
media_entity_cleanup(&sd->entity);
probe_err_power_off:
ov2775_power_off(sensor);
probe_err_regulator_disable:
ov2775_regulator_disable(sensor);
return retval;
}
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 67 / 138
NXP Semiconductors
Camera Sensor Porting Guide
void *arg)
{
struct i2c_client *client = v4l2_get_subdevdata(sd);
struct ov2775 *sensor = client_to_ov2775(client);
long ret = 0;
struct vvcam_sccb_data_s sensor_reg;
mutex_lock(&sensor->lock);
switch (cmd){
case VVSENSORIOC_S_POWER:
ret = 0;
break;
case VVSENSORIOC_S_CLK:
ret = 0;
break;
case VVSENSORIOC_G_CLK:
ret = ov2775_get_clk(sensor,arg);
break;
case VVSENSORIOC_RESET:
ret = 0;
break;
case VIDIOC_QUERYCAP:
ret = ov2775_query_capability(sensor, arg);
break;
case VVSENSORIOC_QUERY:
ret = ov2775_query_supports(sensor, arg);
break;
case VVSENSORIOC_G_CHIP_ID:
ret = ov2775_get_sensor_id(sensor, arg);
break;
case VVSENSORIOC_G_RESERVE_ID:
ret = ov2775_get_reserve_id(sensor, arg);
break;
case VVSENSORIOC_G_SENSOR_MODE:
ret = ov2775_get_sensor_mode(sensor, arg);
break;
case VVSENSORIOC_S_SENSOR_MODE:
ret = ov2775_set_sensor_mode(sensor, arg);
break;
case VVSENSORIOC_S_STREAM:
ret = ov2775_s_stream(&sensor->subdev, *(int *)arg);
break;
case VVSENSORIOC_WRITE_REG:
ret = copy_from_user(&sensor_reg, arg,
sizeof(struct vvcam_sccb_data_s));
ret |= ov2775_write_reg(sensor, sensor_reg.addr,
sensor_reg.data);
break;
case VVSENSORIOC_READ_REG:
ret = copy_from_user(&sensor_reg, arg,
sizeof(struct vvcam_sccb_data_s));
ret |= ov2775_read_reg(sensor, sensor_reg.addr,
(u8 *)&sensor_reg.data);
ret |= copy_to_user(arg, &sensor_reg,
sizeof(struct vvcam_sccb_data_s));
break;
case VVSENSORIOC_S_LONG_EXP:
ret = ov2775_set_lexp(sensor, *(u32 *)arg);
break;
case VVSENSORIOC_S_EXP:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 68 / 138
NXP Semiconductors
Camera Sensor Porting Guide
mutex_unlock(&sensor->lock);
return ret;
}
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 69 / 138
NXP Semiconductors
Camera Sensor Porting Guide
uint64_t AEStartExposure;
} OV2775_Context_t;
IsiCamDrvConfig_t IsiCamDrvConfig = {
.CameraDriverID = 0x2770,
.pIsiHalQuerySensor = <sensor>_IsiHalQuerySensorIss,
.pfIsiGetSensorIss = <sensor>_IsiGetSensorIss
}
NOTE
• IsiCamDrvConfig is defined in file: units/isi/drv/<sensor>/source/<sensor>.c.
<sensor>_IsiGetSensorIss() can initialize the IsiSensor data structure. It is called by an upper-level application
described in the ISS Sensor Driver User Space Flow section. Then the application can get the address of all the
callback functions.
<sensor>_IsiGetSensorIss is defined as follows.
…
};
NOTE
It is described in the Sensor API Reference section.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 70 / 138
NXP Semiconductors
Camera Sensor Porting Guide
.x_bit = 16,
.y_bit = 12,
},
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.def_frm_len_lines = 0x466,
.curr_frm_len_lines = 0x466,
.one_line_exp_time_ns = 59167,
.max_integration_line = 0x466 - 4,
.min_integration_line = 1,
.max_again = 8 * 1024,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
2. Set the Native HDR default stitching ratio for two-exposure, use ratio_s_vs (long/short) as the stitching ratio for
three-exposure, and set both ratio_l_s (long/normal) and ratio_s_vs (normal/short).
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 71 / 138
NXP Semiconductors
Camera Sensor Porting Guide
.y_bit = 12,
},
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.def_frm_len_lines = 0x466,
.curr_frm_len_lines = 0x466,
.one_line_exp_time_ns = 59167,
.max_integration_line = 0x466 - 4,
.min_integration_line = 1,
.max_again = 8 * 1024,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
.gain_step = 4,
.cur_fps = 30 * 1024,
.max_fps = 30 * 1024,
.min_fps = 5 * 1024,
.min_afps = 5 * 1024,
.hdr_ratio = {
.ratio_l_s = 8 * 1024,
.ratio_s_vs = 8 * 1024,
.accuracy = 1024,
},
.int_update_delay_frm = 1,
.gain_update_delay_frm = 1,
},
.mipi_info = {
.mipi_lane = 4,
},
.preg_data = ov2775_1080p_native_hdr_regs,
.reg_data_count = ARRAY_SIZE(ov2775_1080p_native_hdr_regs),
},
};
3. Generally, native HDR performs data compression at the sensor end, and the decompression function of the ISP
module must be enabled. Setting data_compress.enable = 1 means the sensor data has been compressed, and the
data is compressed from x_bit to y_bit. The decompression curve API must be implemented as described in the
Sensor Compand Curve section.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 72 / 138
NXP Semiconductors
Camera Sensor Porting Guide
.enable = 1,
.x_bit = 16,
.y_bit = 12,
},
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.def_frm_len_lines = 0x466,
.curr_frm_len_lines = 0x466,
.one_line_exp_time_ns = 59167,
.max_integration_line = 0x466 - 4,
.min_integration_line = 1,
.max_again = 8 * 1024,
.min_again = 2 * 1024,
.max_dgain = 4 * 1024,
.min_dgain = 1.5 * 1024,
4. Native HDR BLS and WB usually need to be done on the sensor side, so it is necessary to realize the sensor WB and
BLS interface and configure ISP to use sensor BLS and WB as described in Sensor White Balance and Black Level
Correction (BLC) section.
NOTE
• The maximum bit width for the expand module is 20 bits.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 73 / 138
NXP Semiconductors
Camera Sensor Porting Guide
Example:
For OV2775 native HDR, sensor data is compressed from 16 bits to 12 bits. So,
x_bit =16 and y_bit=12.
It determines the type of decompression curve used by the compand module.
{
.index = 2,
.width = 1920,
.height = 1080,
.fps = 30,
.hdr_mode = SENSOR_MODE_HDR_NATIVE,
.bit_width = 12,
.data_compress.enable = 1,
.data_compress.x_bit = 16,
.data_compress.y_bit = 12,
.bayer_pattern = BAYER_BGGR,
.ae_info = {
.DefaultFrameLengthLines = 0x466,
.one_line_exp_time_ns = 59167,
.max_interrgation_time = 0x466 - 2,
.min_interrgation_time = 1,
.gain_accuracy = 1024,
.max_gain = 21 * 1024,
.min_gain = 3 * 1024,
},
.preg_data = ov2775_1080p_native_hdr_regs,
.reg_data_count = ARRAY_SIZE(ov2775_1080p_native_hdr_regs),
}
ISP decompresses according to the specified compression method. If the sensor is compressed from 16-bit to 12-bit, the
compand module calls the <sensor>_get_expand_curve() function to get the 12-bit to 16-bit expand curve as defined in the
sensor_expand_curve_s data structure.
See below the limitations of the expand curve.
(1 << pexpand_curve->expand_px[i]) =
pexpand_curve->expand_x_data[i+1] - pexpand_curve->expand_x_data[i]
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 74 / 138
NXP Semiconductors
Camera Sensor Porting Guide
The backend processor can decompress 12-bit data to 16-bit data using the following formula.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 75 / 138
NXP Semiconductors
Camera Sensor Porting Guide
pexpand_curve->expand_y_data[i] =
(pexpand_curve->expand_x_data[i] - 256) << 2;
}
else if (pexpand_curve->expand_x_data[i] < 2560)
{
pexpand_curve->expand_y_data[i] =
(pexpand_curve->expand_x_data[i] - 512) << 3;
}
else
{
pexpand_curve->expand_y_data[i] =
(pexpand_curve->expand_x_data[i] - 2048) << 5;
}
}
return 0;
}
return (-1);
}
ar0820 20-bit to12-bit as 16-bit output:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 76 / 138
NXP Semiconductors
Camera Sensor Porting Guide
The automatic values of the knee-points can be read back from the oc_lut_XX registers but cannot be changed (writes to the
oc_lut_XX registers are ignored). All the knee-point registers are MSB-aligned. For example, a programmed value of 0x2000 acts
as 0x200 when the output is 12-bit data and acts as 0x2000 when the output is 16-bit data.
The expand curve is defined as follows:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 77 / 138
NXP Semiconductors
Camera Sensor Porting Guide
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,};
expand_x_data[65] ={0,0x2000,0x4000,0x8000,0x8200,0x8600,0x8e00,0x9e00,0xbe00,
0xc200,0xca00,0xda00,0xfa00,0xfa01,0xfa02,0xfa03,0xfa04,
0xfa05,0xfa06,0xfa07,0xfa08,0xfa09,0xfa0a,0xfa0b,0xfa0c,
0xfa0d,0xfa0e,0xfa0f,0xfa10,0xfa11,0xfa12,0xfa13,0xfa14,
0xfa15,0xfa16,0xfa17,0xfa18,0xfa19,0xfa1a,0xfa1b,0xfa1c,
0xfa1d,0xfa1e,0xfa1f,0xfa20,0xfa21,0xfa22,0xfa23,0xfa24,
0xfa25,0xfa26,0xfa27,0xfa28,0xfa29,0xfa2a,0xfa2b,0xfa2c,
0xfa2d,0xfa2e,0xfa2f,0xfa30,0xfa31,0xfa32,0xfa33,0xfa34};
expand_y_data[65] = {0x00,
0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000,
0x20000, 0x40000, 0x80000, 0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000,
0x100000,0x100000,0x100000,0x100000, 0x100000, 0x100000, 0x100000,0x100000};
NOTE
Sensor data is 16-bit output, so data_compress must set x_bit = 20 and y_bit = 16.
.data_compress = {
.enable = 1,
.x_bit = 20,
.y_bit = 16,
},
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 78 / 138
NXP Semiconductors
Camera Sensor Porting Guide
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 79 / 138
NXP Semiconductors
Chapter 3
ISP Using V4L2 Interface
3.1 Overview
This document describes the ISP software Application Programming Interface (API) using Video For Linux 2. The ISP software
V4L2 API controls the ISP hardware, sensor hardware, and its calibration data from the Linux standard API. The kernel V4L2 driver
handles the API commands and requests from the V4L2 user application. It communicates to the ISP software stack and delivers
image buffers to the V4L2 user application.
Currently, there are no deprecated functions in this API.
3.1.1 Requirements/dependencies
• Linux environment is compatible with V4L2.
Feature Abbreviation
Auto Focus AF
Auto Exposure AE
Demosaic --
Image Effect IE
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 80 / 138
NXP Semiconductors
ISP Using V4L2 Interface
VIDIOC_QBUF .vidioc_qbuf Enqueue buffer to kernel, then the driver fills this buffer
VIDIOC_QUERYBUF .vidioc_querybuf Get buffer information from the kernel and mmap
VIDIOC_DQBUF .vidioc_dqbuf De-queue the buffer from the kernel. User gets frame data
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 81 / 138
NXP Semiconductors
ISP Using V4L2 Interface
UserSpace kernelSpace
V4L2 Framework Vivante ISP V4L2 Vb2 Framework Vivante ISP Vb2
v4I2_open() capture_v4I2_open()
1. open</dev/videoX>
v4I_s_querycap() capture_v4I2_querycap()
2. ioct1<VIDIOC_QUERYCAP>
capture_v4I2_s_fmt
_vid_cap_mplane() set width*height,
v4I_s_fmt()
3. ioct1<VIDIOC_S_FMT> num planes
6. mmap()
12. munmap()
13. close(fd)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 82 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• select()
• poll()
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 83 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Link: http://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-subscribe-event.html
• VIDIOC_UNSUBSCRIBE_EVENT
Link: http://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-subscribe-event.html
• VIDIOC_DQEVENT
Link: http://www.kernel.org/doc/html/v5.4/media/uapi/v4l/vidioc-dqevent.html
… … …
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 84 / 138
NXP Semiconductors
ISP Using V4L2 Interface
String Json::Value::toStyledString(Json::Value)
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 85 / 138
NXP Semiconductors
ISP Using V4L2 Interface
reserved2[1] __u32
• IF_AE_S_CFG
This macro definition is identical to the string "ae.s.cfg".
Description: Sets the configuration values for the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 86 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_AE_G_ECM
This macro definition is identical to the string "ae.g.ecm".
Description: Gets the ECM (Exposure Control Module) values for the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AE_S_ECM
This macro definition is identical to the string "ae.s.ecm".
Description: Sets the ECM (Exposure Control Module) values for the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 87 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_AE_G_EN
This macro definition is identical to the string "ae.g.en".
Description: Gets the enabled/disabled state of the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AE_S_EN
This macro definition is identical to the string "ae.s.en".
Description: Sets the enabled/disabled state of the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AE_RESET
This macro definition is identical to the string "ae.reset".
Description: Reset the Auto Exposure control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 88 / 138
NXP Semiconductors
ISP Using V4L2 Interface
N/A - -
• IF_AF_G_CFG
This macro definition is identical to the string "af.g.cfg".
Description: Gets the configuration of the Auto Focus control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AF_S_CFG
This macro definition is identical to the string "af.s.cfg".
Description: Sets the configuration of the Auto Focus control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AF_G_EN
This macro definition is identical to the string "af.g.en".
Description: Gets the enabled/disabled state of the Auto Focus control.
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 89 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AF_S_EN
This macro definition is identical to the string "af.s.en".
Description: Sets the enabled/disabled state of the Auto Focus control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_G_CFG
This macro definition is identical to the string "awb.g.cfg".
Description: Gets the configuration of the Auto White Balance control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_S_CFG
This macro definition is identical to the string "awb.s.cfg".
Description: Sets the mode and index of the Auto White Balance control.
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 90 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_G_EN
This macro definition is identical to the string "awb.g.en".
Description: Gets the enabled/disabled state of the Auto White Balance control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_S_EN
This macro definition is identical to the string "awb.s.en".
Description: Sets the enabled/disabled state of the Auto White Balance control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_RESET
This macro definition is identical to the string "awb.reset".
Description: Resets the Auto White Balance control.
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 91 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jRequest
— Json::Value &jResponse
N/A - -
• IF_AWB_S_GAIN
This macro definition is identical to the string "awb.s.gain".
Description: Sets gains of the Auto White Balance.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AWB_S_MEASWIN
This macro definition is identical to the string "awb.s.measwin".
Description: Sets measuring window of the Auto White Balance.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AVS_G_CFG
This macro definition is identical to the string "avs.g.cfg".
Description: Gets the configuration values for the Auto Video Stabilization control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 92 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_AVS_S_CFG
This macro definition is identical to the string "avs.s.cfg".
Description: Sets the configuration values for the Auto Video Stabilization control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_AVS_G_EN
This macro definition is identical to the string "avs.g.en".
Description: Gets the enabled/disabled state of the Auto Video Stabilization control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 93 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_AVS_S_EN
This macro definition is identical to the string "avs.s.en".
Description: Sets the enabled/disabled state of the Auto Video Stabilization control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_BLS_G_CFG
This macro definition is identical to the string "bls.g.cfg".
Description: Gets the configuration values for the Black Level Subtraction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_BLS_S_CFG
This macro definition is identical to the string "bls.s.cfg".
Description: Sets the configuration values for the Black Level Subtraction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 94 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_CAC_G_EN
This macro definition is identical to the string "cac.g.en".
Description: Gets the enabled/disabled state of the Chromatic Aberration Correction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CAC_S_EN
This macro definition is identical to the string "cac.s.en".
Description: Sets the enabled/disabled state of the Chromatic Aberration Correction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CNR_G_CFG
This macro definition is identical to the string "cnr.g.cfg".
Description: Gets the configuration values for the Chroma Noise Reduction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CNR_S_CFG
This macro definition is identical to the string "cnr.s.cfg".
Description: Sets the configuration values for the Chroma Noise Reduction control.
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 95 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CNR_G_EN
This macro definition is identical to the string "cnr.s.en".
Description:
Gets the enabled/disabled state of the Chroma Noise Reduction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CNR_S_EN
This macro definition is identical to the string "cnr.s.en".
Description:
Sets the enabled/disabled state of the Chroma Noise Reduction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_CPROC_G_CFG
This macro definition is identical to the string "cproc.g.cfg".
Description: Gets the configuration values for the Color Processing control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 96 / 138
NXP Semiconductors
ISP Using V4L2 Interface
chroma.out CPROC chrominance pixel — 1: CbCr_out clipping range [16 … 240] according to ITU-R
clipping range at output BT.601 standard
— 2: full UV_out clipping range [0 … 255]
luma.in CPROC luminance input range — 1: Y_in range [64 … 940] according to ITU-R BT.601
(offset processing) standard; offset of 64 is subtracted from Y_in
— 2: Y_in full range [0 … 1023]; no offset is subtracted from
Y_in
luma.out CPROC luminance output — 1: Y_out clipping range [16 … 235]; offset of 16 is added to
clipping range Y_out according to ITU-R BT.601 standard
— 2: Y_out clipping range [0 … 255]; no offset is added to Y_out
• IF_CPROC_S_CFG
This macro definition is identical to the string "cproc.s.cfg".
Description: Sets the configuration values for the Color Processing control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 97 / 138
NXP Semiconductors
ISP Using V4L2 Interface
chroma.out CPROC chrominance pixel — 1: CbCr_out clipping range [16 … 240] according to ITU-R
clipping range at output BT.601 standard
— 2: full UV_out clipping range [0 … 255]
luma.in CPROC luminance input range — 1: Y_in range [64 … 940] according to ITU-R BT.601
(offset processing) standard; offset of 64 is subtracted from Y_in
— 2: Y_in full range [0 … 1023]; no offset is subtracted from
Y_in
luma.out CPROC luminance output — 1: Y_out clipping range [16 … 235]; offset of 16 is added to
clipping range Y_out according to ITU-R BT.601 standard
— 2: Y_out clipping range [0 … 255]; no offset is added to Y_out
• IF_CPROC_G_EN
This macro definition is identical to the string "cproc.g.en".
Description: Gets the enabled/disabled state of the Color Processing control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 98 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_CPROC_S_EN
This macro definition is identical to the string "cproc.s.en".
Description: Sets the enabled/disabled state of the Color Processing control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DEMOSAIC_G_CFG
This macro definition is identical to the string "dmsc.g.cfg".
Description: Gets the configuration values for the Demosaic control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DEMOSAIC_S_CFG
This macro definition is identical to the string "dmsc.s.cfg".
Description: Sets the configuration values for the Demosaic control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 99 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DEMOSAIC_G_EN
This macro definition is identical to the string "demosaic.g.en".
Description: Gets the enabled/disabled state of the Demosaic control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DEMOSAIC_S_EN
This macro definition is identical to the string "demosaic.s.en".
Description: Sets the enabled/disabled state of the Demosaic control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DPCC_G_EN
This macro definition is identical to the string "dpcc.g.en".
Description: Gets the enabled/disabled state of the Defect Pixel Cluster Correction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 100 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DPCC_S_EN
This macro definition is identical to the string "dpcc.s.en".
Description: Sets the enabled/disabled state of the Defect Pixel Cluster Correction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DPF_G_CFG
This macro definition is identical to the string "dpf.g.cfg".
Description: Gets the configuration values for the De-noising Pre-Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DPF_S_CFG
This macro definition is identical to the string "dpf.s.cfg".
Description: Sets the configuration values for the De-noising Pre-Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 101 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DPF_G_EN
This macro definition is identical to the string "dpf.g.en".
Description: Gets the enabled/disabled state of the De-noising Pre-Filter control.
Parameters:
—
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DPF_S_EN
This macro definition is identical to the string "dpf.s.en".
Description: Sets the enabled/disabled state of the De-noising Pre-Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_EC_G_CFG
This macro definition is identical to the string "ec.g.cfg".
Description: Gets the configuration values for the Exposure Control.
Parameters:
— Json::Value &jRequest
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 102 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jResponse
• IF_EC_S_CFG
This macro definition is identical to the string "ec.s.cfg".
Description: Sets the configuration values for the Exposure Control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_EE_G_CFG
This macro definition is identical to the string "ee.g.cfg".
Description: Gets the configuration values for the Edge Enhancement control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_EE_S_CFG
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 103 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_EE_G_EN
This macro definition is identical to the string "ee.g.en".
Description: Gets the enabled/disabled state of the Edge Enhancement control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_EE_S_EN
This macro definition is identical to the string "ee.s.en".
Description: Sets the enabled/disabled state of the Edge Enhancement control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 104 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_EE_RESET
This macro definition is identical to the string "ee.reset".
Description: Resets the Edge Enhancement control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
N/A - -
• IF_EE_S_TBL
This macro definition is identical to the string "ee.s.tbl".
Description: Sets the EE control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_FILTER_G_CFG
This macro definition is identical to the string "filter.g.cfg".
Description: Gets the configuration values for the Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_FILTER_S_CFG
This macro definition is identical to the string "filter.s.cfg".
Description: Sets the configuration values for the Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 105 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_FILTER_G_EN
This macro definition is identical to the string "filter.g.en".
Description: Gets the enabled/disabled state of the Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_FILTER_S_EN
This macro definition is identical to the string "filter.s.en".
Description: Sets the enabled/disabled state of the Filter control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_FILTER_S_TBL
This macro definition is identical to the string "filter.s.tbl".
Description: Sets the Filter control table.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 106 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_GC_G_CURVE
This macro definition is identical to the string "gc.g.curve".
Description: Gets the configuration values for the Gamma control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_GC_S_CURVE
This macro definition is identical to the string "gc.s.curve".
Description: Sets the configuration values for the Gamma Control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_GC_G_CFG
This macro definition is identical to the string "gc.g.cfg".
Description: Gets the configuration values for the Gamma control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_GC_S_CFG
This macro definition is identical to the string "gc.s.cfg".
Description: Sets the configuration values for the Gamma control.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 107 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_GC_G_EN
This macro definition is identical to the string "gc.g.en".
Description: Gets the enabled/disabled state of the Gamma Control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_GC_S_EN
This macro definition is identical to the string "gc.s.en".
Description: Sets the enabled/disabled state of the Gamma Control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_HDR_G_CFG
This macro definition is identical to the string "hdr.g.cfg".
Description: Gets the configuration of the High Dynamic Range control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 108 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_HDR_S_CFG
This macro definition is identical to the string "hdr.s.cfg".
Description: Sets the configuration of the High Dynamic Range control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_HDR_G_EN
This macro definition is identical to the string "hdr.g.en".
Description: Gets the enabled/disabled state of the High Dynamic Range control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_HDR_S_EN
This macro definition is identical to the string "hdr.s.en".
Description: Sets the enabled/disabled state of the High Dynamic Range control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 109 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_HDR_RESET
This macro definition is identical to the string "hdr.reset".
Description: Resets the High Dynamic Range control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
N/A - -
• IF_IE_G_CFG
This macro definition is identical to the string "ie.g.cfg".
Description: Gets the configuration values for the Image Effects control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
range Image Effects configuration range 1: pixel value range according to BT.601
2: YCbCr full range [0 … 255]
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 110 / 138
NXP Semiconductors
ISP Using V4L2 Interface
5: red
6: red and blue
7: red and green
• IF_IE_S_CFG
This macro definition is identical to the string "ie.s.cfg".
Description: Sets the configuration values for the Image Effects control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
range Image Effects configuration range 1: pixel value range according to BT.601
2: YCbCr full range [0 … 255]
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 111 / 138
NXP Semiconductors
ISP Using V4L2 Interface
3: green
4: green and blue
5: red
6: red and blue
7: red and green
• IF_IE_G_EN
This macro definition is identical to the string "ie.g.en".
Description: Gets the enabled/disabled state of the Image Effects control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_IE_S_EN
This macro definition is identical to the string "ie.s.en".
Description: Sets the enabled/disabled state of the Image Effects control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_LSC_G_EN
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 112 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_LSC_S_EN
This macro definition is identical to the string "lsc.s.en".
Description: Sets the enabled/disabled state of the Lens Shade Correction control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_2DNR_G_CFG
This macro definition is identical to the string "2dnr.g.cfg".
Description: Gets the configuration values for the 2DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_2DNR_S_CFG
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 113 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_2DNR_G_EN
This macro definition is identical to the string "2dnr.g.en".
Description: Gets the enabled/disabled state of the 2DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_2DNR_S_EN
This macro definition is identical to the string "2dnr.s.en".
Description: Sets the enabled/disabled state of the 2DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 114 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_2DNR_RESET
This macro definition is identical to the string "2dnr.reset".
Description: Resets the 2DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_2DNR_S_TBL
This macro definition is identical to the string "2dnr.s.tbl".
Description: Resets the 2DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_3DNR_G_CFG
This macro definition is identical to the string "3dnr.g.cfg".
Description: Gets the configuration values for the 3DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_3DNR_S_CFG
This macro definition is identical to the string "3dnr.s.cfg".
Description: Sets the configuration values for the 3DNR control.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 115 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_3DNR_G_EN
This macro definition is identical to the string "3dnr.g.en".
Description: Gets the enabled/disabled state of the 3DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_3DNR_S_EN
This macro definition is identical to the string "3dnr.s.en".
Description: Sets the enabled/disabled state of the 3DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_3DNR_RESET
This macro definition is identical to the string "3dnr.reset".
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 116 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_3DNR_S_TBL
This macro definition is identical to the string "3dnr.reset".
Description: Resets the 3DNR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WDR_G_CFG
This macro definition is identical to the string "wdr.g.cfg".
Description: Gets the configuration values for the WDR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WDR_S_CFG
This macro definition is identical to the string "wdr.s.cfg".
Description: Sets the configuration values for the WDR control.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 117 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WDR_G_EN
This macro definition is identical to the string "wdr.g.en".
Description: Gets the enabled/disabled state of the WDR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WDR_S_EN
This macro definition is identical to the string "wdr.s.en".
Description: Sets the enabled/disabled state of the WDR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WDR_RESET
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 118 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_WDR_S_TBL
This macro definition is identical to the string "wdr.s.tb".
Description: Sets the table of the WDR control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_WB_G_CFG
Description: Gets the configuration values for the WB control.
This macro definition is identical to the string "wb.g.cfg".
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 119 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_WB_S_CFG
This macro definition is identical to the string "wb.s.cfg".
Description: Sets the configuration values for the WB control.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
NOTE
Requires hardware with dewarp capability.
• IF_DWE_S_PARAMS
This macro definition is identical to the string "dwe.s.params".
Description: Sets the dewarp parameters: input format, output format, ROI, scale, split, dewarp type, and so on.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 120 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DWE_G_PARAMS
This macro definition is identical to the string "dwe.g.params".
Description: Gets the Dewarp parameters: input format, output format, ROI, scale, split, dewarp type, and so on.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 121 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DWE_S_HFLIP
This macro definition is identical to the string "dwe.s.hflip".
Description: Sets the image horizontal flip parameters.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DWE_S_VFLIP
This macro definition is identical to the string "dwe.s.vflip".
Description: Sets the image vertical flip parameters.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DWE_S_BYPASS
This macro definition is identical to the string "dwe.s.bypass".
Description: Sets the Dewarp bypass true or false.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 122 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_DWE_S_MODE
This macro definition is identical to the string "dwe.s.mode".
Description: Sets the Dewarp mode index.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DWE_S_MAT
This macro definition is identical to the string "dwe.s.mat".
Description: Sets the camera matrix and distortion coefficient.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_DWE_S_TYPE
This macro definition is identical to the string "dwe.s.type".
Description: Sets the Dewarp type.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 123 / 138
NXP Semiconductors
ISP Using V4L2 Interface
2: 'fisheye expand'
4: split screen
8: 'fisheye dewarp'
• VIV_V4L_DWE_SET_CROP
Description: Crops the image.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• VIV_V4L_DWE_SET_SCALE
Description: Scales the image.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 124 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_SENSOR_G_MODE
This macro definition is identical to the string "sensor.g.mode".
Description: Gets sensor current mode.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_S_MODE
This macro definition is identical to the string "sensor.s.mode".
Description: Sets sensor mode.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 125 / 138
NXP Semiconductors
ISP Using V4L2 Interface
• IF_SENSOR_G_RESW
This macro definition is identical to the string "sensor.g.resw".
Description: Gets the sensor resolution width.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_G_RESH
This macro definition is identical to the string "sensor.g.resh".
Description: Gets the sensor resolution height.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_G_REG
This macro definition is identical to the string "sensor.g.reg".
Description: Gets the sensor register value.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_S_REG
This macro definition is identical to the string "sensor.s.reg".
Description: Sets the sensor register value.
Parameters:
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 126 / 138
NXP Semiconductors
ISP Using V4L2 Interface
— Json::Value &jRequest
— Json::Value &jResponse
• IF_S_FPS
This macro definition is identical to the string "s.fps".
Description: Sets the sensor frame rate.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_LIB_PRELOAD
This macro definition is identical to the string "sensor.lib.preload".
Description: Loads the sensor calibration file.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
N/A - -
• IF_SENSOR_G_SEC
• This macro definition is identical to the string "sensor.g.sec".
Description: Get sensor start exposure (IntegrationTime x Gain).
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_SENSOR_S_SEC
This macro definition is identical to the string "sensor.s.sec".
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 127 / 138
NXP Semiconductors
ISP Using V4L2 Interface
NOTE
Calling this function is only valid before the stream on.
• IF_SENSOR_S_TESTPAT
This macro definition is identical to the string "sensor.s.testpat".
Description: Sets sensor test pattern.
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
N/A - -
• IF_PIPELINE_S_SMP_MODE
This macro definition is identical to the string "pipeline.s.smp.mode".
Description: Reserved for later use.
• IF_PIPELINE_S_DWE_ONOFF
This macro definition is identical to the string "pipeline.s.dwe.onoff".
Description: Enables/disables DEWARP.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 128 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Parameters:
— Json::Value &jRequest
— Json::Value &jResponse
• IF_PIPELINE_S_TESTPAT
This macro definition is identical to the string "pipeline.s.testpat".
Description: Reserved for later use.
• IF_PIPELINE_S_RES_IS_OUT
This macro definition is identical to the string "pipeline.s.res.is.out".
Description: Reserved for later use.
• IF_PIPELINE_S_RES_MP_OUT
This macro definition is identical to the string "pipeline.s.res.mp.out".
Description: Reserved for later use.
• IF_PIPELINE_S_MP_FMT
This macro definition is identical to the string "pipeline.s.mp.fmt".
Description: Reserved for later use.
• IF_PIPELINE_QUERY
This macro definition is identical to the string "pipeline.query".
Description: Reserved for later use.
• IF_PIPELINE_CFG_STATUS
This macro definition is identical to the string "pipeline.cfg.status".
Description: Reserved for later use.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 129 / 138
NXP Semiconductors
ISP Using V4L2 Interface
V4L2 Wrapper
Remote PC
Tuning Tool
Private Private
interface interface
User space
V4L2 sub-deviceX Kernel space
V4L2 Interface
Sensor CSI DW200
V4L2 Kernel Kernel Kernel Kernel
Driver/Buffer ISP Kernel Driver Driver Driver Driver
Management
/dev/videox Manage stream related operations and events, such as enqueue/dequeue buffers and
enqueue/dequeue events
/dev/v4l2-subdevx Manage buffers, and Control camera relevant hardware, such as MIPI/Sensor
/dev/xx Private interface control and dispatch the commands, events, and so on.
V4L2 kernel driver Register the V4L2_device and video_device and implement the operational functions in
the video_device and vb2_queue
ISP kernel driver ISP kernel driver, implements read/write registers, and so on.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 130 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Cdev driver
Hardware
Image
MIPI ISP
Sensor
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 131 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Session1
Session Queue Streamx
Stream1
Event Queue
Buffer Queue
USERPTR user space User space and kernel space share the memory by buffer pointer
MMAP kernel space User space calls mmap to get pointer from kernel space
DMABUF kernel space User space gets the buffers using a file descriptor
/dev/videox /dev/v4I-subdev0
Vivante V4L2
Driver
QBUF DQBUF
NOTE
USERPTR mode is not supported.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 132 / 138
NXP Semiconductors
ISP Using V4L2 Interface
Cam Device
Post Process
Dewarp
Scaler
ISP Support
All resolutions are limited, where the minimum resolution is 176x144 and the maximum resolution is the sensor output resolution
(refer to the sensor specification). The VIDIOC_S_FMT IOCTL which sets the format information must be aligned with width 16
and height 8.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 133 / 138
NXP Semiconductors
ISP Using V4L2 Interface
The image output flow is shown in the figure above. If the Dewarp output is used, the data after the ISP scale down is used as the
input of the Dewarp module. Thus, the Dewarp correction parameters must be calibrated according to the size of the Dewarp input
image. If there is no calibration parameter with the corresponding resolution, the system scales the calibration parameter of the
current resolution according to the existing calibration parameters. In this case, the converted calibration data is not as accurate
as the calibration data. Therefore, it is recommended to calibrate all resolutions used and add the resulting calibration data to the
Dewarp configuration file.
{
"dewarpConfigArray" :[
{
"source_image":{
"width" : 1920,
"height" : 1080
},
"scale": {
"roix" : 0,
"roiy" : 0,
"factor" : 1.0
},
"split": {
"horizon_line" : 540,
"vertical_line_up" : 960,
"vertical_line_down": 960
},
"bypass" : true,
"hflip" : false,
"vflip" : false,
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 134 / 138
NXP Semiconductors
ISP Using V4L2 Interface
"camera_matrix" : [6.5516074404594690e+002,0.0,
9.6420599053623062e+002,
0.0,6.5552406676868952e+002,5.3203601317192908e+002,0.0,0.0,1.0],
"distortion_coeff": [-2.2095698671518085e-002,3.8543889520066955e-003,-
5.9060355970132873e-003,1.9007362178503509e-003,0.0,0.0,0.0,0.0],
"perspective" : [1.0, 0, 0, 0, 1, 0, 0, 0, 1]
}
]
2. Capture YUV image. For example, video test is used to capture 720p YUYV images:
3. Use an online YUV to JPEG image conversion tool to convert the YUV image to a JPEG image.
4. Use the JPEG image and the Dewarp Calibration Tool to get the dewarp calibration data. Refer to the document,
Vivante.DW.Calibration.Tool for more details.
{
"dewarpConfigArray" :[
{
"source_image":{
"width" : 1920,
"height" : 1080
},
"scale": {
"roix" : 0,
"roiy" : 0,
"factor" : 1.0
},
"split": {
"horizon_line" : 540,
"vertical_line_up" : 960,
"vertical_line_down": 960
},
"bypass" : false,
"hflip" : false,
"vflip" : false,
"camera_matrix" : [6.5516074404594690e+002,0.0,
9.6420599053623062e+002,
0.0,6.5552406676868952e+002,5.3203601317192908e+002,0.0,0.0,1.0],
"distortion_coeff":
[-2.2095698671518085e-002,3.8543889520066955e-003,-
5.9060355970132873e-003,1.9007362178503509e-003,0.0,0.0,0.0,0.0],
"perspective" : [1.0, 0, 0, 0, 1, 0, 0, 0, 1]
}
{
"source_image":{
"width" : 1280,
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 135 / 138
NXP Semiconductors
ISP Using V4L2 Interface
"height" : 720
},
"scale": {
"roix" : 0,
"roiy" : 0,
"factor" : 1.0
},
"split": {
"horizon_line" : 540,
"vertical_line_up" : 960,
"vertical_line_down": 960
},
"bypass" : false,
"hflip" : false,
"vflip" : false,
}
]
}
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 136 / 138
NXP Semiconductors
Chapter 4
Revision History
This table provides the revision history.
LF5.10.52_2.1.0 10/2021 Major content update for the Linux LF5.10.52_2.1.0 release.
i.MX 8M Plus Camera and Display Guide, Rev. LF5.10.72_2.2.0, 17 December 2021
User Guide 137 / 138
How To Reach Us Limited warranty and liability — Information in this document is provided solely to enable system and software implementers to use NXP
products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits based on
Home Page:
the information in this document. NXP reserves the right to make changes without further notice to any products herein.
nxp.com
NXP makes no warranty, representation, or guarantee regarding the suitability of its products for any particular purpose, nor does
Web Support: NXP assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability,
nxp.com/support including without limitation consequential or incidental damages. “Typical” parameters that may be provided in NXP data sheets and/or
specifications can and do vary in different applications, and actual performance may vary over time. All operating parameters, including
“typicals,” must be validated for each customer application by customer's technical experts. NXP does not convey any license under
its patent rights nor the rights of others. NXP sells products pursuant to standard terms and conditions of sale, which can be found at
the following address: nxp.com/SalesTermsandConditions.
Right to make changes - NXP Semiconductors reserves the right to make changes to information published in this document, including
without limitation specifications and product descriptions, at any time and without notice. This document supersedes and replaces all
information supplied prior to the publication hereof.
Security — Customer understands that all NXP products may be subject to unidentified or documented vulnerabilities. Customer
is responsible for the design and operation of its applications and products throughout their lifecycles to reduce the effect of these
vulnerabilities on customer’s applications and products. Customer’s responsibility also extends to other open and/or proprietary
technologies supported by NXP products for use in customer’s applications. NXP accepts no liability for any vulnerability. Customer
should regularly check security updates from NXP and follow up appropriately. Customer shall select products with security features
that best meet rules, regulations, and standards of the intended application and make the ultimate design decisions regarding its
products and is solely responsible for compliance with all legal, regulatory, and security related requirements concerning its products,
regardless of any information or support that may be provided by NXP. NXP has a Product Security Incident Response Team
(PSIRT) (reachable at [email protected]) that manages the investigation, reporting, and solution release to security vulnerabilities of
NXP products.
NXP, the NXP logo, NXP SECURE CONNECTIONS FOR A SMARTER WORLD, COOLFLUX,EMBRACE, GREENCHIP, HITAG,
ICODE, JCOP, LIFE, VIBES, MIFARE, MIFARE CLASSIC, MIFARE DESFire, MIFARE PLUS, MIFARE FLEX, MANTIS, MIFARE
ULTRALIGHT, MIFARE4MOBILE, MIGLO, NTAG, ROADLINK, SMARTLX, SMARTMX, STARPLUG, TOPFET, TRENCHMOS,
UCODE, Freescale, the Freescale logo, AltiVec, CodeWarrior, ColdFire, ColdFire+, the Energy Efficient Solutions logo, Kinetis,
Layerscape, MagniV, mobileGT, PEG, PowerQUICC, Processor Expert, QorIQ, QorIQ Qonverge, SafeAssure, the SafeAssure logo,
StarCore, Symphony, VortiQa, Vybrid, Airfast, BeeKit, BeeStack, CoreNet, Flexis, MXC, Platform in a Package, QUICC Engine, Tower,
TurboLink, EdgeScale, EdgeLock, eIQ, and Immersive3D are trademarks of NXP B.V. All other product or service names are the
property of their respective owners. AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight,
Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb,
TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, µVision, Versatile are trademarks or registered trademarks of Arm
Limited (or its subsidiaries) in the US and/or elsewhere. The related technology may be protected by any or all of patents, copyrights,
designs and trade secrets. All rights reserved. Oracle and Java are registered trademarks of Oracle and/or its affiliates. The Power
Architecture and Power.org word marks and the Power and Power.org logos and related marks are trademarks and service marks
licensed by Power.org. M, M Mobileye and other Mobileye trademarks or logos appearing herein are trademarks of Mobileye Vision
Technologies Ltd. in the United States, the EU and/or other jurisdictions.