diff options
Diffstat (limited to 'libc/kernel/common/media/msm_camera.h')
-rw-r--r-- | libc/kernel/common/media/msm_camera.h | 251 |
1 files changed, 175 insertions, 76 deletions
diff --git a/libc/kernel/common/media/msm_camera.h b/libc/kernel/common/media/msm_camera.h index be4449c..fe48adc 100644 --- a/libc/kernel/common/media/msm_camera.h +++ b/libc/kernel/common/media/msm_camera.h @@ -12,9 +12,17 @@ #ifndef __LINUX_MSM_CAMERA_H #define __LINUX_MSM_CAMERA_H +#ifdef MSM_CAMERA_BIONIC +#include <sys/types.h> +#endif #include <linux/types.h> #include <asm/sizes.h> #include <linux/ioctl.h> +#ifdef MSM_CAMERA_GCC +#include <time.h> +#else +#include <linux/time.h> +#endif #define MSM_CAM_IOCTL_MAGIC 'm' @@ -54,33 +62,55 @@ #define MSM_CAM_IOCTL_SET_CROP _IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *) -#define MSM_CAM_IOCTL_PP _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *) +#define MSM_CAM_IOCTL_PICT_PP _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *) -#define MSM_CAM_IOCTL_PP_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *) +#define MSM_CAM_IOCTL_PICT_PP_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *) #define MSM_CAM_IOCTL_SENSOR_IO_CFG _IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *) -#define MSM_CAMERA_LED_OFF 0 -#define MSM_CAMERA_LED_LOW 1 -#define MSM_CAMERA_LED_HIGH 2 - #define MSM_CAM_IOCTL_FLASH_LED_CFG _IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *) #define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME _IO(MSM_CAM_IOCTL_MAGIC, 23) #define MSM_CAM_IOCTL_CTRL_COMMAND_2 _IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *) -#define MSM_CAM_IOCTL_ENABLE_OUTPUT_IND _IOW(MSM_CAM_IOCTL_MAGIC, 25, uint32_t *) +#define MSM_CAM_IOCTL_AF_CTRL _IOR(MSM_CAM_IOCTL_MAGIC, 25, struct msm_ctrl_cmt_t *) + +#define MSM_CAM_IOCTL_AF_CTRL_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *) + +#define MSM_CAM_IOCTL_CONFIG_VPE _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_camera_vpe_cfg_cmd *) + +#define MSM_CAM_IOCTL_AXI_VPE_CONFIG _IOW(MSM_CAM_IOCTL_MAGIC, 28, struct msm_camera_vpe_cfg_cmd *) + +#define MSM_CAM_IOCTL_STROBE_FLASH_CFG _IOW(MSM_CAM_IOCTL_MAGIC, 29, uint32_t *) + +#define MSM_CAM_IOCTL_STROBE_FLASH_CHARGE _IOW(MSM_CAM_IOCTL_MAGIC, 30, uint32_t *) + +#define MSM_CAM_IOCTL_STROBE_FLASH_RELEASE _IO(MSM_CAM_IOCTL_MAGIC, 31) + +#define MSM_CAM_IOCTL_FLASH_CTRL _IOW(MSM_CAM_IOCTL_MAGIC, 32, struct flash_ctrl_data *) + +#define MSM_CAM_IOCTL_ERROR_CONFIG _IOW(MSM_CAM_IOCTL_MAGIC, 33, uint32_t *) + +#define MSM_CAM_IOCTL_ABORT_CAPTURE _IO(MSM_CAM_IOCTL_MAGIC, 34) + +#define MSM_CAM_IOCTL_SET_FD_ROI _IOW(MSM_CAM_IOCTL_MAGIC, 35, struct fd_roi_info *) -#define MSM_CAM_IOCTL_AF_CTRL _IOR(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *) -#define MSM_CAM_IOCTL_AF_CTRL_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_ctrl_cmt_t *) +#define MSM_CAM_IOCTL_GET_CAMERA_INFO _IOR(MSM_CAM_IOCTL_MAGIC, 36, struct msm_camera_info *) -#define MAX_SENSOR_NUM 3 +#define MSM_CAMERA_LED_OFF 0 +#define MSM_CAMERA_LED_LOW 1 +#define MSM_CAMERA_LED_HIGH 2 + +#define MSM_CAMERA_STROBE_FLASH_NONE 0 +#define MSM_CAMERA_STROBE_FLASH_XENON 1 + +#define MSM_MAX_CAMERA_SENSORS 5 #define MAX_SENSOR_NAME 32 -#define PP_SNAP 1 -#define PP_RAW_SNAP (1<<1) -#define PP_PREV (1<<2) +#define PP_SNAP 0x01 +#define PP_RAW_SNAP ((0x01)<<1) +#define PP_PREV ((0x01)<<2) #define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV) #define MSM_CAM_CTRL_CMD_DONE 0 @@ -99,6 +129,15 @@ struct msm_vfe_evt_msg { unsigned short type; unsigned short msg_id; unsigned int len; + uint32_t frame_id; + void *data; +}; + +struct msm_vpe_evt_msg { + unsigned short type; + unsigned short msg_id; + unsigned int len; + uint32_t frame_id; void *data; }; @@ -133,35 +172,37 @@ struct msm_camera_cfg_cmd { #define CMD_PICT_T_AXI_CFG 4 #define CMD_PICT_M_AXI_CFG 5 #define CMD_RAW_PICT_AXI_CFG 6 -#define CMD_STATS_AXI_CFG 7 -#define CMD_STATS_AF_AXI_CFG 8 -#define CMD_FRAME_BUF_RELEASE 9 -#define CMD_PREV_BUF_CFG 10 -#define CMD_SNAP_BUF_RELEASE 11 -#define CMD_SNAP_BUF_CFG 12 -#define CMD_STATS_DISABLE 13 -#define CMD_STATS_AEC_AWB_ENABLE 14 -#define CMD_STATS_AF_ENABLE 15 -#define CMD_STATS_BUF_RELEASE 16 -#define CMD_STATS_AF_BUF_RELEASE 17 -#define CMD_STATS_ENABLE 18 -#define UPDATE_STATS_INVALID 19 - -#define CMD_STATS_AEC_ENABLE 20 -#define CMD_STATS_AWB_ENABLE 21 -#define CMD_STATS_AEC_AXI_CFG 22 -#define CMD_STATS_AWB_AXI_CFG 23 -#define CMD_STATS_RS_AXI_CFG 24 -#define CMD_STATS_CS_AXI_CFG 25 -#define CMD_STATS_IHIST_AXI_CFG 26 -#define CMD_STATS_SKIN_AXI_CFG 27 -#define CMD_STATS_AEC_BUF_RELEASE 28 -#define CMD_STATS_AWB_BUF_RELEASE 29 -#define CMD_STATS_RS_BUF_RELEASE 30 -#define CMD_STATS_CS_BUF_RELEASE 31 -#define CMD_STATS_IHIST_BUF_RELEASE 32 -#define CMD_STATS_SKIN_BUF_RELEASE 33 +#define CMD_FRAME_BUF_RELEASE 7 +#define CMD_PREV_BUF_CFG 8 +#define CMD_SNAP_BUF_RELEASE 9 +#define CMD_SNAP_BUF_CFG 10 +#define CMD_STATS_DISABLE 11 +#define CMD_STATS_AEC_AWB_ENABLE 12 +#define CMD_STATS_AF_ENABLE 13 +#define CMD_STATS_AEC_ENABLE 14 +#define CMD_STATS_AWB_ENABLE 15 +#define CMD_STATS_ENABLE 16 + +#define CMD_STATS_AXI_CFG 17 +#define CMD_STATS_AEC_AXI_CFG 18 +#define CMD_STATS_AF_AXI_CFG 19 +#define CMD_STATS_AWB_AXI_CFG 20 +#define CMD_STATS_RS_AXI_CFG 21 +#define CMD_STATS_CS_AXI_CFG 22 +#define CMD_STATS_IHIST_AXI_CFG 23 +#define CMD_STATS_SKIN_AXI_CFG 24 + +#define CMD_STATS_BUF_RELEASE 25 +#define CMD_STATS_AEC_BUF_RELEASE 26 +#define CMD_STATS_AF_BUF_RELEASE 27 +#define CMD_STATS_AWB_BUF_RELEASE 28 +#define CMD_STATS_RS_BUF_RELEASE 29 +#define CMD_STATS_CS_BUF_RELEASE 30 +#define CMD_STATS_IHIST_BUF_RELEASE 31 +#define CMD_STATS_SKIN_BUF_RELEASE 32 + +#define UPDATE_STATS_INVALID 33 #define CMD_AXI_CFG_SNAP_GEMINI 34 #define CMD_AXI_CFG_SNAP 35 #define CMD_AXI_CFG_PREVIEW 36 @@ -170,7 +211,8 @@ struct msm_camera_cfg_cmd { #define CMD_STATS_IHIST_ENABLE 38 #define CMD_STATS_RS_ENABLE 39 #define CMD_STATS_CS_ENABLE 40 -#define CMD_AXI_CFG_O1_AND_O2 41 +#define CMD_VPE 41 +#define CMD_AXI_CFG_VPE 42 struct msm_vfe_cfg_cmd { int cmd_type; @@ -178,6 +220,12 @@ struct msm_vfe_cfg_cmd { void *value; }; +struct msm_vpe_cfg_cmd { + int cmd_type; + uint16_t length; + void *value; +}; + #define MAX_CAMERA_ENABLE_NAME_LEN 32 struct camera_enable_cmd { char name[MAX_CAMERA_ENABLE_NAME_LEN]; @@ -199,7 +247,18 @@ struct camera_enable_cmd { #define MSM_PMEM_SKIN 13 #define MSM_PMEM_VIDEO 14 #define MSM_PMEM_PREVIEW 15 -#define MSM_PMEM_MAX 16 +#define MSM_PMEM_VIDEO_VPE 16 +#define MSM_PMEM_MAX 17 + +#define STAT_AEAW 0 +#define STAT_AEC 1 +#define STAT_AF 2 +#define STAT_AWB 3 +#define STAT_RS 4 +#define STAT_CS 5 +#define STAT_IHIST 6 +#define STAT_SKIN 7 +#define STAT_MAX 8 #define FRAME_PREVIEW_OUTPUT1 0 #define FRAME_PREVIEW_OUTPUT2 1 @@ -216,7 +275,7 @@ struct msm_pmem_info { uint32_t len; uint32_t y_off; uint32_t cbcr_off; - uint8_t vfe_can_write; + uint8_t active; }; struct outputCfg { @@ -230,22 +289,29 @@ struct outputCfg { #define OUTPUT_1 0 #define OUTPUT_2 1 #define OUTPUT_1_AND_2 2 -#define CAMIF_TO_AXI_VIA_OUTPUT_2 3 -#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 4 -#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 5 -#define OUTPUT_1_AND_3 6 -#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_1_AND_3 7 +#define OUTPUT_1_AND_3 3 +#define CAMIF_TO_AXI_VIA_OUTPUT_2 4 +#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 5 +#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 6 +#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 7 #define MSM_FRAME_PREV_1 0 #define MSM_FRAME_PREV_2 1 #define MSM_FRAME_ENC 2 -#define OUTPUT_TYPE_P 1 -#define OUTPUT_TYPE_T 2 -#define OUTPUT_TYPE_S 3 -#define OUTPUT_TYPE_V 4 +#define OUTPUT_TYPE_P (1<<0) +#define OUTPUT_TYPE_T (1<<1) +#define OUTPUT_TYPE_S (1<<2) +#define OUTPUT_TYPE_V (1<<3) +#define OUTPUT_TYPE_L (1<<4) + +struct fd_roi_info { + void *info; + int info_len; +}; struct msm_frame { + struct timespec ts; int path; unsigned long buffer; uint32_t y_off; @@ -254,17 +320,11 @@ struct msm_frame { void *cropinfo; int croplen; + uint32_t error_code; + struct fd_roi_info roi_info; }; -#define STAT_AEAW 0 -#define STAT_AF 1 -#define STAT_AEC 2 -#define STAT_AWB 3 -#define STAT_RS 4 -#define STAT_CS 5 -#define STAT_IHIST 6 -#define STAT_SKIN 7 -#define STAT_MAX 8 +#define MSM_CAMERA_ERR_MASK (0xFFFFFFFF & 1) struct msm_stats_buf { int type; @@ -280,8 +340,11 @@ struct msm_stats_buf { #define MSM_V4L2_GET_CTRL 5 #define MSM_V4L2_SET_CTRL 6 #define MSM_V4L2_QUERY 7 -#define MSM_V4L2_MAX 8 +#define MSM_V4L2_GET_CROP 8 +#define MSM_V4L2_SET_CROP 9 +#define MSM_V4L2_MAX 10 +#define V4L2_CAMERA_EXIT 43 struct crop_info { void *info; int len; @@ -326,7 +389,8 @@ struct msm_snapshot_pp_status { #define CFG_GET_PICT_P_PL 25 #define CFG_GET_AF_MAX_STEPS 26 #define CFG_GET_PICT_MAX_EXP_LC 27 -#define CFG_MAX 28 +#define CFG_SEND_WB_INFO 28 +#define CFG_MAX 29 #define MOVE_NEAR 0 #define MOVE_FAR 1 @@ -334,24 +398,23 @@ struct msm_snapshot_pp_status { #define SENSOR_PREVIEW_MODE 0 #define SENSOR_SNAPSHOT_MODE 1 #define SENSOR_RAW_SNAPSHOT_MODE 2 +#define SENSOR_VIDEO_120FPS_MODE 3 #define SENSOR_QTR_SIZE 0 #define SENSOR_FULL_SIZE 1 -#define SENSOR_INVALID_SIZE 2 +#define SENSOR_QVGA_SIZE 2 +#define SENSOR_INVALID_SIZE 3 #define CAMERA_EFFECT_OFF 0 #define CAMERA_EFFECT_MONO 1 #define CAMERA_EFFECT_NEGATIVE 2 #define CAMERA_EFFECT_SOLARIZE 3 -#define CAMERA_EFFECT_PASTEL 4 -#define CAMERA_EFFECT_MOSAIC 5 -#define CAMERA_EFFECT_RESIZE 6 -#define CAMERA_EFFECT_SEPIA 7 -#define CAMERA_EFFECT_POSTERIZE 8 -#define CAMERA_EFFECT_WHITEBOARD 9 -#define CAMERA_EFFECT_BLACKBOARD 10 -#define CAMERA_EFFECT_AQUA 11 -#define CAMERA_EFFECT_MAX 12 +#define CAMERA_EFFECT_SEPIA 4 +#define CAMERA_EFFECT_POSTERIZE 5 +#define CAMERA_EFFECT_WHITEBOARD 6 +#define CAMERA_EFFECT_BLACKBOARD 7 +#define CAMERA_EFFECT_AQUA 8 +#define CAMERA_EFFECT_MAX 9 struct sensor_pict_fps { uint16_t prevfps; @@ -373,7 +436,11 @@ struct fps_cfg { uint16_t fps_div; uint32_t pict_fps_div; }; - +struct wb_info_cfg { + uint16_t red_gain; + uint16_t green_gain; + uint16_t blue_gain; +}; struct sensor_cfg_data { int cfgtype; int mode; @@ -393,9 +460,41 @@ struct sensor_cfg_data { struct exp_gain_cfg exp_gain; struct focus_cfg focus; struct fps_cfg fps; + struct wb_info_cfg wb_info; } cfg; }; +enum flash_type { + LED_FLASH, + STROBE_FLASH, +}; + +enum strobe_flash_ctrl_type { + STROBE_FLASH_CTRL_INIT, + STROBE_FLASH_CTRL_CHARGE, + STROBE_FLASH_CTRL_RELEASE +}; + +struct strobe_flash_ctrl_data { + enum strobe_flash_ctrl_type type; + int charge_en; +}; + +struct msm_camera_info { + int num_cameras; + uint8_t has_3d_support[MSM_MAX_CAMERA_SENSORS]; + uint8_t is_internal_cam[MSM_MAX_CAMERA_SENSORS]; + uint32_t s_mount_angle[MSM_MAX_CAMERA_SENSORS]; +}; + +struct flash_ctrl_data { + int flashtype; + union { + int led_state; + struct strobe_flash_ctrl_data strobe_ctrl; + } ctrl_data; +}; + #define GET_NAME 0 #define GET_PREVIEW_LINE_PER_FRAME 1 #define GET_PREVIEW_PIXELS_PER_LINE 2 @@ -407,6 +506,6 @@ struct sensor_cfg_data { struct msm_camsensor_info { char name[MAX_SENSOR_NAME]; uint8_t flash_enabled; + int8_t total_steps; }; #endif - |