TI J721E Imaging User Guide
iss_sensors.h File Reference

Go to the source code of this file.

Data Structures

struct  IssSensor_LineInterleavedExpFrmInfo
 For Line Interleaved WDR mode, this structure is used for specifying position of each exposure frame. More...
 
struct  I2cParams
 Register address and value pair, with delay. More...
 
struct  IssSensor_ExposureParams
 AutoExposure results data structure. More...
 
struct  IssSensor_WhiteBalanceParams
 AutoWhiteBalance results data structure. More...
 
struct  IssSensor_DccParams
 Structure for setting DCC params. More...
 
struct  IssSensor_ModuleParams
 Structure for setting camera moduel information. More...
 
struct  IssSensor_Info
 Sensor Information structure. More...
 
struct  IssSensor_CreateParams
 Create Time parameters, ISS sensor layer uses these parameters and configures board module and sensor. More...
 
struct  IssCapture_CmplxIoLaneCfg
 CSI-2 COmplex I/O Lane Configuration. More...
 
struct  IssSensorIntfParams
 Structure used for describing sensor interfacing. More...
 
struct  IssSensorConfig
 Structure used for specifying register configurations of sensor, serializer and deserializer. More...
 
struct  IssAeRange
 Min/Max Range, used in AWB calibration data. More...
 
struct  IssAeDynamicParams
 Sensor Specific Auto Exposure Dynamic Parameters. More...
 
struct  IssAwbDynamicParams
 Sensor Specific Auto WhiteBalance Dynamic Parameters. More...
 
struct  IssSensorFxns
 Structure containins sensor information, used for registering it to the sensor framework. More...
 
struct  IssSensors_Handle
 Handle to the sensor driver. Includes all the information about the sensor. More...
 

Macros

#define SENSOR_I2C_TIMEOUT   (5000U)
 RPC Commands application can send to sensor driver. More...
 
#define IMAGE_SENSOR_REMOTE_SERVICE_NAME   "com.ti.image_sensor"
 
#define CMD_PARAM_SIZE   384
 
#define ISS_SENSORS_MAX_CHANNEL   (8U)
 
#define ISS_SENSORS_MAX_NAME   (32U)
 
#define SENSOR_SONY_IMX390_UB953_D3   "IMX390-UB953_D3"
 
#define SENSOR_SONY_IMX728_UB971_SONY   "IMX728-UB971_SONY"
 
#define SENSOR_ONSEMI_AR0233_UB953_MARS   "AR0233-UB953_MARS"
 
#define SENSOR_ONSEMI_AR0820_UB953_LI   "AR0820-UB953_LI"
 
#define UB9XX_RAW_TESTPAT   "UB9xxx_RAW12_TESTPATTERN"
 
#define UB96X_TESTPATTERN_UYVY   "UB96x_UYVY_TESTPATTERN"
 
#define GW_AR0233_UYVY   "GW_AR0233_UYVY"
 
#define SENSOR_OV2312_UB953_LI   "OV2312-UB953_LI"
 
#define SENSOR_SONY_IMX390_UB953_DISCOVERY_NARROW   "IMX390-UB953-DISCOVERY-NARROW"
 
#define SENSOR_SONY_IMX390_UB953_DISCOVERY_MID   "IMX390-UB953-DISCOVERY-MID"
 
#define SENSOR_SONY_IMX390_UB953_DISCOVERY_WIDE   "IMX390-UB953-DISCOVERY-WIDE"
 
#define ISS_SENSORS_MAX_SENSOR_INSTANCES   (12U)
 
#define ISS_SENSORS_MAX_SUPPORTED_SENSOR   ISS_SENSORS_MAX_SENSOR_INSTANCES
 
#define ISS_SENSORS_MAX_SENSOR_HANDLES   (12U)
 
#define DEFAULT_TARGET_BRIGHTNESS_MIN   40
 
#define DEFAULT_TARGET_BRIGHTNESS_MAX   50
 
#define DEFAULT_TARGET_BRIGHTNESS   45
 
#define DEFAULT_TARGET_THRESHOLD   5
 
#define DEFAULT_EXPOSURE_TIME   1
 
#define DEFAULT_ENABLE_BLC   0
 
#define TCA6408_I2C_ADDR_1   0x20
 
