15bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* include/linux/msm_mdp.h
25bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson *
35bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * Copyright (C) 2007 Google Incorporated
45bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
55bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson *
65bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * This software is licensed under the terms of the GNU General Public
75bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * License version 2, as published by the Free Software Foundation, and
85bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * may be copied, distributed, and modified under those terms.
95bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson *
105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * This program is distributed in the hope that it will be useful,
115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * but WITHOUT ANY WARRANTY; without even the implied warranty of
125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * GNU General Public License for more details.
145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson */
155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#ifndef _MSM_MDP_H_
165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define _MSM_MDP_H_
175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#include <linux/types.h>
195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#include <linux/fb.h>
205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_IOCTL_MAGIC 'm'
225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_GRP_DISP          _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_BLIT              _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int)
255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int)
265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor)
275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap)
285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram_data)
295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* new ioctls's for set/get ccs matrix */
305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_GET_CCS_MATRIX  _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs)
315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_SET_CCS_MATRIX  _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs)
325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_SET       _IOWR(MSMFB_IOCTL_MAGIC, 135, \
335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct mdp_overlay)
345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_UNSET     _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int)
355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_PLAY      _IOW(MSMFB_IOCTL_MAGIC, 137, \
375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_overlay_data)
385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_QUEUE	MSMFB_OVERLAY_PLAY
395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, \
415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson					struct mdp_page_protection)
425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, \
435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson					struct mdp_page_protection)
445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_GET      _IOR(MSMFB_IOCTL_MAGIC, 140, \
455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct mdp_overlay)
465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_PLAY_ENABLE     _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int)
475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_BLT       _IOWR(MSMFB_IOCTL_MAGIC, 142, \
485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_overlay_blt)
495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_BLT_OFFSET     _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int)
505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_HISTOGRAM_START	_IOR(MSMFB_IOCTL_MAGIC, 144, \
515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct mdp_histogram_start_req)
525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_HISTOGRAM_STOP	_IOR(MSMFB_IOCTL_MAGIC, 145, unsigned int)
535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_NOTIFY_UPDATE	_IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int)
545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_3D       _IOWR(MSMFB_IOCTL_MAGIC, 147, \
565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_overlay_3d)
575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_MIXER_INFO       _IOWR(MSMFB_IOCTL_MAGIC, 148, \
595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_mixer_info_req)
605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, \
615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_overlay_data)
625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150)
635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_START _IO(MSMFB_IOCTL_MAGIC, 151)
645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_STOP _IO(MSMFB_IOCTL_MAGIC, 152)
655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, \
665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_data)
675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, \
685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct msmfb_data)
695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155)
705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp)
715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int)
725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_VSYNC_CTRL  _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int)
735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_BUFFER_SYNC  _IOW(MSMFB_IOCTL_MAGIC, 162, struct mdp_buf_sync)
745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_DISPLAY_COMMIT      _IOW(MSMFB_IOCTL_MAGIC, 164, \
755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson						struct mdp_display_commit)
765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_METADATA_GET  _IOW(MSMFB_IOCTL_MAGIC, 166, struct msmfb_metadata)
775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define FB_TYPE_3D_PANEL 0x10101010
795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_IMGTYPE2_START 0x10000
805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_DRIVER_VERSION	0xF9E8D701
815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	NOTIFY_UPDATE_START,
845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	NOTIFY_UPDATE_STOP,
855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
865bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
875bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
885bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_RGB_565,      /* RGB 565 planer */
895bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_XRGB_8888,    /* RGB 888 padded */
905bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H2V2,  /* Y and CbCr, pseudo planer w/ Cb is in MSB */
915bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H2V2_ADRENO,
925bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_ARGB_8888,    /* ARGB 888 */
935bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_RGB_888,      /* RGB 888 planer */
945bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CRCB_H2V2,  /* Y and CrCb, pseudo planer w/ Cr is in MSB */
955bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_YCRYCB_H2V1,  /* YCrYCb interleave */
965bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CRCB_H2V1,  /* Y and CrCb, pseduo planer w/ Cr is in MSB */
975bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H2V1,   /* Y and CrCb, pseduo planer w/ Cr is in MSB */
985bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CRCB_H1V2,
995bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H1V2,
1005bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_RGBA_8888,    /* ARGB 888 */
1015bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BGRA_8888,	  /* ABGR 888 */
1025bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_RGBX_8888,	  /* RGBX 888 */
1035bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CRCB_H2V2_TILE,  /* Y and CrCb, pseudo planer tile */
1045bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H2V2_TILE,  /* Y and CbCr, pseudo planer tile */
1055bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CR_CB_H2V2,  /* Y, Cr and Cb, planar */
1065bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CR_CB_GH2V2,  /* Y, Cr and Cb, planar aligned to Android YV12 */
1075bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CB_CR_H2V2,  /* Y, Cb and Cr, planar */
1085bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CRCB_H1V1,  /* Y and CrCb, pseduo planer w/ Cr is in MSB */
1095bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_Y_CBCR_H1V1,  /* Y and CbCr, pseduo planer w/ Cb is in MSB */
1105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_YCRCB_H1V1,   /* YCrCb interleave */
1115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_YCBCR_H1V1,   /* YCbCr interleave */
1125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BGR_565,      /* BGR 565 planer */
1135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_IMGTYPE_LIMIT,
1145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_RGB_BORDERFILL,	/* border fill pipe */
1155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_FB_FORMAT = MDP_IMGTYPE2_START,    /* framebuffer format */
1165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */
1175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
1185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
1205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	PMEM_IMG,
1215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	FB_IMG,
1225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
1235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
1255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	HSIC_HUE = 0,
1265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	HSIC_SAT,
1275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	HSIC_INT,
1285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	HSIC_CON,
1295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	NUM_HSIC_PARAM,
1305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
1315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDSS_MDP_ROT_ONLY		0x80
1335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDSS_MDP_RIGHT_MIXER		0x100
1345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* mdp_blit_req flag values */
1365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_ROT_NOP 0
1375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FLIP_LR 0x1
1385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FLIP_UD 0x2
1395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_ROT_90 0x4
1405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR)
1415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
1425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_DITHER 0x8
1435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLUR 0x10
1445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLEND_FG_PREMULT 0x20000
1455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_DEINTERLACE 0x80000000
1465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_SHARPENING  0x40000000
1475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_NO_DMA_BARRIER_START	0x20000000
1485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_NO_DMA_BARRIER_END		0x10000000
1495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_NO_BLIT			0x08000000
1505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_WITH_DMA_BARRIERS	0x000
1515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_WITH_NO_DMA_BARRIERS    \
1525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	(MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END)
1535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_SRC_GEM                0x04000000
1545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_DST_GEM                0x02000000
1555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_NON_CACHED		0x01000000
1565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_OV_PIPE_SHARE		0x00800000
1575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_DEINTERLACE_ODD		0x00400000
1585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_OV_PLAY_NOWAIT		0x00200000
1595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_SOURCE_ROTATED_90		0x00100000
1605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_OVERLAY_PP_CFG_EN		0x00080000
1615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BACKEND_COMPOSITION		0x00040000
1625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BORDERFILL_SUPPORTED	0x00010000
1635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_SECURE_OVERLAY_SESSION      0x00008000
1645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_MEMORY_ID_TYPE_FB		0x00001000
1655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_TRANSP_NOP 0xffffffff
1675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_ALPHA_NOP 0xff
1685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_NONCACHED         (0)
1705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE      (1)
1715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2)
1725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE    (3)
1735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE  (4)
1745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* Sentinel: Don't use! */
1755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_FB_PAGE_PROTECTION_INVALID           (5)
1765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */
1775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_NUM_FB_PAGE_PROTECTION_VALUES        (5)
1785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_rect {
1805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t x;
1815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t y;
1825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t w;
1835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t h;
1845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
1855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1865bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_img {
1875bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t width;
1885bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t height;
1895bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t format;
1905bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t offset;
1915bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int memory_id;		/* the file descriptor */
1925bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t priv;
1935bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
1945bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1955bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/*
1965bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * {3x3} + {3} ccs matrix
1975bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson */
1985bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
1995bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CCS_RGB2YUV 	0
2005bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CCS_YUV2RGB 	1
2015bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2025bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CCS_SIZE	9
2035bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BV_SIZE	3
2045bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2055bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_ccs {
2065bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int direction;			/* MDP_CCS_RGB2YUV or YUV2RGB */
2075bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint16_t ccs[MDP_CCS_SIZE];	/* 3x3 color coefficients */
2085bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint16_t bv[MDP_BV_SIZE];	/* 1x3 bias vector */
2095bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_csc {
2125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int id;
2135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_mv[9];
2145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_pre_bv[3];
2155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_post_bv[3];
2165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_pre_lv[6];
2175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_post_lv[6];
2185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* The version of the mdp_blit_req structure so that
2215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * user applications can selectively decide which functionality
2225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * to include
2235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson */
2245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BLIT_REQ_VERSION 2
2265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_blit_req {
2285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_img src;
2295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_img dst;
2305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_rect src_rect;
2315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_rect dst_rect;
2325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t alpha;
2335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t transp_mask;
2345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
2355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int sharpening_strength;  /* -127 <--> 127, default 64 */
2365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_blit_req_list {
2395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t count;
2405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_blit_req req[];
2415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_DATA_VERSION 2
2445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_data {
2465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t offset;
2475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int memory_id;
2485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int id;
2495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
2505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t priv;
2515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t iova;
2525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_NEW_REQUEST -1
2555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_overlay_data {
2575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t id;
2585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_data data;
2595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t version_key;
2605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_data plane1_data;
2615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_data plane2_data;
2625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_data dst_data;
2635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_img {
2665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t width;
2675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t height;
2685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t format;
2695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1
2725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_writeback_data {
2735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_data buf_info;
2745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_img img;
2755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_PP_OPS_READ 0x2
2785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_PP_OPS_WRITE 0x4
2795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_qseed_cfg {
2815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t table_num;
2825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t ops;
2835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t len;
2845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *data;
2855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2865bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2875bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_qseed_cfg_data {
2885bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
2895bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_qseed_cfg qseed_data;
2905bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
2915bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2925bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_OVERLAY_PP_CSC_CFG      0x1
2935bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_OVERLAY_PP_QSEED_CFG    0x2
2945bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2955bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CSC_FLAG_ENABLE	0x1
2965bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CSC_FLAG_YUV_IN	0x2
2975bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_CSC_FLAG_YUV_OUT	0x4
2985bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
2995bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_csc_cfg {
3005bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	/* flags for enable CSC, toggling RGB,YUV input/output */
3015bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
3025bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_mv[9];
3035bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_pre_bv[3];
3045bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_post_bv[3];
3055bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_pre_lv[6];
3065bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t csc_post_lv[6];
3075bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3085bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3095bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_csc_cfg_data {
3105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
3115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_csc_cfg csc_data;
3125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_overlay_pp_params {
3155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t config_ops;
3165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_csc_cfg csc_cfg;
3175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_qseed_cfg qseed_cfg[2];
3185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_overlay {
3215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct msmfb_img src;
3225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_rect src_rect;
3235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_rect dst_rect;
3245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t z_order;	/* stage number */
3255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t is_fg;		/* control alpha & transp */
3265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t alpha;
3275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t transp_mask;
3285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
3295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t id;
3305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t user_data[8];
3315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_overlay_pp_params overlay_pp_cfg;
3325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_overlay_3d {
3355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t is_3d;
3365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t width;
3375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t height;
3385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_overlay_blt {
3425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t enable;
3435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t offset;
3445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t width;
3455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t height;
3465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t bpp;
3475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_histogram {
3505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t frame_cnt;
3515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t bin_cnt;
3525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *r;
3535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *g;
3545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *b;
3555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/*
3595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_block_type defines the identifiers for pipes in MDP 4.3 and up
3615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_RESERVED is provided for backward compatibility and is
3635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	deprecated. It corresponds to DMA_P. So MDP_BLOCK_DMA_P should be used
3645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	instead.
3655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_LOGICAL_BLOCK_DISP_0 identifies the display pipe which fb0 uses,
3675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	same for others.
3685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson*/
3705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
3725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_RESERVED = 0,
3735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_OVERLAY_0,
3745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_OVERLAY_1,
3755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_VG_1,
3765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_VG_2,
3775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_RGB_1,
3785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_RGB_2,
3795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_DMA_P,
3805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_DMA_S,
3815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_DMA_E,
3825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_OVERLAY_2,
3835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_LOGICAL_BLOCK_DISP_0 = 0x1000,
3845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_LOGICAL_BLOCK_DISP_1,
3855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_LOGICAL_BLOCK_DISP_2,
3865bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	MDP_BLOCK_MAX,
3875bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
3885bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3895bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/*
3905bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * mdp_histogram_start_req is used to provide the parameters for
3915bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * histogram start request
3925bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson */
3935bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
3945bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_histogram_start_req {
3955bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
3965bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t frame_cnt;
3975bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t bit_mask;
3985bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t num_bins;
3995bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4005bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4015bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/*
4025bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * mdp_histogram_data is used to return the histogram data, once
4035bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson * the histogram is done/stopped/cance
4045bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson */
4055bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4065bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_histogram_data {
4075bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
4085bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t bin_cnt;
4095bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *c0;
4105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *c1;
4115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *c2;
4125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *extra_info;
4135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_pcc_coeff {
4165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1;
4175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_pcc_cfg_data {
4205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
4215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t ops;
4225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_pcc_coeff r, g, b;
4235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
4265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_lut_igc,
4275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_lut_pgc,
4285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_lut_hist,
4295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_lut_max,
4305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_igc_lut_data {
4335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
4345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t len, ops;
4355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *c0_c1_data;
4365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *c2_data;
4375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_ar_gc_lut_data {
4405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t x_start;
4415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t slope;
4425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t offset;
4435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_pgc_lut_data {
4465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
4475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
4485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t num_r_stages;
4495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t num_g_stages;
4505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint8_t num_b_stages;
4515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_ar_gc_lut_data *r_data;
4525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_ar_gc_lut_data *g_data;
4535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_ar_gc_lut_data *b_data;
4545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_hist_lut_data {
4585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t block;
4595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t ops;
4605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t len;
4615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t *data;
4625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_lut_cfg_data {
4655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t lut_type;
4665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	union {
4675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_igc_lut_data igc_lut_data;
4685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_pgc_lut_data pgc_lut_data;
4695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_hist_lut_data hist_lut_data;
4705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	} data;
4715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_bl_scale_data {
4745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t min_lvl;
4755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t scale;
4765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
4795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_op_pcc_cfg,
4805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_op_csc_cfg,
4815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_op_lut_cfg,
4825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_op_qseed_cfg,
4835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_bl_scale_cfg,
4845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	mdp_op_max,
4855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4865bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4875bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_mdp_pp {
4885bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t op;
4895bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	union {
4905bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_pcc_cfg_data pcc_cfg_data;
4915bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_csc_cfg_data csc_cfg_data;
4925bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_lut_cfg_data lut_cfg_data;
4935bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_qseed_cfg_data qseed_cfg_data;
4945bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_bl_scale_data bl_scale_data;
4955bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	} data;
4965bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
4975bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
4985bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
4995bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	metadata_op_none,
5005bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	metadata_op_base_blend,
5015bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	metadata_op_frame_rate,
5025bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	metadata_op_max
5035bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5045bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5055bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_blend_cfg {
5065bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t is_premultiplied;
5075bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5085bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5095bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_metadata {
5105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t op;
5115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
5125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	union {
5135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct mdp_blend_cfg blend_cfg;
5145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		uint32_t panel_frame_rate;
5155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	} data;
5165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_MAX_FENCE_FD	10
5195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_BUF_SYNC_FLAG_WAIT	1
5205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_buf_sync {
5225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
5235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t acq_fen_fd_cnt;
5245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int *acq_fen_fd;
5255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int *rel_fen_fd;
5265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_buf_fence {
5295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
5305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t acq_fen_fd_cnt;
5315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int acq_fen_fd[MDP_MAX_FENCE_FD];
5325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int rel_fen_fd[MDP_MAX_FENCE_FD];
5335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MDP_DISPLAY_COMMIT_OVERLAY 0x00000001
5365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_display_commit {
5385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t flags;
5395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t wait_for_finish;
5405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct fb_var_screeninfo var;
5415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_page_protection {
5445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	uint32_t page_protection;
5455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct mdp_mixer_info {
5495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int pndx;
5505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int pnum;
5515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int ptype;
5525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int mixer_num;
5535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int z_order;
5545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MAX_PIPE_PER_MIXER  4
5575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msmfb_mixer_info_req {
5595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int mixer_num;
5605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int cnt;
5615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	struct mdp_mixer_info info[MAX_PIPE_PER_MIXER];
5625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5635bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5645bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum {
5655bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	DISPLAY_SUBSYSTEM_ID,
5665bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	ROTATOR_SUBSYSTEM_ID,
5675bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson};
5685bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5695bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#ifdef __KERNEL__
5705bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5715bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson/* get the framebuffer physical address information */
5725bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num,
5735bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson	int subsys_id);
5745bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct fb_info *msm_fb_get_writeback_fb(void);
5755bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_init(struct fb_info *info);
5765bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_start(struct fb_info *info);
5775bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_queue_buffer(struct fb_info *info,
5785bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct msmfb_data *data);
5795bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_dequeue_buffer(struct fb_info *info,
5805bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson		struct msmfb_data *data);
5815bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_stop(struct fb_info *info);
5825bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonint msm_fb_writeback_terminate(struct fb_info *info);
5835bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#endif
5845bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson
5855bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#endif /*_MSM_MDP_H_*/
586