1df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#ifndef _MSM_VIDC_H_ 2df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#define _MSM_VIDC_H_ 3df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 4df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#ifdef __KERNEL__ 5df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 6df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#include <linux/poll.h> 7df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#include <linux/videodev2.h> 8df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 9df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandenum core_id { 10df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_CORE_0 = 0, 11df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_CORE_1, /* for Q6 core */ 12df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_CORES_MAX, 13df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 14df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 15df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandenum session_type { 16df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_ENCODER = 0, 17df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_DECODER, 18df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand MSM_VIDC_MAX_DEVICES, 19df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 20df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 21df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandvoid *msm_vidc_open(int core_id, int session_type); 22df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_close(void *instance); 23df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_querycap(void *instance, struct v4l2_capability *cap); 24df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_enum_fmt(void *instance, struct v4l2_fmtdesc *f); 25df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_s_fmt(void *instance, struct v4l2_format *f); 26df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_g_fmt(void *instance, struct v4l2_format *f); 27df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_s_ctrl(void *instance, struct v4l2_control *a); 28df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_g_ctrl(void *instance, struct v4l2_control *a); 29df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_reqbufs(void *instance, struct v4l2_requestbuffers *b); 30df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_prepare_buf(void *instance, struct v4l2_buffer *b); 31df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_release_buf(void *instance, struct v4l2_buffer *b); 32df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_qbuf(void *instance, struct v4l2_buffer *b); 33df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_dqbuf(void *instance, struct v4l2_buffer *b); 34df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_streamon(void *instance, enum v4l2_buf_type i); 35df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_streamoff(void *instance, enum v4l2_buf_type i); 36df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_decoder_cmd(void *instance, struct v4l2_decoder_cmd *dec); 37df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_encoder_cmd(void *instance, struct v4l2_encoder_cmd *enc); 38df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_poll(void *instance, struct file *filp, 39df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand struct poll_table_struct *pt); 40df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_get_iommu_domain_partition(void *instance, u32 flags, 41df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand enum v4l2_buf_type, int *domain, int *partition); 42df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_subscribe_event(void *instance, 43df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand struct v4l2_event_subscription *sub); 44df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_unsubscribe_event(void *instance, 45df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand struct v4l2_event_subscription *sub); 46df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_dqevent(void *instance, struct v4l2_event *event); 47df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_wait(void *instance); 48df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_s_parm(void *instance, struct v4l2_streamparm *a); 49df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandint msm_vidc_enum_framesizes(void *instance, struct v4l2_frmsizeenum *fsize); 50df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#endif 51df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_interlace_payload { 52df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int format; 53df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 54df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_framerate_payload { 55df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int frame_rate; 56df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 57df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_ts_payload { 58df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int timestamp_lo; 59df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int timestamp_hi; 60df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 61df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_concealmb_payload { 62df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int num_mbs; 63df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 64df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_recoverysei_payload { 65df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int flags; 66df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 67df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 68df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_aspect_ratio_payload { 69df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int size; 70df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int version; 71df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int port_index; 72df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int aspect_width; 73df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int aspect_height; 74df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 75df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 76a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimstruct msm_vidc_mpeg2_seqdisp_payload { 77a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int video_format; 78a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim bool color_descp; 79a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int color_primaries; 80a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int transfer_char; 81a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int matrix_coeffs; 82a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int disp_width; 83a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim unsigned int disp_height; 84a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim}; 85a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim 86df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_panscan_window { 87df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int panscan_height_offset; 88df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int panscan_width_offset; 89df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int panscan_window_width; 90df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int panscan_window_height; 91df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 92df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandstruct msm_vidc_panscan_window_payload { 93df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand unsigned int num_panscan_windows; 94df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand struct msm_vidc_panscan_window wnd[1]; 95df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 96df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandenum msm_vidc_extradata_type { 97df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_NONE = 0x00000000, 98df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_MB_QUANTIZATION = 0x00000001, 99df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_INTERLACE_VIDEO = 0x00000002, 100df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_VC1_FRAMEDISP = 0x00000003, 101df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_VC1_SEQDISP = 0x00000004, 102df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_TIMESTAMP = 0x00000005, 103df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_S3D_FRAME_PACKING = 0x00000006, 104df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_FRAME_RATE = 0x00000007, 105df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_PANSCAN_WINDOW = 0x00000008, 106df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_RECOVERY_POINT_SEI = 0x00000009, 107a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim EXTRADATA_MPEG2_SEQDISP = 0x0000000D, 108df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_MULTISLICE_INFO = 0x7F100000, 109df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_NUM_CONCEALED_MB = 0x7F100001, 110df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_INDEX = 0x7F100002, 111df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_ASPECT_RATIO = 0x7F100003, 112df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand EXTRADATA_METADATA_FILLER = 0x7FE00002, 113df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 114df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandenum msm_vidc_interlace_type { 115df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand INTERLACE_FRAME_PROGRESSIVE = 0x01, 116df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST = 0x02, 117df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST = 0x04, 118df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand INTERLACE_FRAME_TOPFIELDFIRST = 0x08, 119df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand INTERLACE_FRAME_BOTTOMFIELDFIRST = 0x10, 120df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 121df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchandenum msm_vidc_recovery_sei { 122df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand FRAME_RECONSTRUCTION_INCORRECT = 0x0, 123df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand FRAME_RECONSTRUCTION_CORRECT = 0x01, 124df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand FRAME_RECONSTRUCTION_APPROXIMATELY_CORRECT = 0x02, 125df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand}; 126df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand 127df9767d95396dfeb5d621d264110f3e69ed98f57Rom Lemarchand#endif 128