#define TCA6408_I2C_ADDR_2   0x21
 
#define TCA6408_CONFIG_REG   0x03
 
#define DES_PORT_SEL_0   0x01
 
#define DES_PORT_SEL_1   0x12
 
#define DES_PORT_SEL_2   0x24
 
#define DES_PORT_SEL_3   0x38
 
#define MAX_AE_DYN_PARAMS   (10U)
 Maximum number of dynamic parameter configuration supported for Auto Exposure Algorithm tuning. More...
 
#define IssSensor_GetSensorHandle   IssSensor_getSensorHandleFromName
 

Typedefs

typedef int32_t(* IssSensor_ProbeFxn) (uint32_t chId, void *pSensorHdl)
 Callback for sensor probe. Detection of sensor HW using chip ID register. More...
 
typedef int32_t(* IssSensor_ConfigFxn) (uint32_t chId, void *pSensorHdl, uint32_t sensor_features_requested)
 Callback for sensor & SerDes configuration. More...
 
typedef int32_t(* IssSensor_StreamOnFxn) (uint32_t chId, void *pSensorHdl)
 Callback for starting streaming. More...
 
typedef int32_t(* IssSensor_StreamOffFxn) (uint32_t chId, void *pSensorHdl)
 Callback for stopping streaming. More...
 
typedef int32_t(* IssSensor_PowerOnFxn) (uint32_t chId, void *pSensorHdl)
 Callback for powering ON the sensor and/or configuring the deserialser so that the sensor is visible to the SoC. More...
 
typedef int32_t(* IssSensor_PowerOffFxn) (uint32_t chId, void *pSensorHdl)
 Callback for powering OFF the sensor, if applicable. More...
 
typedef int32_t(* IssSensor_SetAeParamsFxn) (void *pSensorHdl, uint32_t chId, IssSensor_ExposureParams *pExpPrms)
 Callback for setting sensor exposure and gain. More...
 
typedef int32_t(* IssSensor_GetDccParamsFxn) (uint32_t chId, void *pSensorHdl, IssSensor_DccParams *pDccPrms)
 Callback for getting DCC parameters. Reserved for future use. More...
 
typedef int32_t(* IssSensor_GetExpParamsFxn) (uint32_t chId, void *pSensorHdl, IssSensor_ExposureParams *pExpPrms)
 Callback for getting current exposure settings. Reserved for future use. More...
 
typedef void(* IssSensor_InitAewbConfigFxn) (uint32_t chId, void *pSensorHdl)
 Callback for setting AEWB specific sensor settings, if applicable. Reserved for future use. More...
 
typedef void(* IssSensor_GetIspConfigFxn) (uint32_t chId, void *pSensorHdl)
 Callback for getting ISP settings specific to the sensor, if applicable. Reserved for future use. More...
 
typedef void(* IssSensor_DeinitFxn) (uint32_t chId, void *pSensorHdl)
 Callback for de-initializing the sensor, if applicable. Reserved for future use. More...
 
typedef int32_t(* I2cRegReadWriteFxn) (uint32_t chId, void *pSensorHdl, uint32_t readWriteFlag, I2cParams *pReg)
 Callback for reading/writing sensor registers from the application. Reserved for future use. More...
 
typedef int32_t(* IssSensor_GetExpPrgFxn) (uint32_t chId, void *pSensorHdl, IssAeDynamicParams *p_ae_dynPrms)
 Callback for getting sensor's exposure constraints. Needed for AutoExposure tuning. More...
 
typedef int32_t(* IssSensor_GetWbConfigFxn) (uint32_t chId, void *pSensorHdl, IssAwbDynamicParams *p_awb_dynPrms)
 Callback for getting sensor's WB constraints. Needed for AutoWhiteBalance tuning. More...
 
typedef int32_t(* IssSensor_SetAwbParamsFxn) (void *pSensorHdl, uint32_t chId, IssSensor_WhiteBalanceParams *pWbPrms)
 Callback for setting WB gains in the sensor. More...
 
typedef int32_t(* IssSensor_GetAwbParamsFxn) (uint32_t chId, void *pSensorHdl, IssSensor_WhiteBalanceParams *pWbPrms)
 Callback for getting WB gains in the sensor. More...
 

Enumerations

