msm: camera: sensor: Infrastructure to support OIS FW download V2
Add 16 bit data read/write. Add new FW information cmd parser. Add new FW download v2. Force CCI burst/ sequential write to be queued into Q0. CRs-Fixed: 3322287 External Impact: No. Change-Id: I8a1ea42b01a3748f466a9bc6083a799b939e6d02 Signed-off-by: Yulei Yao <quic_yuleiy@quicinc.com>
This commit is contained in:

committato da
Camera Software Integration

parent
2c9200df57
commit
8202146af3
@@ -14,6 +14,7 @@
|
||||
#define CAM_SENSOR_PROBE_CMD (CAM_COMMON_OPCODE_MAX + 1)
|
||||
#define CAM_FLASH_MAX_LED_TRIGGERS 2
|
||||
#define MAX_OIS_NAME_SIZE 32
|
||||
#define MAX_OIS_FW_COUNT 2
|
||||
#define CAM_CSIPHY_SECURE_MODE_ENABLED 1
|
||||
#define CAM_SENSOR_NAME_MAX_SIZE 32
|
||||
|
||||
@@ -57,6 +58,7 @@ enum camera_sensor_cmd_type {
|
||||
CAMERA_SENSOR_FLASH_CMD_TYPE_WIDGET,
|
||||
CAMERA_SENSOR_CMD_TYPE_RD_DATA,
|
||||
CAMERA_SENSOR_FLASH_CMD_TYPE_INIT_FIRE,
|
||||
CAMERA_SENSOR_OIS_CMD_TYPE_FW_INFO,
|
||||
CAMERA_SENSOR_CMD_TYPE_MAX,
|
||||
};
|
||||
|
||||
@@ -87,6 +89,8 @@ enum camera_sensor_i2c_op_code {
|
||||
CAMERA_SENSOR_I2C_OP_CONT_WR_BRST_VERF,
|
||||
CAMERA_SENSOR_I2C_OP_CONT_WR_SEQN,
|
||||
CAMERA_SENSOR_I2C_OP_CONT_WR_SEQN_VERF,
|
||||
CAMERA_SENSOR_I2C_OP_RNDM_RD,
|
||||
CAMERA_SENSOR_I2C_OP_CONT_RD,
|
||||
CAMERA_SENSOR_I2C_OP_MAX,
|
||||
};
|
||||
|
||||
@@ -120,6 +124,11 @@ enum cam_sensor_packet_opcodes {
|
||||
CAM_SENSOR_PACKET_OPCODE_SENSOR_NOP = 127,
|
||||
};
|
||||
|
||||
enum cam_endianness_type {
|
||||
CAM_ENDIANNESS_BIG,
|
||||
CAM_ENDIANNESS_LITTLE,
|
||||
};
|
||||
|
||||
enum tpg_command_type_t {
|
||||
TPG_CMD_TYPE_INVALID = 0,
|
||||
TPG_CMD_TYPE_GLOBAL_CONFIG,
|
||||
@@ -394,6 +403,68 @@ struct cam_cmd_ois_info {
|
||||
struct cam_ois_opcode opcode;
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/**
|
||||
* struct cam_cmd_ois_fw_param - Contains OIS firmware param
|
||||
*
|
||||
* NOTE: if this struct is updated,
|
||||
* please also update version in struct cam_cmd_ois_fw_info
|
||||
*
|
||||
* @fw_name : firmware file name
|
||||
* @fw_start_pos : data start position in file
|
||||
* @fw_size : firmware size
|
||||
* @fw_len_per_write: data length per write in bytes
|
||||
* @fw_addr_type : addr type
|
||||
* @fw_data_type : data type
|
||||
* @fw_operation : type of operation
|
||||
* @reserved : reserved for 32-bit alignment
|
||||
* @fw_delayUs : delay in cci write
|
||||
* @fw_reg_addr : start register addr to write
|
||||
* @fw_init_size : size of fw download init settings
|
||||
* @fw_finalize_size: size of fw download finalize settings
|
||||
*/
|
||||
struct cam_cmd_ois_fw_param {
|
||||
char fw_name[MAX_OIS_NAME_SIZE];
|
||||
__u32 fw_start_pos;
|
||||
__u32 fw_size;
|
||||
__u32 fw_len_per_write;
|
||||
__u8 fw_addr_type;
|
||||
__u8 fw_data_type;
|
||||
__u8 fw_operation;
|
||||
__u8 reserved;
|
||||
__u32 fw_delayUs;
|
||||
__u32 fw_reg_addr;
|
||||
__u32 fw_init_size;
|
||||
__u32 fw_finalize_size;
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* struct cam_cmd_ois_fw_info - Contains OIS firmware info
|
||||
*
|
||||
* @version : version info
|
||||
* NOTE: if struct cam_cmd_ois_fw_param is updated,
|
||||
* version here needs to be updated too.
|
||||
* @reserved : reserved
|
||||
* @cmd_type : Explains type of command
|
||||
* @fw_count : firmware count
|
||||
* @endianness : firmware data's endianness
|
||||
* @fw_param : includes firmware parameters
|
||||
* @num_valid_params: Number of valid params
|
||||
* @param_mask : Mask to indicate fields in params
|
||||
* @params : Additional Params
|
||||
*/
|
||||
struct cam_cmd_ois_fw_info {
|
||||
__u32 version;
|
||||
__u8 reserved;
|
||||
__u8 cmd_type;
|
||||
__u8 fw_count;
|
||||
__u8 endianness;
|
||||
struct cam_cmd_ois_fw_param fw_param[MAX_OIS_FW_COUNT];
|
||||
__u32 num_valid_params;
|
||||
__u32 param_mask;
|
||||
__u32 params[4];
|
||||
} __attribute__((packed));
|
||||
|
||||
/**
|
||||
* struct cam_cmd_probe - Contains sensor slave info
|
||||
*
|
||||
|
Fai riferimento in un nuovo problema
Block a user