diff options
Diffstat (limited to 'original-kernel-headers/media')
-rw-r--r-- | original-kernel-headers/media/msm_cam_sensor.h | 13 | ||||
-rw-r--r-- | original-kernel-headers/media/msmb_camera.h | 13 | ||||
-rw-r--r-- | original-kernel-headers/media/msmb_generic_buf_mgr.h | 35 | ||||
-rw-r--r-- | original-kernel-headers/media/msmb_isp.h | 21 | ||||
-rw-r--r-- | original-kernel-headers/media/msmb_pproc.h | 46 |
5 files changed, 122 insertions, 6 deletions
diff --git a/original-kernel-headers/media/msm_cam_sensor.h b/original-kernel-headers/media/msm_cam_sensor.h index 6cf6e47..4a3636e 100644 --- a/original-kernel-headers/media/msm_cam_sensor.h +++ b/original-kernel-headers/media/msm_cam_sensor.h @@ -5,6 +5,7 @@ #include <sys/types.h> #endif +#include <linux/v4l2-mediabus.h> #include <media/msm_camsensor_sdk.h> #include <linux/types.h> @@ -37,6 +38,16 @@ #define MAX_AF_ITERATIONS 3 #define MAX_NUMBER_OF_STEPS 47 +#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */ +#define MSM_V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') + /* 14 BGBG.. GRGR.. */ +#define MSM_V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') + /* 14 GBGB.. RGRG.. */ +#define MSM_V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4') + /* 14 GRGR.. BGBG.. */ +#define MSM_V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') + /* 14 RGRG.. GBGB.. */ + enum flash_type { LED_FLASH = 1, STROBE_FLASH, @@ -558,6 +569,7 @@ struct msm_camera_led_cfg_t { struct msm_flash_init_info_t { enum msm_flash_driver_type flash_driver_type; + uint32_t slave_addr; struct msm_sensor_power_setting_array *power_setting_array; struct msm_camera_i2c_reg_setting_array *settings; }; @@ -729,6 +741,7 @@ struct msm_ois_cfg_data32 { struct msm_flash_init_info_t32 { enum msm_flash_driver_type flash_driver_type; + uint32_t slave_addr; compat_uptr_t power_setting_array; compat_uptr_t settings; }; diff --git a/original-kernel-headers/media/msmb_camera.h b/original-kernel-headers/media/msmb_camera.h index d053589..0ce83be 100644 --- a/original-kernel-headers/media/msmb_camera.h +++ b/original-kernel-headers/media/msmb_camera.h @@ -61,9 +61,13 @@ /* The below macro is defined to put an upper limit on maximum * number of buffer requested per stream. In case of extremely * large value for number of buffer due to data structure corruption - * we return error to avoid integer overflow. This value may be + * we return error to avoid integer overflow. Group processing + * can have max of 9 groups of 8 bufs each. This value may be * configured in future*/ -#define MSM_CAMERA_MAX_STREAM_BUF 40 +#define MSM_CAMERA_MAX_STREAM_BUF 72 + +/* Max batch size of processing */ +#define MSM_CAMERA_MAX_USER_BUFF_CNT 16 /* featur base */ #define MSM_CAMERA_FEATURE_BASE 0x00010000 @@ -196,4 +200,9 @@ struct msm_camera_smmu_attach_type { enum smmu_attach_mode attach; }; +struct msm_camera_user_buf_cont_t { + unsigned int buf_cnt; + unsigned int buf_idx[MSM_CAMERA_MAX_USER_BUFF_CNT]; +}; + #endif /* __LINUX_MSMB_CAMERA_H */ diff --git a/original-kernel-headers/media/msmb_generic_buf_mgr.h b/original-kernel-headers/media/msmb_generic_buf_mgr.h index a5823e6..8645e95 100644 --- a/original-kernel-headers/media/msmb_generic_buf_mgr.h +++ b/original-kernel-headers/media/msmb_generic_buf_mgr.h @@ -1,6 +1,20 @@ #ifndef __UAPI_MEDIA_MSMB_BUF_MNGR_H__ #define __UAPI_MEDIA_MSMB_BUF_MNGR_H__ +#include <media/msmb_camera.h> + +enum msm_camera_buf_mngr_cmd { + MSM_CAMERA_BUF_MNGR_CONT_MAP, + MSM_CAMERA_BUF_MNGR_CONT_UNMAP, + MSM_CAMERA_BUF_MNGR_CONT_MAX, +}; + +enum msm_camera_buf_mngr_buf_type { + MSM_CAMERA_BUF_MNGR_BUF_PLANAR, + MSM_CAMERA_BUF_MNGR_BUF_USER, + MSM_CAMERA_BUF_MNGR_BUF_INVALID, +}; + struct msm_buf_mngr_info { uint32_t session_id; uint32_t stream_id; @@ -8,6 +22,16 @@ struct msm_buf_mngr_info { struct timeval timestamp; uint32_t index; uint32_t reserved; + enum msm_camera_buf_mngr_buf_type type; + struct msm_camera_user_buf_cont_t user_buf; +}; + +struct msm_buf_mngr_main_cont_info { + uint32_t session_id; + uint32_t stream_id; + enum msm_camera_buf_mngr_cmd cmd; + uint32_t cnt; + int32_t cont_fd; }; struct v4l2_subdev *msm_buf_mngr_get_subdev(void); @@ -21,11 +45,15 @@ struct v4l2_subdev *msm_buf_mngr_get_subdev(void); #define VIDIOC_MSM_BUF_MNGR_BUF_DONE \ _IOWR('V', BASE_VIDIOC_PRIVATE + 35, struct msm_buf_mngr_info) +#define VIDIOC_MSM_BUF_MNGR_CONT_CMD \ + _IOWR('V', BASE_VIDIOC_PRIVATE + 36, struct msm_buf_mngr_main_cont_info) + #define VIDIOC_MSM_BUF_MNGR_INIT \ - _IOWR('V', BASE_VIDIOC_PRIVATE + 36, struct msm_buf_mngr_info) + _IOWR('V', BASE_VIDIOC_PRIVATE + 37, struct msm_buf_mngr_info) #define VIDIOC_MSM_BUF_MNGR_DEINIT \ - _IOWR('V', BASE_VIDIOC_PRIVATE + 37, struct msm_buf_mngr_info) + _IOWR('V', BASE_VIDIOC_PRIVATE + 38, struct msm_buf_mngr_info) + #ifdef CONFIG_COMPAT struct msm_buf_mngr_info32_t { @@ -35,6 +63,8 @@ struct msm_buf_mngr_info32_t { struct compat_timeval timestamp; uint32_t index; uint32_t reserved; + enum msm_camera_buf_mngr_buf_type type; + struct msm_camera_user_buf_cont_t user_buf; }; #define VIDIOC_MSM_BUF_MNGR_GET_BUF32 \ @@ -45,6 +75,7 @@ struct msm_buf_mngr_info32_t { #define VIDIOC_MSM_BUF_MNGR_BUF_DONE32 \ _IOWR('V', BASE_VIDIOC_PRIVATE + 35, struct msm_buf_mngr_info32_t) + #endif #endif diff --git a/original-kernel-headers/media/msmb_isp.h b/original-kernel-headers/media/msmb_isp.h index 61eed72..22a7645 100644 --- a/original-kernel-headers/media/msmb_isp.h +++ b/original-kernel-headers/media/msmb_isp.h @@ -103,6 +103,7 @@ enum msm_isp_stats_type { MSM_ISP_STATS_BF_SCALE, /* Bayer Focus scale */ MSM_ISP_STATS_HDR_BE, /* HDR Bayer Exposure */ MSM_ISP_STATS_HDR_BHIST, /* HDR Bayer Hist */ + MSM_ISP_STATS_AEC_BG, /* AEC BG */ MSM_ISP_STATS_MAX /* MAX */ }; @@ -152,6 +153,18 @@ struct msm_vfe_fetch_engine_cfg { uint32_t buf_stride; }; +/* + * Camif output general configuration + */ +struct msm_vfe_camif_subsample_cfg { + uint32_t irq_subsample_period; + uint32_t irq_subsample_pattern; + uint32_t sof_counter_step; +}; + +/* + * Camif frame and window configuration + */ struct msm_vfe_camif_cfg { uint32_t lines_per_frame; uint32_t pixels_per_line; @@ -162,6 +175,7 @@ struct msm_vfe_camif_cfg { uint32_t epoch_line0; uint32_t epoch_line1; enum msm_vfe_camif_input camif_input; + struct msm_vfe_camif_subsample_cfg subsample_cfg; }; struct msm_vfe_testgen_cfg { @@ -471,7 +485,8 @@ enum msm_isp_event_idx { ISP_CAMIF_ERROR = 8, ISP_BUF_DONE = 9, ISP_FE_RD_DONE = 10, - ISP_EVENT_MAX = 11 + ISP_IOMMU_P_FAULT = 11, + ISP_EVENT_MAX = 12 }; #define ISP_EVENT_OFFSET 8 @@ -496,6 +511,7 @@ enum msm_isp_event_idx { #define ISP_EVENT_STATS_NOTIFY (ISP_STATS_EVENT_BASE) #define ISP_EVENT_COMP_STATS_NOTIFY (ISP_EVENT_STATS_NOTIFY + MSM_ISP_STATS_MAX) #define ISP_EVENT_FE_READ_DONE (ISP_EVENT_BASE + ISP_FE_RD_DONE) +#define ISP_EVENT_IOMMU_P_FAULT (ISP_EVENT_BASE + ISP_IOMMU_P_FAULT) #define ISP_EVENT_STREAM_UPDATE_DONE (ISP_STREAM_EVENT_BASE) /* The msm_v4l2_event_data structure should match the @@ -634,4 +650,7 @@ struct msm_isp_event_data { #define VIDIOC_MSM_ISP_FETCH_ENG_START \ _IOWR('V', BASE_VIDIOC_PRIVATE+20, struct msm_vfe_fetch_eng_start) +#define VIDIOC_MSM_ISP_DEQUEUE_BUF \ + _IOWR('V', BASE_VIDIOC_PRIVATE+21, struct msm_isp_qbuf_info) + #endif /* __MSMB_ISP__ */ diff --git a/original-kernel-headers/media/msmb_pproc.h b/original-kernel-headers/media/msmb_pproc.h index 4a575bb..ac80cb3 100644 --- a/original-kernel-headers/media/msmb_pproc.h +++ b/original-kernel-headers/media/msmb_pproc.h @@ -13,11 +13,13 @@ /* Should be same as VIDEO_MAX_PLANES in videodev2.h */ #define MAX_PLANES VIDEO_MAX_PLANES +/* PARTIAL_FRAME_STRIPE_COUNT must be even */ +#define PARTIAL_FRAME_STRIPE_COUNT 4 #define MAX_NUM_CPP_STRIPS 8 #define MSM_CPP_MAX_NUM_PLANES 3 #define MSM_CPP_MIN_FRAME_LENGTH 13 -#define MSM_CPP_MAX_FRAME_LENGTH 2048 +#define MSM_CPP_MAX_FRAME_LENGTH 4096 #define MSM_CPP_MAX_FW_NAME_LEN 32 #define MAX_FREQ_TBL 10 @@ -192,11 +194,32 @@ struct msm_cpp_frame_info_t { int32_t *status; int32_t duplicate_output; uint32_t duplicate_identity; + uint32_t feature_mask; uint8_t we_disable; struct msm_cpp_buffer_info_t input_buffer_info; struct msm_cpp_buffer_info_t output_buffer_info[2]; struct msm_cpp_buffer_info_t tnr_scratch_buffer_info[2]; uint32_t reserved; + uint8_t partial_frame_indicator; + /* the followings are used only for partial_frame type + * and is only used for offline frame processing and + * only if payload big enough and need to be split into partial_frame + * if first_payload, kernel acquires output buffer + * first payload must have the last stripe + * buffer addresses from 0 to last_stripe_index are updated. + * kernel updates payload with msg_len and stripe_info + * kernel sends top level, plane level, then only stripes + * starting with first_stripe_index and + * ends with last_stripe_index + * kernel then sends trailing flag at frame done, + * if last payload, kernel queues the output buffer to HAL + */ + uint8_t first_payload; + uint8_t last_payload; + uint32_t first_stripe_index; + uint32_t last_stripe_index; + uint32_t stripe_info_offset; + uint32_t stripe_info; }; struct msm_cpp_pop_stream_info_t { @@ -365,11 +388,32 @@ struct msm_cpp_frame_info32_t { compat_int_t status; int32_t duplicate_output; uint32_t duplicate_identity; + uint32_t feature_mask; uint8_t we_disable; struct msm_cpp_buffer_info_t input_buffer_info; struct msm_cpp_buffer_info_t output_buffer_info[2]; struct msm_cpp_buffer_info_t tnr_scratch_buffer_info[2]; uint32_t reserved; + uint8_t partial_frame_indicator; + /* the followings are used only for partial_frame type + * and is only used for offline frame processing and + * only if payload big enough and need to be split into partial_frame + * if first_payload, kernel acquires output buffer + * first payload must have the last stripe + * buffer addresses from 0 to last_stripe_index are updated. + * kernel updates payload with msg_len and stripe_info + * kernel sends top level, plane level, then only stripes + * starting with first_stripe_index and + * ends with last_stripe_index + * kernel then sends trailing flag at frame done, + * if last payload, kernel queues the output buffer to HAL + */ + uint8_t first_payload; + uint8_t last_payload; + uint32_t first_stripe_index; + uint32_t last_stripe_index; + uint32_t stripe_info_offset; + uint32_t stripe_info; }; struct msm_cpp_clock_settings32_t { |