enum  IMAGE_SENSOR_COMMAND {
  IM_SENSOR_CMD_ENUMERATE = 0, IM_SENSOR_CMD_QUERY, IM_SENSOR_CMD_PWRON, IM_SENSOR_CMD_CONFIG,
  IM_SENSOR_CMD_STREAM_ON, IM_SENSOR_CMD_STREAM_OFF, IM_SENSOR_CMD_PWROFF, IM_SENSOR_CMD_CTL,
  IM_SENSOR_CMD_DEBUG, IM_SENSOR_CMD_DETECT, IM_SENSOR_CMD_D3_USER_I2C, IM_SENSOR_CMD_DETECT_PERSONALITY_BOARD,
  IM_SENSOR_CMD_CTL_MAX, IM_SENSOR_CMD_CTL_FORCE32BITS = 0x7FFFFFFF
}
 
enum  IMAGE_SERDES_FPD_LINK { IMAGE_SERDES_FPD_LINK_3 = 0, IMAGE_SERDES_FPD_LINK_4, IMAGE_SERDES_FPD_LINK_MAX, IMAGE_SERDES_FPD_LINK_FORCE32BITS = 0x7FFFFFFF }
 Enumeration for FPD-Link type. More...
 
enum  IMAGE_SENSOR_CTRLCMD {
  IMAGE_SENSOR_CTRLCMD_GETEXPPRG = 0, IMAGE_SENSOR_CTRLCMD_GETWBCFG, IMAGE_SENSOR_CTRLCMD_INIT_AEWB_CFG, IMAGE_SENSOR_CTRLCMD_SETEXPGAIN,
  IMAGE_SENSOR_CTRLCMD_GETEXPGAIN, IMAGE_SENSOR_CTRLCMD_SETWBGAIN, IMAGE_SENSOR_CTRLCMD_GETWBGAIN, IMAGE_SENSOR_CTRLCMD_DEBUG,
  IMAGE_SENSOR_CTRLCMD_READ_SENSOR_REG, IMAGE_SENSOR_CTRLCMD_WRITE_SENSOR_REG, IMAGE_SENSOR_CTRLCMD_READ_SENSOR_REG_IMMEDIATE_I2C, IMAGE_SENSOR_CTRLCMD_WRITE_SENSOR_REG_IMMEDIATE_I2C,
  IMAGE_SENSOR_CTRLCMD_MAX, IMAGE_SENSOR_CTRLCMD_FORCE32BITS = 0x7FFFFFFF
}
 IOCTLS supported as part of IM_SENSOR_CMD_CTL command. More...
 
enum  IssSensor_Features {
  ISS_SENSOR_FEATURE_HFLIP = 0x1, ISS_SENSOR_FEATURE_VFLIP = 0x2, ISS_SENSOR_FEATURE_EMBEDDED_DATA = 0x4, ISS_SENSOR_FEATURE_MANUAL_EXPOSURE = 0x8,
  ISS_SENSOR_FEATURE_MANUAL_GAIN = 0x10, ISS_SENSOR_FEATURE_LINEAR_MODE = 0x20, ISS_SENSOR_FEATURE_COMB_COMP_WDR_MODE = 0x40, ISS_SENSOR_FEATURE_TWO_FRAME_WDR_MODE = 0x80,
  ISS_SENSOR_FEATURE_DCC_SUPPORTED = 0x100, ISS_SENSOR_FEATURE_CFG_UC1 = 0x200, ISS_SENSOR_FEATURE_CFG_UC2 = 0x400, ISS_SENSOR_MAX_FEATURES = 0x800,
  ISS_SENSOR_FEATURE_FORCE32BITS = 0x7FFFFFFF
}
 Enum for Sensor Features. More...
 
enum  IssSensor_Exposures {
  ISS_SENSOR_EXPOSURE_LONG, ISS_SENSOR_EXPOSURE_SHORT, ISS_SENSOR_EXPOSURE_VSHORT, ISS_SENSOR_MAX_EXPOSURE,
  ISS_SENSOR_EXPOSURE_FORCE32BITS = 0x7FFFFFFF
}
 Enum for different sensor exposures in WDR sensor. More...
 
