msm_q6vdec.h revision 8611d5578ff014a1415b26e75e63aecbc4ad266c
18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * Redistribution and use in source and binary forms, with or without
48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * modification, are permitted provided that the following conditions are met:
58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *     * Redistributions of source code must retain the above copyright
68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       notice, this list of conditions and the following disclaimer.
78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *     * Redistributions in binary form must reproduce the above copyright
88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       notice, this list of conditions and the following disclaimer in the
98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       documentation and/or other materials provided with the distribution.
108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *     * Neither the name of Code Aurora nor
118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       the names of its contributors may be used to endorse or promote
128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       products derived from this software without specific prior written
138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *       permission.
148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu *
278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */
288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_VDEC_H_
308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_VDEC_H_
318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h>
338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_MAGIC 'v'
358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_INITIALIZE   _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_SETBUFFERS   _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_QUEUE        _IOWR(VDEC_IOCTL_MAGIC, 3, \
398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu					struct vdec_input_buf)
408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_REUSEFRAMEBUFFER  _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FLUSH        _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_EOS          _IO(VDEC_IOCTL_MAGIC, 6)
438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETMSG       _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_CLOSE        _IO(VDEC_IOCTL_MAGIC, 8)
458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FREEBUFFERS  _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETDECATTRIBUTES   _IOR(VDEC_IOCTL_MAGIC, 10, \
478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu						struct vdec_dec_attributes)
488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_DECODE_OK,
518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_DECODE_ERR,
528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FATAL_ERR,
538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_FINISH,
548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_EOS,
558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FRAME_FLUSH,
568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_STREAM_SWITCH,
578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_SUSPEND_FINISH,
588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_CONSUMED
598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_INPUT,
638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_OUTPUT,
648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_FLUSH_ALL
658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INPUT,
698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_OUTPUT,
708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INTERNAL1,
718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_BUFFER_TYPE_INTERNAL2,
728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum {
758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_SUCCESS,
768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_FAILED,
778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	VDEC_QUEUE_BADSTATE,
788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf_info {
818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;
828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data;
838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 size;
848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_lo;
858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_hi;
868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int avsync_state;
878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 flags;
888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_desc {
918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 bufsize;
928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_min_buffers;
938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_max_buffers;
948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_req {
978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 max_input_queue_size;
988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc input;
998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc output;
1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req1;
1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req2;
1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_region_info {
1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 src_id;
1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;
1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 size;
1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config {
1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fourcc;		/* video format */
1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 width;		/* source width */
1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 height;		/* source height */
1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 order;		/* render decoder order */
1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 notify_enable;	/* enable notify input buffer done event */
1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rowbase;
1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 h264_startcode_detect;
1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 h264_nal_len_size;
1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 postproc_flag;
1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fruc_enable;
1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 reserved;
1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_vc1_panscan_regions {
1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int num;
1268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int width[4];
1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int height[4];
1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int xoffset[4];
1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int yoffset[4];
1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_cropping_window {
1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 x1;
1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 y1;
1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 x2;
1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 y2;
1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_frame_info {
1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 status;		/* video decode status */
1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 offset;		/* buffer offset */
1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data1;		/* user data field 1 */
1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data2;		/* user data field 2 */
1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_lo;	/* lower 32 bits timestamp, in msec */
1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int timestamp_hi;	/* higher 32 bits timestamp, in msec */
1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int cal_timestamp_lo;	/* lower 32 bits cal timestamp, in msec */
1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	int cal_timestamp_hi;	/* higher  32 bits cal timestamp, in msec */
1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_width;		/* frame roi width */
1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_height;		/* frame roi height */
1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_cropping_window cwin;	/* The frame cropping window */
1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_type[2];	/* picture coding type */
1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_format;	/* picture coding format */
1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rangeY;		/* luma range mapping */
1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 vc1_rangeUV;	/* chroma range mapping */
1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 picture_resolution;	/* scaling factor */
1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 frame_disp_repeat;	/* how often repeated by disp */
1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 repeat_first_field;	/* repeat 1st field after 2nd */
1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 top_field_first;	/* top field displayed first */
1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 interframe_interp;	/* not for inter-frame interp */
1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_vc1_panscan_regions panscan;	/* pan region */
1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 concealed_macblk_num;	/* number of concealed macro blk */
1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 flags;		/* input flags */
1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 performance_stats;	/* performance statistics returned by decoder */
1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 data3;		/* user data field 3 */
1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_info {
1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 buf_type;
1698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_region_info region;
1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 num_buf;
1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 islast;
1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buffer {
1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 pmem_id;
1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_info buf;
1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_sequence {
1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u8 *header;
1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 len;
1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config_sps {
1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_config cfg;
1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_sequence seq;
1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_REUSEINPUTBUFFER 	1
1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_FRAMEDONE 		2
1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_msg {
1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 id;
1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	union {
1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		/* id = VDEC_MSG_REUSEINPUTBUFFER */
1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		u32 buf_id;
1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		/* id = VDEC_MSG_FRAMEDONE */
1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu		struct vdec_frame_info vfr_info;
2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	};
2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_init {
2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_config_sps sps_cfg;
2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_req *buf_req;
2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf {
2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 pmem_id;
2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_input_buf_info buffer;
2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_queue_status *queue_status;
2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_queue_status {
2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 status;
2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_dec_attributes {
2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 fourcc;
2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 profile;
2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 level;
2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_pic_width;
2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	u32 dec_pic_height;
2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc input;
2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc output;
2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req1;
2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu	struct vdec_buf_desc dec_req2;
2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu};
2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu
2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /* _MSM_VDEC_H_ */
231