18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_VDEC_H_
28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_VDEC_H_
38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h>
58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_MAGIC 'v'
78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_INITIALIZE   _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_SETBUFFERS   _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_QUEUE        _IOWR(VDEC_IOCTL_MAGIC, 3, \
118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu					struct vdec_input_buf)
128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_REUSEFRAMEBUFFER  _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FLUSH        _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_EOS          _IO(VDEC_IOCTL_MAGIC, 6)
158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETMSG       _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_CLOSE        _IO(VDEC_IOCTL_MAGIC, 8)
178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FREEBUFFERS  _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETDECATTRIBUTES   _IOR(VDEC_IOCTL_MAGIC, 10, \
198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu						struct vdec_dec_attributes)
20f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_GETVERSION   _IOR(VDEC_IOCTL_MAGIC, 11, struct vdec_version)
21f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_SETPROPERTY _IOW \
22f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev   (VDEC_IOCTL_MAGIC, 12, struct vdec_property_info)
23f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_GETPROPERTY _IOR  \
24f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev   (VDEC_IOCTL_MAGIC, 13, struct vdec_property_info)
25f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_PERFORMANCE_CHANGE_REQ  _IOW(VDEC_IOCTL_MAGIC, 14, \
26f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev						unsigned int)
278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_DECODE_OK,
308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_DECODE_ERR,
318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FATAL_ERR,
328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_FINISH,
338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_EOS,
348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_FLUSH,
358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_STREAM_SWITCH,
368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_SUSPEND_FINISH,
378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_CONSUMED
388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_INPUT,
428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_OUTPUT,
438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_ALL
448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INPUT,
488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_OUTPUT,
498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INTERNAL1,
508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INTERNAL2,
518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_SUCCESS,
558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_FAILED,
568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_BADSTATE,
578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
59f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum {
60f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_COLOR_FORMAT_NV21 = 0x01,
61f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_COLOR_FORMAT_NV21_YAMOTO = 0x02
62f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev   };
63f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
64f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum vdec_property_id {
65f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_FOURCC,
66f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_PROFILE,
67f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_LEVEL,
68f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_DIMENSIONS,
69f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_CWIN,
70f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_INPUT_BUF_REQ,
71f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_OUTPUT_BUF_REQ,
72f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_LUMA_CHROMA_STRIDE,
73f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_NUM_DAL_PORTS,
74f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_PRIORITY,
75f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	VDEC_FRAME_ALIGNMENT
76f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
77f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
78f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum {
79f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	PERF_REQUEST_SET_MIN = 0,
80f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	PERF_REQUEST_LOWER,
81f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	PERF_REQUEST_RAISE,
82f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	PERF_REQUEST_SET_MAX
83f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
84f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf_info {
868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;
878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data;
888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 size;
898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_lo;
908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_hi;
918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int avsync_state;
928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 flags;
938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_desc {
968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 bufsize;
978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_min_buffers;
988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_max_buffers;
998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_req {
1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 max_input_queue_size;
1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc input;
1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc output;
1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req1;
1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req2;
1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_region_info {
1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 src_id;
1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;
1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 size;
1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config {
1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fourcc;		/* video format */
1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 width;		/* source width */
1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 height;		/* source height */
1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 order;		/* render decoder order */
1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 notify_enable;	/* enable notify input buffer done event */
1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rowbase;
1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 h264_startcode_detect;
1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 h264_nal_len_size;
1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 postproc_flag;
1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fruc_enable;
126f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 color_format;           /* used to set YUV color format */
1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_vc1_panscan_regions {
1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int num;
1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int width[4];
1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int height[4];
1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int xoffset[4];
1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int yoffset[4];
1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_cropping_window {
1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 x1;
1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 y1;
1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 x2;
1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 y2;
1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_frame_info {
1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 status;		/* video decode status */
1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;		/* buffer offset */
1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data1;		/* user data field 1 */
1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data2;		/* user data field 2 */
1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_lo;	/* lower 32 bits timestamp, in msec */
1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_hi;	/* higher 32 bits timestamp, in msec */
1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int cal_timestamp_lo;	/* lower 32 bits cal timestamp, in msec */
1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int cal_timestamp_hi;	/* higher  32 bits cal timestamp, in msec */
1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_width;		/* frame roi width */
1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_height;		/* frame roi height */
1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_cropping_window cwin;	/* The frame cropping window */
1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_type[2];	/* picture coding type */
1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_format;	/* picture coding format */
1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rangeY;		/* luma range mapping */
1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rangeUV;	/* chroma range mapping */
1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_resolution;	/* scaling factor */
1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 frame_disp_repeat;	/* how often repeated by disp */
1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 repeat_first_field;	/* repeat 1st field after 2nd */
1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 top_field_first;	/* top field displayed first */
1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 interframe_interp;	/* not for inter-frame interp */
1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_vc1_panscan_regions panscan;	/* pan region */
1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 concealed_macblk_num;	/* number of concealed macro blk */
1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 flags;		/* input flags */
1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 performance_stats;	/* performance statistics returned by decoder */
169f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 data3;              /* user data field 3 */
1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_info {
1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 buf_type;
1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_region_info region;
1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_buf;
1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 islast;
1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buffer {
1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 pmem_id;
1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_info buf;
1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_sequence {
1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u8 *header;
1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 len;
1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config_sps {
1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_config cfg;
1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_sequence seq;
1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_REUSEINPUTBUFFER 	1
1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_FRAMEDONE 		2
1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_msg {
1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 id;
1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	union {
2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		/* id = VDEC_MSG_REUSEINPUTBUFFER */
2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		u32 buf_id;
2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		/* id = VDEC_MSG_FRAMEDONE */
2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		struct vdec_frame_info vfr_info;
2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	};
2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_init {
2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_config_sps sps_cfg;
2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_req *buf_req;
2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf {
2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 pmem_id;
2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_input_buf_info buffer;
2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_queue_status *queue_status;
2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_queue_status {
2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 status;
2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_dec_attributes {
2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fourcc;
2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 profile;
2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 level;
2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_pic_width;
2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_pic_height;
2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc input;
2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc output;
2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req1;
2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req2;
2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
235f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct vdec_version {
236f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 major;
237f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 minor;
238f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
239f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
240f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct dal_vdec_rectangle {
241f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 width;
242f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 height;
243f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
244f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
245f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct stride_type {
246f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 luma;
247f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 chroma;
248f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
249f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
250f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct frame_alignment_type {
251f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 luma_width;
252f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 luma_height;
253f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 chroma_width;
254f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 chroma_height;
255f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 chroma_offset;
256f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
257f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
258f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevunion vdec_property {
259f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 fourcc;
260f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 profile;
261f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 level;
262f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct dal_vdec_rectangle dim;
263f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct vdec_cropping_window cw;
264f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct vdec_buf_desc input_req;
265f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct vdec_buf_desc output_req;
266f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct stride_type stride;
267f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 num_dal_ports;
268f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 priority;
269f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	struct frame_alignment_type frame_alignment;
270f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	u32 def_type;
271f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
272f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev
273f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct vdec_property_info {
274f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	enum vdec_property_id id;
275f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev	union vdec_property property;
276f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev};
2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /* _MSM_VDEC_H_ */
278