enum  AlgItt_IssAewbMode {
  ALGORITHMS_ISS_AEWB_MODE_AWB = 0, ALGORITHMS_ISS_AEWB_MODE_AE = 1, ALGORITHMS_ISS_AEWB_MODE_AEWB = 2, ALGORITHMS_ISS_AEWB_MODE_NONE = 3,
  ALGORITHMS_ISS_AEWB_MODE_MAX = 4, ALGORITHMS_ISS_AEWB_MODE_FORCE32BITS = 0x7FFFFFFF
}
 AEWB Algorithm Mode. More...
 
enum  AlgItt_IssAeMode { ALGORITHMS_ISS_AE_AUTO = 0, ALGORITHMS_ISS_AE_MANUAL = 1, ALGORITHMS_ISS_AE_DISABLED = 2 }
 AE Algorithm SubModes. More...
 
enum  AlgItt_IssAwbMode { ALGORITHMS_ISS_AWB_AUTO = 0, ALGORITHMS_ISS_AWB_MANUAL = 1, ALGORITHMS_ISS_AWB_DISABLED = 2 }
 AWB Algorithm SubModes. More...
 

Functions

int32_t IssSensor_Init ()
 Function to initialize sensor driver framework. Registers with remote service. Includes init function of supported sensor drivers. This step is critical for registring a sensor driver with the framework. More...
 
int32_t IssSensor_DeInit ()
 Function to de-initialize sensor driver framework. Unregisters remote service. More...
 
int32_t IssSensor_Register (IssSensors_Handle *pSensorPrms)
 Function to register a sensor driver with the driver framework. More...
 
int32_t IssSensor_GetSensorInfo (char *name, IssSensor_CreateParams *pCreatePrms)
 Function to get Sensor information for given sensor It searches in the table of registered sensors, it returns information of first sensor, whose name matches with the given sensor. More...
 
IssSensors_HandleIssSensor_getSensorHandleFromName (char *name)
 Function to get sensor handle from name. More...
 
IssSensors_HandleIssSensor_GetSensorHandle (char *name)
 Function to get the sensor handle for the given sensor. This is used by the DCC Network Handler to Read/Write sensor register. Returns sensor handle only if it is opened. More...
 
void * IssSensor_Create (char *name)
 Creates the sensor, based on the create params, it searches for the given sensor in the registered sensors, configures the board module if sensor supports board module and creates sensor fvid2 driver. It also configures sensor in the given WDR mode and also sets the default output resolution in the sensor. More...
 
int32_t IssSensor_Control (void *handle, uint32_t cmd, void *cmdArgs, void *cmdRetArgs)
 Used for sending control commands, this layer supports all configuration using control commants. For the list of supported control command, see defines section of this file. More...
 
int32_t IssSensor_Start (void *handle, uint32_t chId)
 Used Starting the sensor, which is already opened using Create function. Must be called after Create function. More...
 
int32_t IssSensor_Stop (void *handle, uint32_t chId)
 Used stopping the sensor, which is alraedy opened using Create function. Must be called after Create function. More...
 
int32_t IssSensor_Delete (void *handle)
 Used for deleting the sensor, which is already opened using Create function. Internally it deletes sensor's fvid2 driver. After this call, handle is not valid. More...
 
int32_t IssSensor_cfgDesScript (I2cParams *script, int8_t ub960InstanceId)
 Function to configure UB960 deserializer. More...
 
int32_t ub953_cfgScript (uint8_t i2cInstId, uint8_t i2cAddr, I2cParams *script)
 Function to configure UB953 serializer. More...
 
int32_t IssSensor_PowerOn (void *handle, uint32_t chMask)
 Function to get sensor handle from name. More...
 
int32_t IssSensor_PowerOff (void *handle, uint32_t chId)
 Function to power OFF the sensor. More...
 
int32_t IssSensor_Config (void *handle, uint32_t chId, uint32_t feat)
 Function to configure the sensor. More...
 
int32_t IssSensor_SetAeParams (void *handle, uint32_t chId, IssSensor_ExposureParams *pExpPrms)
 Function to send Exposure parameters to the sensor. More...
 
int32_t IssSensor_SetAwbParams (void *handle, uint32_t chId, IssSensor_WhiteBalanceParams *pWbPrms)
 Function to send WhiteBalance gains to the sensor. More...
 
