105abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch#ifndef __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
205abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch#define __UAPI_LINUX_MSM_CAMSENSOR_SDK_H
305abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch
405abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch#include <linux/videodev2.h>
55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define KVERSION 0x1
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_POWER_CONFIG      12
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GPIO_OUT_LOW          (0 << 1)
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define GPIO_OUT_HIGH         (1 << 1)
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_EMBED_DATA        0x12
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RESERVED_DATA_0   0x13
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_YUV422_8          0x1E
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW8              0x2A
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW10             0x2B
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_RAW12             0x2C
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_6BIT         0
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_8BIT         1
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_10BIT        2
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_12BIT        3
214e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define CSI_DECODE_DPCM_10_6_10 4
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define CSI_DECODE_DPCM_10_8_10 5
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_CID                 16
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define I2C_SEQ_REG_DATA_MAX    1024
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define I2C_REG_DATA_MAX       (8*1024)
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4')
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 14  BGBG.. GRGR.. */
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4')
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 14  GBGB.. RGRG.. */
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4')
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 14  GRGR.. BGBG.. */
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4')
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 14  RGRG.. GBGB.. */
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_REG_TBL_SIZE 8
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_REGION       5
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define NUM_ACTUATOR_DIR          2
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_SCENARIO     8
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACT_MOD_NAME_SIZE     32
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACT_NAME_SIZE         32
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_ACTUATOR_INIT_SET     120
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_I2C_REG_SET           12
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_LED_TRIGGERS          3
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_EEPROM_MEMORY_MAP_MAX_SIZE  80
495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_EEPROM_MAX_MEM_MAP_CNT      8
505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_camera_id_t {
525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_0,
535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_1,
545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_2,
555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_3,
565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MAX_CAMERAS,
575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum i2c_freq_mode_t {
605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	I2C_STANDARD_MODE,
615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	I2C_FAST_MODE,
625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	I2C_CUSTOM_MODE,
63559dc63e2b51440525b5a5467d6ecaa8120be85eZhijun He	I2C_CUSTOM1_MODE,
64559dc63e2b51440525b5a5467d6ecaa8120be85eZhijun He	I2C_CUSTOM2_MODE,
655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	I2C_FAST_PLUS_MODE,
665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	I2C_MAX_MODES,
675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum camb_position_t {
705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	BACK_CAMERA_B,
715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	FRONT_CAMERA_B,
725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	AUX_CAMERA_B = 0x100,
735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	INVALID_CAMERA_B,
745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_power_seq_type_t {
775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_CLK,
785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO,
795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_VREG,
805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_I2C_MUX,
815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_I2C,
825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_i2c_reg_addr_type {
855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_BYTE_ADDR = 1,
865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_WORD_ADDR,
875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_3B_ADDR,
885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_ADDR_TYPE_MAX,
895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_i2c_data_type {
925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_BYTE_DATA = 1,
935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_WORD_DATA,
945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_DWORD_DATA,
955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_SET_BYTE_MASK,
965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_UNSET_BYTE_MASK,
975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_SET_WORD_MASK,
985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_UNSET_WORD_MASK,
995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA,
1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAMERA_I2C_DATA_TYPE_MAX,
1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_power_seq_gpio_t {
1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_RESET,
1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_STANDBY,
1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_AF_PWDM,
1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_VIO,
1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_VANA,
1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_VDIG,
1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_VAF,
1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_FL_EN,
1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_FL_NOW,
1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_FL_RESET,
1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_CUSTOM1,
1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_CUSTOM2,
1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_GPIO_MAX,
1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_vreg_name_t {
1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_VDIG,
1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_VIO,
1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_VANA,
1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_VAF,
1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_V_CUSTOM1,
1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_V_CUSTOM2,
1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAM_VREG_MAX,
1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_clk_type_t {
1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_CAM_MCLK,
1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_CAM_CLK,
1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SENSOR_CAM_CLK_MAX,
1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum camerab_mode_t {
1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_MODE_2D_B = (1<<0),
1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_MODE_3D_B = (1<<1),
1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMERA_MODE_INVALID = (1<<2),
1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_data_type {
1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_BYTE_DATA = 1,
1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WORD_DATA,
1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_addr_type {
1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_BYTE_ADDR = 1,
1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WORD_ADDR,
1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_write_type {
1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WRITE_HW_DAMP,
1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WRITE_DAC,
1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WRITE,
1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_WRITE_DIR_REG,
1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_POLL,
1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACTUATOR_READ_WRITE,
1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_actuator_i2c_operation {
1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACT_WRITE = 0,
1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ACT_POLL,
1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum actuator_type {
1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ACTUATOR_VCM,
1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ACTUATOR_PIEZO,
1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ACTUATOR_HVCM,
1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ACTUATOR_BIVCM,
1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_flash_driver_type {
1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	FLASH_DRIVER_PMIC,
1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	FLASH_DRIVER_I2C,
1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	FLASH_DRIVER_GPIO,
1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	FLASH_DRIVER_DEFAULT
1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_flash_cfg_type_t {
1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CFG_FLASH_INIT,
1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CFG_FLASH_RELEASE,
1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CFG_FLASH_OFF,
1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CFG_FLASH_LOW,
1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CFG_FLASH_HIGH,
1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_sensor_output_format_t {
1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_SENSOR_BAYER,
1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_SENSOR_YCBCR,
1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_SENSOR_META,
1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_power_setting {
1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_sensor_power_seq_type_t seq_type;
1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short seq_val;
1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	long config_val;
1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	void *data[10];
1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_power_setting_array {
2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_power_setting  power_setting_a[MAX_POWER_CONFIG];
2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_power_setting *power_setting;
2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short size;
2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_power_setting  power_down_setting_a[MAX_POWER_CONFIG];
2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_power_setting *power_down_setting;
2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short size_down;
2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_camera_i2c_operation {
2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAM_WRITE = 0,
2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAM_POLL,
2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_CAM_READ,
2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_i2c_sync_params {
2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int cid;
2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int csid;
2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short line;
2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_reg_settings_t {
2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t reg_addr;
2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_reg_addr_type addr_type;
2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t reg_data;
2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_data_type data_type;
2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_operation i2c_operation;
2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t delay;
2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_eeprom_mem_map_t {
2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int slave_addr;
2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_reg_settings_t
2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		mem_settings[MSM_EEPROM_MEMORY_MAP_MAX_SIZE];
2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int memory_map_size;
2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_eeprom_memory_map_array {
2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_eeprom_mem_map_t memory_map[MSM_EEPROM_MAX_MEM_MAP_CNT];
2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t msm_size_of_max_mappings;
2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_init_params {
2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask of modes supported: 2D, 3D */
2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int                 modes_supported;
2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* sensor position: front, back */
2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum camb_position_t position;
2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* sensor mount angle */
2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int            sensor_mount_angle;
2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_sensor_id_info_t {
2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short sensor_id_reg_addr;
2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short sensor_id;
2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short sensor_id_mask;
2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_sensor_slave_info {
2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char sensor_name[32];
2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char eeprom_name[32];
2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char actuator_name[32];
2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char ois_name[32];
2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char flash_name[32];
2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_sensor_camera_id_t camera_id;
2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short slave_addr;
2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum i2c_freq_mode_t i2c_freq_mode;
2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_reg_addr_type addr_type;
2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_id_info_t sensor_id_info;
2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_power_setting_array power_setting_array;
2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char  is_init_params_valid;
2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_sensor_init_params sensor_init_params;
2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_sensor_output_format_t output_format;
2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_reg_array {
2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_addr;
2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_data;
2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int delay;
2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_reg_setting {
2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_i2c_reg_array *reg_setting;
2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short size;
2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_reg_addr_type addr_type;
2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_data_type data_type;
2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_vc_cfg {
2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char cid;
2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char dt;
2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char decode_format;
2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_lut_params {
2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char num_cid;
2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_csid_vc_cfg vc_cfg_a[MAX_CID];
2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_csid_vc_cfg *vc_cfg[MAX_CID];
3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_params {
3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char lane_cnt;
3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short lane_assign;
3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char phy_sel;
3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int csi_clk;
3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_csid_lut_params lut_params;
3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char csi_3p_sel;
3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csid_testmode_parms {
3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int num_bytes_per_line;
3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int num_lines;
3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int h_blanking_count;
3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int v_blanking_count;
3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int payload_mode;
3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_csiphy_params {
3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char lane_cnt;
3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char settle_cnt;
3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short lane_mask;
3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char combo_mode;
3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char csid_core;
3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int csiphy_clk;
3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char csi_3phase;
3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_seq_reg_array {
3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_addr;
3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned char reg_data[I2C_SEQ_REG_DATA_MAX];
3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_data_size;
3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_seq_reg_setting {
3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_i2c_seq_reg_array *reg_setting;
3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short size;
3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_reg_addr_type addr_type;
3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_actuator_reg_params_t {
3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_actuator_write_type reg_write_type;
3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int hw_mask;
3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_addr;
3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short hw_shift;
3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short data_shift;
3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short data_type;
3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short addr_type;
3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_data;
3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct damping_params_t {
3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int damping_step;
3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int damping_delay;
3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int hw_params;
3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct region_params_t {
3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* [0] = ForwardDirection Macro boundary
3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	   [1] = ReverseDirection Inf boundary
3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	*/
3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short step_bound[2];
3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short code_per_step;
3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* qvalue for converting float type numbers to integer format */
3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int qvalue;
3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct reg_settings_t {
3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_addr;
373530e397c9e4fcc38f5e85d1ecc0f1539e186361bSteve Pfetsch	enum msm_camera_i2c_reg_addr_type addr_type;
3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short reg_data;
375530e397c9e4fcc38f5e85d1ecc0f1539e186361bSteve Pfetsch	enum msm_camera_i2c_data_type data_type;
3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_actuator_i2c_operation i2c_operation;
3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned int delay;
3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_camera_i2c_reg_setting_array {
3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_camera_i2c_reg_array reg_setting_a[MAX_I2C_REG_SET];
3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short size;
3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_reg_addr_type addr_type;
3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_camera_i2c_data_type data_type;
3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	unsigned short delay;
3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
38705abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch
38805abf077198fdb75e0b4e991728e3d84fea133f1Steve Pfetsch#endif
389