18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* include/linux/msm_mdp.h 28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * 38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * Copyright (C) 2007 Google Incorporated 4f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved. 58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * 68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * This software is licensed under the terms of the GNU General Public 78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * License version 2, as published by the Free Software Foundation, and 88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * may be copied, distributed, and modified under those terms. 98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * 108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * This program is distributed in the hope that it will be useful, 118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * but WITHOUT ANY WARRANTY; without even the implied warranty of 128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * GNU General Public License for more details. 148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_MDP_H_ 168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_MDP_H_ 178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h> 198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/fb.h> 208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_IOCTL_MAGIC 'm' 228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int) 238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int) 248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int) 258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int) 268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor) 278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap) 288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram_data) 298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* new ioctls's for set/get ccs matrix */ 308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_GET_CCS_MATRIX _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs) 318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_SET_CCS_MATRIX _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs) 328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, \ 338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_overlay) 348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int) 358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, \ 378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_overlay_data) 388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_QUEUE MSMFB_OVERLAY_PLAY 398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, \ 418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_page_protection) 428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, \ 438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_page_protection) 448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_GET _IOR(MSMFB_IOCTL_MAGIC, 140, \ 458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_overlay) 468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_PLAY_ENABLE _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int) 478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_BLT _IOWR(MSMFB_IOCTL_MAGIC, 142, \ 488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_overlay_blt) 498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_BLT_OFFSET _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int) 508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_HISTOGRAM_START _IOR(MSMFB_IOCTL_MAGIC, 144, \ 518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_histogram_start_req) 528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_HISTOGRAM_STOP _IOR(MSMFB_IOCTL_MAGIC, 145, unsigned int) 538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_NOTIFY_UPDATE _IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int) 548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_3D _IOWR(MSMFB_IOCTL_MAGIC, 147, \ 568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_overlay_3d) 578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_MIXER_INFO _IOWR(MSMFB_IOCTL_MAGIC, 148, \ 598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_mixer_info_req) 608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, \ 618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_overlay_data) 628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150) 638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_START _IO(MSMFB_IOCTL_MAGIC, 151) 648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_STOP _IO(MSMFB_IOCTL_MAGIC, 152) 658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, \ 668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data) 678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, \ 688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data) 698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155) 708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp) 718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int) 728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int) 738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_BUFFER_SYNC _IOW(MSMFB_IOCTL_MAGIC, 162, struct mdp_buf_sync) 748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 164, \ 758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_display_commit) 76f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MSMFB_WRITEBACK_SET_MIRRORING_HINT _IOW(MSMFB_IOCTL_MAGIC, 165, \ 77f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev unsigned int) 78f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MSMFB_METADATA_GET _IOW(MSMFB_IOCTL_MAGIC, 166, struct msmfb_metadata) 798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define FB_TYPE_3D_PANEL 0x10101010 818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_IMGTYPE2_START 0x10000 828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DRIVER_VERSION 0xF9E8D701 838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NOTIFY_UPDATE_START, 868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NOTIFY_UPDATE_STOP, 878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_565, /* RGB 565 planer */ 918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_XRGB_8888, /* RGB 888 padded */ 928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planer w/ Cb is in MSB */ 938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2_ADRENO, 948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_ARGB_8888, /* ARGB 888 */ 958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_888, /* RGB 888 planer */ 968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planer w/ Cr is in MSB */ 978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCRYCB_H2V1, /* YCrYCb interleave */ 988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H1V2, 1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H1V2, 1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGBA_8888, /* ARGB 888 */ 1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BGRA_8888, /* ABGR 888 */ 1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGBX_8888, /* RGBX 888 */ 1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V2_TILE, /* Y and CrCb, pseudo planer tile */ 1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2_TILE, /* Y and CbCr, pseudo planer tile */ 1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CR_CB_H2V2, /* Y, Cr and Cb, planar */ 1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CR_CB_GH2V2, /* Y, Cr and Cb, planar aligned to Android YV12 */ 1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */ 1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */ 1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCRCB_H1V1, /* YCrCb interleave */ 1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCBCR_H1V1, /* YCbCr interleave */ 1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BGR_565, /* BGR 565 planer */ 1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_IMGTYPE_LIMIT, 1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_BORDERFILL, /* border fill pipe */ 1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */ 1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ 1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu PMEM_IMG, 1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu FB_IMG, 1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_HUE = 0, 1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_SAT, 1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_INT, 1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_CON, 1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NUM_HSIC_PARAM, 1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDSS_MDP_ROT_ONLY 0x80 1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDSS_MDP_RIGHT_MIXER 0x100 1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* mdp_blit_req flag values */ 1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_NOP 0 1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FLIP_LR 0x1 1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FLIP_UD 0x2 1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_90 0x4 1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR) 1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR) 1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DITHER 0x8 1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLUR 0x10 1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLEND_FG_PREMULT 0x20000 1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DEINTERLACE 0x80000000 1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SHARPENING 0x40000000 1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_DMA_BARRIER_START 0x20000000 1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_DMA_BARRIER_END 0x10000000 1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_BLIT 0x08000000 1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_WITH_DMA_BARRIERS 0x000 1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_WITH_NO_DMA_BARRIERS \ 1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END) 1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_SRC_GEM 0x04000000 1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_DST_GEM 0x02000000 1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_NON_CACHED 0x01000000 1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OV_PIPE_SHARE 0x00800000 1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DEINTERLACE_ODD 0x00400000 1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OV_PLAY_NOWAIT 0x00200000 1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SOURCE_ROTATED_90 0x00100000 1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_CFG_EN 0x00080000 1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BACKEND_COMPOSITION 0x00040000 1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BORDERFILL_SUPPORTED 0x00010000 1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SECURE_OVERLAY_SESSION 0x00008000 1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_MEMORY_ID_TYPE_FB 0x00001000 1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_TRANSP_NOP 0xffffffff 1698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ALPHA_NOP 0xff 1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_NONCACHED (0) 1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1) 1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2) 1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3) 1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4) 1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Sentinel: Don't use! */ 1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_INVALID (5) 1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */ 1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5) 1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_rect { 1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t x; 1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t y; 1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t w; 1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t h; 1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_img { 1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t format; 1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int memory_id; /* the file descriptor */ 1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t priv; 1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * {3x3} + {3} ccs matrix 1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_RGB2YUV 0 2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_YUV2RGB 1 2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_SIZE 9 2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BV_SIZE 3 2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_ccs { 2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int direction; /* MDP_CCS_RGB2YUV or YUV2RGB */ 2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint16_t ccs[MDP_CCS_SIZE]; /* 3x3 color coefficients */ 2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint16_t bv[MDP_BV_SIZE]; /* 1x3 bias vector */ 2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc { 2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int id; 2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_mv[9]; 2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_bv[3]; 2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_bv[3]; 2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_lv[6]; 2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_lv[6]; 2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* The version of the mdp_blit_req structure so that 2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * user applications can selectively decide which functionality 2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * to include 2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_REQ_VERSION 2 2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_blit_req { 2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_img src; 2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_img dst; 2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect src_rect; 2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect dst_rect; 2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t alpha; 2358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t transp_mask; 2368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 2378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int sharpening_strength; /* -127 <--> 127, default 64 */ 2388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_blit_req_list { 2418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t count; 2428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_blit_req req[]; 2438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DATA_VERSION 2 2468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_data { 2488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 2498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int memory_id; 2508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int id; 2518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 2528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t priv; 2538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t iova; 2548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_NEW_REQUEST -1 2578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_data { 2598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t id; 2608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data data; 2618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t version_key; 2628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data plane1_data; 2638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data plane2_data; 2648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data dst_data; 2658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_img { 2688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 2698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 2708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t format; 2718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1 2748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_writeback_data { 2758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data buf_info; 2768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img img; 2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 279f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MDP_PP_OPS_ENABLE 0x1 2808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_PP_OPS_READ 0x2 2818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_PP_OPS_WRITE 0x4 282f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MDP_PP_OPS_DISABLE 0x8 2838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_qseed_cfg { 2858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t table_num; 2868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 2878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t len; 2888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *data; 2898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_qseed_cfg_data { 2928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 2938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg qseed_data; 2948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 296f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_sharp_cfg { 297f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t flags; 298f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t strength; 299f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t edge_thr; 300f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t smooth_thr; 301f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t noise_thr; 302f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 303f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 3048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_CSC_CFG 0x1 3058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_QSEED_CFG 0x2 306f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MDP_OVERLAY_PP_PA_CFG 0x4 307f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MDP_OVERLAY_PP_IGC_CFG 0x8 308f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define MDP_OVERLAY_PP_SHARP_CFG 0x10 3098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_ENABLE 0x1 3118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_YUV_IN 0x2 3128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_YUV_OUT 0x4 3138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc_cfg { 3158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu /* flags for enable CSC, toggling RGB,YUV input/output */ 3168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 3178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_mv[9]; 3188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_bv[3]; 3198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_bv[3]; 3208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_lv[6]; 3218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_lv[6]; 3228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc_cfg_data { 3258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 3268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg csc_data; 3278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 329f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_pa_cfg { 330f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t flags; 331f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t hue_adj; 332f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t sat_adj; 333f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t val_adj; 334f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t cont_adj; 335f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 336f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 337f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_igc_lut_data { 338f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t block; 339f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t len, ops; 340f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t *c0_c1_data; 341f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t *c2_data; 342f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 343f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 3448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_overlay_pp_params { 3458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t config_ops; 3468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg csc_cfg; 3478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg qseed_cfg[2]; 348f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_pa_cfg pa_cfg; 349f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_igc_lut_data igc_cfg; 350f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_sharp_cfg sharp_cfg; 3518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 35376de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmedenum { 35476de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed BLEND_OP_NOT_DEFINED = 0, 35576de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed BLEND_OP_OPAQUE, 35676de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed BLEND_OP_PREMULTIPLIED, 35776de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed BLEND_OP_COVERAGE, 35876de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed BLEND_OP_MAX, 35976de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed}; 36076de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed 3618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_overlay { 3628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img src; 3638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect src_rect; 3648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect dst_rect; 3658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t z_order; /* stage number */ 3668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t is_fg; /* control alpha & transp */ 3678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t alpha; 3688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t transp_mask; 36976de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed uint32_t blend_op; 3708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 3718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t id; 3728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t user_data[8]; 3738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_overlay_pp_params overlay_pp_cfg; 3748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_3d { 3778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t is_3d; 3788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 3798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 3808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_blt { 3848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t enable; 3858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 3868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 3878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 3888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t bpp; 3898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram { 3928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t frame_cnt; 3938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t bin_cnt; 3948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *r; 3958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *g; 3968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *b; 3978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 4018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 402f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev mdp_block_type defines the identifiers for pipes in MDP 4.3 and up 4038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RESERVED is provided for backward compatibility and is 4058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu deprecated. It corresponds to DMA_P. So MDP_BLOCK_DMA_P should be used 4068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu instead. 4078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 408f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_LOGICAL_BLOCK_DISP_0 identifies the display pipe which fb0 uses, 409f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev same for others. 410f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 4118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu*/ 4128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 4148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RESERVED = 0, 4158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_0, 4168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_1, 4178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_VG_1, 4188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_VG_2, 4198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RGB_1, 4208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RGB_2, 4218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_P, 4228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_S, 4238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_E, 4248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_2, 425f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_LOGICAL_BLOCK_DISP_0 = 0x1000, 426f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_LOGICAL_BLOCK_DISP_1, 427f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_LOGICAL_BLOCK_DISP_2, 4288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_MAX, 4298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 4328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * mdp_histogram_start_req is used to provide the parameters for 4338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * histogram start request 4348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 4358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram_start_req { 4378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t frame_cnt; 4398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t bit_mask; 4408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_bins; 4418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 4448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * mdp_histogram_data is used to return the histogram data, once 4458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * the histogram is done/stopped/cance 4468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 4478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram_data { 4498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t bin_cnt; 4518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c0; 4528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c1; 4538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c2; 4548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *extra_info; 4558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pcc_coeff { 4588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1; 4598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pcc_cfg_data { 4628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 4648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pcc_coeff r, g, b; 4658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 4688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_igc, 4698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_pgc, 4708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_hist, 4718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_max, 4728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_ar_gc_lut_data { 4758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t x_start; 4768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t slope; 4778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 4788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pgc_lut_data { 4818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 4838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_r_stages; 4848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_g_stages; 4858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_b_stages; 4868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *r_data; 4878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *g_data; 4888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *b_data; 4898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_hist_lut_data { 4938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 4958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t len; 4968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *data; 4978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_lut_cfg_data { 5008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t lut_type; 5018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union { 5028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_igc_lut_data igc_lut_data; 5038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pgc_lut_data pgc_lut_data; 5048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_hist_lut_data hist_lut_data; 5058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu } data; 5068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_bl_scale_data { 5098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t min_lvl; 5108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t scale; 5118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 513f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_calib_config_data { 514f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t ops; 515f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t addr; 516f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t data; 517f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 518f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 519f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_pa_cfg_data { 520f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t block; 521f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_pa_cfg pa_data; 522f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 523f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 5248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 5258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_pcc_cfg, 5268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_csc_cfg, 5278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_lut_cfg, 5288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_qseed_cfg, 5298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_bl_scale_cfg, 530f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev mdp_op_calib_cfg, 531f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev mdp_op_pa_cfg, 5328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_max, 5338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_mdp_pp { 5368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t op; 5378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union { 5388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pcc_cfg_data pcc_cfg_data; 5398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg_data csc_cfg_data; 5408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_lut_cfg_data lut_cfg_data; 5418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg_data qseed_cfg_data; 5428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_bl_scale_data bl_scale_data; 543f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_calib_config_data calib_cfg; 544f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_pa_cfg_data pa_cfg_data; 545f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev } data; 546f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 547f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 548f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum { 549f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev metadata_op_none, 550f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev metadata_op_base_blend, 551f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev metadata_op_frame_rate, 552f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev metadata_op_max 553f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 554f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 555f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct mdp_blend_cfg { 556f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t is_premultiplied; 557f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 558f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 559f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct msmfb_metadata { 560f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t op; 561f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t flags; 562f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev union { 563f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct mdp_blend_cfg blend_cfg; 564f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev uint32_t panel_frame_rate; 5658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu } data; 5668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_MAX_FENCE_FD 10 5698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BUF_SYNC_FLAG_WAIT 1 5708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_buf_sync { 5728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 5738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t acq_fen_fd_cnt; 5748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int *acq_fen_fd; 5758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int *rel_fen_fd; 57635fdd7afdd77fede06756216ab022f36c049caaaNaseer Ahmed int *retire_fen_fd; 5778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DISPLAY_COMMIT_OVERLAY 0x00000001 5808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_display_commit { 5828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 5838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t wait_for_finish; 5848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct fb_var_screeninfo var; 5858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_page_protection { 5888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t page_protection; 5898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_mixer_info { 5938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int pndx; 5948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int pnum; 5958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int ptype; 5968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int mixer_num; 5978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int z_order; 5988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 60076de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed#define MAX_PIPE_PER_MIXER 5 6018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 6028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_mixer_info_req { 6038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int mixer_num; 6048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int cnt; 6058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_mixer_info info[MAX_PIPE_PER_MIXER]; 6068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 6078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 6088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 6098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu DISPLAY_SUBSYSTEM_ID, 6108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu ROTATOR_SUBSYSTEM_ID, 6118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 6128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 613f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum { 614f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_WRITEBACK_MIRROR_OFF, 615f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_WRITEBACK_MIRROR_ON, 616f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_WRITEBACK_MIRROR_PAUSE, 617f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev MDP_WRITEBACK_MIRROR_RESUME, 618f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 619f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 6208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifdef __KERNEL__ 6218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 6228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* get the framebuffer physical address information */ 6238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num, 6248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int subsys_id); 6258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct fb_info *msm_fb_get_writeback_fb(void); 6268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_init(struct fb_info *info); 6278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_start(struct fb_info *info); 6288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_queue_buffer(struct fb_info *info, 6298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data *data); 6308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_dequeue_buffer(struct fb_info *info, 6318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data *data); 6328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_stop(struct fb_info *info); 6338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_terminate(struct fb_info *info); 6348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif 6358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 6368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /*_MSM_MDP_H_*/ 637