msm_cam_sensor.h revision b8950166b8e6eb29e0711d2f6d92cad4096a5b36
1537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifndef __LINUX_MSM_CAM_SENSOR_H 2537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define __LINUX_MSM_CAM_SENSOR_H 3537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 4537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifdef MSM_CAMERA_BIONIC 5537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <sys/types.h> 6537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif 7537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/types.h> 8537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/v4l2-mediabus.h> 9537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/i2c.h> 10537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 11537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define I2C_SEQ_REG_SETTING_MAX 5 12537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define I2C_SEQ_REG_DATA_MAX 20 13537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_CID 16 14537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 15537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_8HZ 8000000 16537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_16HZ 16000000 17537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_24HZ 24000000 18537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 19537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define GPIO_OUT_LOW (0 << 1) 20537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define GPIO_OUT_HIGH (1 << 1) 21537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 22537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_EMBED_DATA 0x12 23537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RESERVED_DATA_0 0x13 24537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_YUV422_8 0x1E 25537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW8 0x2A 26537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW10 0x2B 27537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW12 0x2C 28537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 29537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_6BIT 0 30537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_8BIT 1 31537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_10BIT 2 32537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_DPCM_10_8_10 5 33537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 34537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_SENSOR_NAME 32 35537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 36537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACT_MOD_NAME_SIZE 32 37537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACT_NAME_SIZE 32 38537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define NUM_ACTUATOR_DIR 2 39537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_SCENARIO 8 40537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_REGION 5 41537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_INIT_SET 12 42537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_REG_TBL_SIZE 8 43537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 44537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MOVE_NEAR 0 45537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MOVE_FAR 1 46537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 47537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_EEPROM_NAME 32 48537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 49537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_i2c_reg_addr_type { 50537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_BYTE_ADDR = 1, 51537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_WORD_ADDR, 52537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_3B_ADDR, 53537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 54537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 55537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_i2c_data_type { 56537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_BYTE_DATA = 1, 57537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_WORD_DATA, 58537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_SET_BYTE_MASK, 59537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_UNSET_BYTE_MASK, 60537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_SET_WORD_MASK, 61537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_UNSET_WORD_MASK, 62537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA, 63537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 64537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 65537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_power_seq_type_t { 66537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_CLK, 67537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_GPIO, 68537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_VREG, 69537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_I2C_MUX, 70537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 71537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 72537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_clk_type_t { 73537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_CAM_MCLK, 74537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_CAM_CLK, 75537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_CAM_CLK_MAX, 76537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 77537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 78537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_power_seq_gpio_t { 79537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_GPIO_RESET, 80537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_GPIO_STANDBY, 81b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi SENSOR_GPIO_VANA, 82b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi SENSOR_GPIO_VDIG, 83b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi SENSOR_GPIO_VIO, 84b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi SENSOR_GPIO_VCM, 85537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SENSOR_GPIO_MAX, 86537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 87537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 88537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_vreg_name_t { 89537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAM_VDIG, 90537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAM_VIO, 91537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAM_VANA, 92537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAM_VAF, 93537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAM_VREG_MAX, 94537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 95537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 96537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_resolution_t { 97537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_FULL, 98537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_QTR, 99537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_2, 100537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_3, 101537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_4, 102537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_5, 103537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_6, 104537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_RES_7, 105537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_SENSOR_INVALID_RES, 106537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 107537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 108537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum sensor_sub_module_t { 109537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_SENSOR, 110537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_CHROMATIX, 111537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_ACTUATOR, 112537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_EEPROM, 113537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_LED_FLASH, 114537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_STROBE_FLASH, 115537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_CSID, 116537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_CSID_3D, 117537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_CSIPHY, 118537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_CSIPHY_3D, 119537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani SUB_MODULE_MAX, 120537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 121537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 122537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum csid_cfg_type_t { 123537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID_INIT, 124537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID_CFG, 125537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID_RELEASE, 126537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 127537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 128537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum csiphy_cfg_type_t { 129537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSIPHY_INIT, 130537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSIPHY_CFG, 131537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSIPHY_RELEASE, 132537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 133537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 134537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camera_vreg_type { 135537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani REG_LDO, 136537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani REG_VS, 137537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani REG_GPIO, 138537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 139537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 140537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_power_setting { 141537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_sensor_power_seq_type_t seq_type; 142537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t seq_val; 143537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani long config_val; 144537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t delay; 145537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani void *data[10]; 146537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 147537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 148537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_power_setting_array { 149537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_sensor_power_setting *power_setting; 150537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t size; 151537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 152537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 153537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_id_info_t { 154537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t sensor_id_reg_addr; 155537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t sensor_id; 156537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 157537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 158537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_sensor_slave_info { 159537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t slave_addr; 160537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_camera_i2c_reg_addr_type addr_type; 161537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_sensor_id_info_t sensor_id_info; 162537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_sensor_power_setting_array power_setting_array; 163537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 164537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 165537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_reg_array { 166537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_addr; 167537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_data; 168537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 169537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 170537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_reg_setting { 171537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_i2c_reg_array *reg_setting; 172537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t size; 173537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_camera_i2c_reg_addr_type addr_type; 174537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_camera_i2c_data_type data_type; 175537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t delay; 176537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 177537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 178537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_seq_reg_array { 179537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_addr; 180537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t reg_data[I2C_SEQ_REG_DATA_MAX]; 181537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_data_size; 182537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 183537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 184537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_seq_reg_setting { 185537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_i2c_seq_reg_array *reg_setting; 186537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t size; 187537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_camera_i2c_reg_addr_type addr_type; 188537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t delay; 189537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 190537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 191537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_vc_cfg { 192537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t cid; 193537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t dt; 194537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t decode_format; 195537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 196537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 197537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_lut_params { 198537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t num_cid; 199537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csid_vc_cfg *vc_cfg[MAX_CID]; 200537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 201537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 202537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_params { 203537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t lane_cnt; 204537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t lane_assign; 205537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t phy_sel; 206537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csid_lut_params lut_params; 207537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 208537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 209537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csiphy_params { 210537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t lane_cnt; 211537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t settle_cnt; 212537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t lane_mask; 213537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t combo_mode; 214537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t csid_core; 215537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 216537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 217537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csi2_params { 218537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csid_params csid_params; 219537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csiphy_params csiphy_params; 220537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 221537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 222537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csi_lane_params { 223537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t csi_lane_assign; 224537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t csi_lane_mask; 225537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 226537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 227537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csi_lane_params_t { 228537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t csi_lane_assign; 229537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t csi_lane_mask; 230537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t csi_if; 231537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t csid_core[2]; 232537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t csi_phy_sel; 233537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 234537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 235537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_info_t { 236537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani char sensor_name[MAX_SENSOR_NAME]; 237537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int32_t session_id; 238537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int32_t subdev_id[SUB_MODULE_MAX]; 239537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 240537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 241537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct camera_vreg_t { 242537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani const char *reg_name; 243537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum camera_vreg_type type; 244537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int min_voltage; 245537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int max_voltage; 246537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int op_mode; 247537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t delay; 248537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 249537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 250537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camb_position_t { 251537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani BACK_CAMERA_B, 252537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani FRONT_CAMERA_B, 253537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 254537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 255537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camerab_mode_t { 256537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAMERA_MODE_2D_B = (1<<0), 257537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CAMERA_MODE_3D_B = (1<<1) 258537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 259537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 260537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_init_params { 261537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani /* mask of modes supported: 2D, 3D */ 262537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int modes_supported; 263537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani /* sensor position: front, back */ 264537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum camb_position_t position; 265537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani /* sensor mount angle */ 266537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t sensor_mount_angle; 267537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 268537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 269537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct sensorb_cfg_data { 270537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int cfgtype; 271537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 272537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_sensor_info_t sensor_info; 273537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_sensor_init_params sensor_init_params; 274537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani void *setting; 275537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani } cfg; 276537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 277537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 278537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csid_cfg_data { 279537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum csid_cfg_type_t cfgtype; 280537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 281537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t csid_version; 282537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csid_params *csid_params; 283537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani } cfg; 284537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 285537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 286537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csiphy_cfg_data { 287537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum csiphy_cfg_type_t cfgtype; 288537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 289537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csiphy_params *csiphy_params; 290537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_camera_csi_lane_params *csi_lane_params; 291537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani } cfg; 292537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 293537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 294537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum eeprom_cfg_type_t { 295537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_EEPROM_GET_INFO, 296537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_EEPROM_GET_DATA, 297537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_EEPROM_READ_DATA, 298537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_EEPROM_WRITE_DATA, 299537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 300537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_get_t { 301537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t num_bytes; 302537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 303537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 304537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_read_t { 305537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t *dbuffer; 306537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t num_bytes; 307537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 308537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 309537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_write_t { 310537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t *dbuffer; 311537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t num_bytes; 312537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 313537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 314537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_eeprom_cfg_data { 315537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum eeprom_cfg_type_t cfgtype; 316537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t is_supported; 317537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 318537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani char eeprom_name[MAX_SENSOR_NAME]; 319537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct eeprom_get_t get_data; 320537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct eeprom_read_t read_data; 321537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct eeprom_write_t write_data; 322537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani } cfg; 323537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 324537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 325537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_cfg_type_t { 326537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_SLAVE_INFO, 327537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_WRITE_I2C_ARRAY, 328537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_WRITE_I2C_SEQ_ARRAY, 329537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_POWER_UP, 330537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_POWER_DOWN, 331537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_STOP_STREAM_SETTING, 332537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_GET_SENSOR_INFO, 333537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_GET_SENSOR_INIT_PARAMS, 334537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_INIT_SETTING, 335537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_RESOLUTION, 336537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_STOP_STREAM, 337537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_START_STREAM, 338537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 339537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 340537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_cfg_type_t { 341537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_GET_ACTUATOR_INFO, 342537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_ACTUATOR_INFO, 343537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_SET_DEFAULT_FOCUS, 344537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CFG_MOVE_FOCUS, 345537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 346537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 347537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum actuator_type { 348537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_VCM, 349537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_PIEZO, 350537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 351537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 352537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_data_type { 353537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_BYTE_DATA = 1, 354537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_WORD_DATA, 355537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 356537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 357537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_addr_type { 358537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_BYTE_ADDR = 1, 359537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_WORD_ADDR, 360537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 361537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 362537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct reg_settings_t { 363537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_addr; 364537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_data; 365537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 366537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 367537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct region_params_t { 368537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani /* [0] = ForwardDirection Macro boundary 369537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani [1] = ReverseDirection Inf boundary 370537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani */ 371537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t step_bound[2]; 372537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t code_per_step; 373537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 374537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 375537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct damping_params_t { 376537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t damping_step; 377537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t damping_delay; 378537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t hw_params; 379537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 380537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 381537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_move_params_t { 382537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int8_t dir; 383537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int8_t sign_dir; 384537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int16_t dest_step_pos; 385537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int32_t num_steps; 386537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct damping_params_t *ringing_params; 387537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 388537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 389537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_tuning_params_t { 390537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int16_t initial_code; 391537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t pwd_step; 392537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t region_size; 393537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t total_steps; 394537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct region_params_t *region_params; 395537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 396537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 397537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_params_t { 398537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum actuator_type act_type; 399537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t reg_tbl_size; 400537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t data_size; 401537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t init_setting_size; 402537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t i2c_addr; 403537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_actuator_addr_type i2c_addr_type; 404537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_actuator_data_type i2c_data_type; 405537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_reg_params_t *reg_tbl_params; 406537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct reg_settings_t *init_settings; 407537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 408537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 409537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_set_info_t { 410537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_params_t actuator_params; 411537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_tuning_params_t af_tuning_params; 412537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 413537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 414537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_get_info_t { 415537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t focal_length_num; 416537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t focal_length_den; 417537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t f_number_num; 418537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t f_number_den; 419537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t f_pix_num; 420537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t f_pix_den; 421537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t total_f_dist_num; 422537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t total_f_dist_den; 423537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t hor_view_angle_num; 424537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t hor_view_angle_den; 425537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t ver_view_angle_num; 426537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t ver_view_angle_den; 427537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 428537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 429537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum af_camera_name { 430537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_0, 431537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_1, 432537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_2, 433537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_3, 434537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_4, 435537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_MAIN_CAM_5, 436537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_WEB_CAM_0, 437537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_WEB_CAM_1, 438537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ACTUATOR_WEB_CAM_2, 439537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 440537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 441537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_cfg_data { 442537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int cfgtype; 443537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint8_t is_af_supported; 444537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 445537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_move_params_t move; 446537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_set_info_t set_info; 447537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_actuator_get_info_t get_info; 448537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum af_camera_name cam_name; 449537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani } cfg; 450537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 451537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 452537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_write_type { 453537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_WRITE_HW_DAMP, 454537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_ACTUATOR_WRITE_DAC, 455537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 456537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 457537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_reg_params_t { 458537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_actuator_write_type reg_write_type; 459537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t hw_mask; 460537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t reg_addr; 461537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t hw_shift; 462537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t data_shift; 463537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 464537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 465537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_led_config_t { 466537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_LED_OFF, 467537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_LED_LOW, 468537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_LED_HIGH, 469537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_LED_INIT, 470537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani MSM_CAMERA_LED_RELEASE, 471537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 472537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 473537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_led_cfg_t { 474537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_camera_led_config_t cfgtype; 475537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 476537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 477537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_CFG \ 478537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data) 479537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 480537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_RELEASE \ 481537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IO('V', BASE_VIDIOC_PRIVATE + 2) 482537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 483537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_GET_SUBDEV_ID \ 484537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 3, uint32_t) 485537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 486537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_CSIPHY_IO_CFG \ 487537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct csid_cfg_data) 488537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 489537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_CSID_IO_CFG \ 490537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csiphy_cfg_data) 491537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 492537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ACTUATOR_CFG \ 493537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data) 494537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 495537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_FLASH_LED_DATA_CFG \ 496537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_camera_led_cfg_t) 497537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 498537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_EEPROM_CFG \ 499537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_eeprom_cfg_data) 500537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 501537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */ 502537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 503537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif /* __LINUX_MSM_CAM_SENSOR_H */ 504