int32_t enableUB960Broadcast (int8_t ub960InstanceId)
 
int32_t disableUB960Broadcast (int8_t ub960InstanceId)
 
int32_t UB960_SelectPort (uint32_t chId)
 
int32_t UB960_SetAlias (uint32_t chId, uint8_t slot, uint8_t phy_i2c_addr_7bit, uint8_t alias_i2c_addr_7bit)
 
int32_t UB960_SetSerAlias (uint32_t chId, uint8_t alias_i2c_addr_7bit)
 
int32_t UB960_SetSensorAlias (uint32_t chId, uint8_t sensor_phy_i2c_addr_7bit, uint8_t ser_alias_i2c_addr_7bit)
 
int32_t enableUB960Streaming (uint32_t chId)
 Function to enable streaming from UB960 by setting register 0x33 to 0x3 for the given camera channel. More...
 
int32_t disableUB960Streaming (uint32_t chId)
 Function to enable streaming from UB960 by setting register 0x33 to 0x2 for the given camera channel. More...
 
int8_t getDeserializerInstIdFromChId (uint32_t chId)
 Function to map UB960 Instance to channel number On Fusion board the mapping is as follows Camera Channel 0 - UB960 Instance 0 Camera Channel 1 - UB960 Instance 0 Camera Channel 2 - UB960 Instance 0 Camera Channel 3 - UB960 Instance 0 Camera Channel 4 - UB960 Instance 1 Camera Channel 5 - UB960 Instance 1 Camera Channel 6 - UB960 Instance 1 Camera Channel 7 - UB960 Instance 1. More...
 
int32_t powerOffDeserializers (void)
 
int32_t IssSensor_GetSensorInfoFromDccId (uint32_t dccId, IssSensor_Info *pInfo)
 Function to get Sensor information for sensor whose DCC ID is passed. It searches in the table of registered sensors, it returns information of first sensor, whose dcc id matches with the given id. Typically used by the DCC Network handler to get the sensor information. More...
 

Macro Definition Documentation

◆ IMAGE_SENSOR_REMOTE_SERVICE_NAME

#define IMAGE_SENSOR_REMOTE_SERVICE_NAME   "com.ti.image_sensor"

◆ CMD_PARAM_SIZE

#define CMD_PARAM_SIZE   384

◆ ISS_SENSORS_MAX_CHANNEL

#define ISS_SENSORS_MAX_CHANNEL   (8U)

◆ ISS_SENSORS_MAX_NAME

#define ISS_SENSORS_MAX_NAME   (32U)

◆ SENSOR_SONY_IMX390_UB953_D3

#define SENSOR_SONY_IMX390_UB953_D3   "IMX390-UB953_D3"

◆ SENSOR_SONY_IMX728_UB971_SONY

#define SENSOR_SONY_IMX728_UB971_SONY   "IMX728-UB971_SONY"

◆ SENSOR_ONSEMI_AR0233_UB953_MARS

#define SENSOR_ONSEMI_AR0233_UB953_MARS   "AR0233-UB953_MARS"

◆ SENSOR_ONSEMI_AR0820_UB953_LI

#define SENSOR_ONSEMI_AR0820_UB953_LI   "AR0820-UB953_LI"

◆ UB9XX_RAW_TESTPAT

#define UB9XX_RAW_TESTPAT   "UB9xxx_RAW12_TESTPATTERN"

◆ UB96X_TESTPATTERN_UYVY

#define UB96X_TESTPATTERN_UYVY   "UB96x_UYVY_TESTPATTERN"

◆ GW_AR0233_UYVY

#define GW_AR0233_UYVY   "GW_AR0233_UYVY"

◆ SENSOR_OV2312_UB953_LI

#define SENSOR_OV2312_UB953_LI   "OV2312-UB953_LI"

◆ SENSOR_SONY_IMX390_UB953_DISCOVERY_NARROW

#define SENSOR_SONY_IMX390_UB953_DISCOVERY_NARROW   "IMX390-UB953-DISCOVERY-NARROW"

◆ SENSOR_SONY_IMX390_UB953_DISCOVERY_MID

#define SENSOR_SONY_IMX390_UB953_DISCOVERY_MID   "IMX390-UB953-DISCOVERY-MID"

◆ SENSOR_SONY_IMX390_UB953_DISCOVERY_WIDE

#define SENSOR_SONY_IMX390_UB953_DISCOVERY_WIDE   "IMX390-UB953-DISCOVERY-WIDE"

◆ ISS_SENSORS_MAX_SENSOR_INSTANCES

#define ISS_SENSORS_MAX_SENSOR_INSTANCES   (12U)

◆ ISS_SENSORS_MAX_SUPPORTED_SENSOR

#define ISS_SENSORS_MAX_SUPPORTED_SENSOR   ISS_SENSORS_MAX_SENSOR_INSTANCES

◆ ISS_SENSORS_MAX_SENSOR_HANDLES

#define ISS_SENSORS_MAX_SENSOR_HANDLES   (12U)

◆ DEFAULT_TARGET_BRIGHTNESS_MIN

#define DEFAULT_TARGET_BRIGHTNESS_MIN   40

◆ DEFAULT_TARGET_BRIGHTNESS_MAX

#define DEFAULT_TARGET_BRIGHTNESS_MAX   50

◆ DEFAULT_TARGET_BRIGHTNESS

#define DEFAULT_TARGET_BRIGHTNESS   45

◆ DEFAULT_TARGET_THRESHOLD

#define DEFAULT_TARGET_THRESHOLD   5

◆ DEFAULT_EXPOSURE_TIME

#define DEFAULT_EXPOSURE_TIME   1

◆ DEFAULT_ENABLE_BLC

#define DEFAULT_ENABLE_BLC   0

◆ TCA6408_I2C_ADDR_1

#define TCA6408_I2C_ADDR_1   0x20

◆ TCA6408_I2C_ADDR_2

#define TCA6408_I2C_ADDR_2   0x21

◆ TCA6408_CONFIG_REG

#define TCA6408_CONFIG_REG   0x03

◆ DES_PORT_SEL_0

#define DES_PORT_SEL_0   0x01

◆ DES_PORT_SEL_1

#define DES_PORT_SEL_1   0x12

◆ DES_PORT_SEL_2

#define DES_PORT_SEL_2   0x24

◆ DES_PORT_SEL_3

#define DES_PORT_SEL_3   0x38

◆ IssSensor_GetSensorHandle

#define IssSensor_GetSensorHandle   IssSensor_getSensorHandleFromName

Enumeration Type Documentation

◆ IMAGE_SENSOR_COMMAND

Enumerator
IM_SENSOR_CMD_ENUMERATE 
IM_SENSOR_CMD_QUERY 
IM_SENSOR_CMD_PWRON 
IM_SENSOR_CMD_CONFIG 
IM_SENSOR_CMD_STREAM_ON 
IM_SENSOR_CMD_STREAM_OFF 
IM_SENSOR_CMD_PWROFF 
IM_SENSOR_CMD_CTL 
IM_SENSOR_CMD_DEBUG 
IM_SENSOR_CMD_DETECT 
IM_SENSOR_CMD_D3_USER_I2C 
IM_SENSOR_CMD_DETECT_PERSONALITY_BOARD 
IM_SENSOR_CMD_CTL_MAX 
IM_SENSOR_CMD_CTL_FORCE32BITS 

Function Documentation

◆ enableUB960Broadcast()

int32_t enableUB960Broadcast ( int8_t  ub960InstanceId)

◆ disableUB960Broadcast()

int32_t disableUB960Broadcast ( int8_t  ub960InstanceId)

◆ UB960_SelectPort()

int32_t UB960_SelectPort ( uint32_t  chId)

◆ UB960_SetAlias()

int32_t UB960_SetAlias ( uint32_t  chId,
uint8_t  slot,
uint8_t  phy_i2c_addr_7bit,
uint8_t  alias_i2c_addr_7bit 
)

◆ UB960_SetSerAlias()

int32_t UB960_SetSerAlias ( uint32_t  chId,
uint8_t  alias_i2c_addr_7bit 
)

◆ UB960_SetSensorAlias()

int32_t UB960_SetSensorAlias ( uint32_t  chId,
uint8_t  sensor_phy_i2c_addr_7bit,
uint8_t  ser_alias_i2c_addr_7bit 
)

◆ powerOffDeserializers()

int32_t powerOffDeserializers ( void  )