msm_mdp.h revision 8611d5578ff014a1415b26e75e63aecbc4ad266c
18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* include/linux/msm_mdp.h 28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * 38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * Copyright (C) 2007 Google Incorporated 48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * Copyright (c) 2012 Code Aurora Forum. 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 758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 164, \ 768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_display_commit) 778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define FB_TYPE_3D_PANEL 0x10101010 798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_IMGTYPE2_START 0x10000 808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DRIVER_VERSION 0xF9E8D701 818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NOTIFY_UPDATE_START, 848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NOTIFY_UPDATE_STOP, 858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_565, /* RGB 565 planer */ 898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_XRGB_8888, /* RGB 888 padded */ 908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planer w/ Cb is in MSB */ 918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2_ADRENO, 928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_ARGB_8888, /* ARGB 888 */ 938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_888, /* RGB 888 planer */ 948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planer w/ Cr is in MSB */ 958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCRYCB_H2V1, /* YCrYCb interleave */ 968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H1V2, 998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H1V2, 1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGBA_8888, /* ARGB 888 */ 1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BGRA_8888, /* ABGR 888 */ 1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGBX_8888, /* RGBX 888 */ 1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H2V2_TILE, /* Y and CrCb, pseudo planer tile */ 1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H2V2_TILE, /* Y and CbCr, pseudo planer tile */ 1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CR_CB_H2V2, /* Y, Cr and Cb, planar */ 1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CR_CB_GH2V2, /* Y, Cr and Cb, planar aligned to Android YV12 */ 1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */ 1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */ 1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCRCB_H1V1, /* YCrCb interleave */ 1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_YCBCR_H1V1, /* YCbCr interleave */ 1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BGR_565, /* BGR 565 planer */ 1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_IMGTYPE_LIMIT, 1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_RGB_BORDERFILL, /* border fill pipe */ 1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */ 1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ 1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu PMEM_IMG, 1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu FB_IMG, 1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_HUE = 0, 1268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_SAT, 1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_INT, 1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu HSIC_CON, 1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu NUM_HSIC_PARAM, 1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDSS_MDP_ROT_ONLY 0x80 1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDSS_MDP_RIGHT_MIXER 0x100 1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* mdp_blit_req flag values */ 1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_NOP 0 1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FLIP_LR 0x1 1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FLIP_UD 0x2 1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_90 0x4 1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR) 1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR) 1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DITHER 0x8 1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLUR 0x10 1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLEND_FG_PREMULT 0x20000 1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DEINTERLACE 0x80000000 1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SHARPENING 0x40000000 1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_DMA_BARRIER_START 0x20000000 1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_DMA_BARRIER_END 0x10000000 1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NO_BLIT 0x08000000 1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_WITH_DMA_BARRIERS 0x000 1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_WITH_NO_DMA_BARRIERS \ 1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END) 1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_SRC_GEM 0x04000000 1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_DST_GEM 0x02000000 1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_NON_CACHED 0x01000000 1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OV_PIPE_SHARE 0x00800000 1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DEINTERLACE_ODD 0x00400000 1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OV_PLAY_NOWAIT 0x00200000 1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SOURCE_ROTATED_90 0x00100000 1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_CFG_EN 0x00080000 1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BACKEND_COMPOSITION 0x00040000 1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BORDERFILL_SUPPORTED 0x00010000 1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_SECURE_OVERLAY_SESSION 0x00008000 1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_MEMORY_ID_TYPE_FB 0x00001000 1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_TRANSP_NOP 0xffffffff 1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_ALPHA_NOP 0xff 1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_NONCACHED (0) 1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1) 1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2) 1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3) 1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4) 1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Sentinel: Don't use! */ 1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_FB_PAGE_PROTECTION_INVALID (5) 1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */ 1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5) 1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_rect { 1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t x; 1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t y; 1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t w; 1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t h; 1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_img { 1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t format; 1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int memory_id; /* the file descriptor */ 1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t priv; 1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * {3x3} + {3} ccs matrix 1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_RGB2YUV 0 2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_YUV2RGB 1 2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CCS_SIZE 9 2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BV_SIZE 3 2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_ccs { 2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int direction; /* MDP_CCS_RGB2YUV or YUV2RGB */ 2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint16_t ccs[MDP_CCS_SIZE]; /* 3x3 color coefficients */ 2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint16_t bv[MDP_BV_SIZE]; /* 1x3 bias vector */ 2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc { 2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int id; 2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_mv[9]; 2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_bv[3]; 2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_bv[3]; 2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_lv[6]; 2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_lv[6]; 2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* The version of the mdp_blit_req structure so that 2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * user applications can selectively decide which functionality 2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * to include 2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BLIT_REQ_VERSION 2 2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_blit_req { 2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_img src; 2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_img dst; 2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect src_rect; 2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect dst_rect; 2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t alpha; 2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t transp_mask; 2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 2358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int sharpening_strength; /* -127 <--> 127, default 64 */ 2368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_blit_req_list { 2398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t count; 2408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_blit_req req[]; 2418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_DATA_VERSION 2 2448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_data { 2468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 2478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int memory_id; 2488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int id; 2498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 2508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t priv; 2518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t iova; 2528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_NEW_REQUEST -1 2558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_data { 2578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t id; 2588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data data; 2598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t version_key; 2608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data plane1_data; 2618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data plane2_data; 2628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data dst_data; 2638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_img { 2668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 2678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 2688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t format; 2698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1 2728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_writeback_data { 2738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data buf_info; 2748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img img; 2758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_PP_OPS_READ 0x2 2788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_PP_OPS_WRITE 0x4 2798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_qseed_cfg { 2818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t table_num; 2828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 2838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t len; 2848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *data; 2858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_qseed_cfg_data { 2888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 2898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg qseed_data; 2908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_CSC_CFG 0x1 2938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_OVERLAY_PP_QSEED_CFG 0x2 2948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_ENABLE 0x1 2968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_YUV_IN 0x2 2978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_CSC_FLAG_YUV_OUT 0x4 2988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc_cfg { 3008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu /* flags for enable CSC, toggling RGB,YUV input/output */ 3018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 3028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_mv[9]; 3038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_bv[3]; 3048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_bv[3]; 3058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_pre_lv[6]; 3068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t csc_post_lv[6]; 3078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_csc_cfg_data { 3108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 3118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg csc_data; 3128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_overlay_pp_params { 3158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t config_ops; 3168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg csc_cfg; 3178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg qseed_cfg[2]; 3188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_overlay { 3218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img src; 3228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect src_rect; 3238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect dst_rect; 3248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t z_order; /* stage number */ 3258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t is_fg; /* control alpha & transp */ 3268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t alpha; 3278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t transp_mask; 3288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 3298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t id; 3308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t user_data[8]; 3318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_overlay_pp_params overlay_pp_cfg; 3328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_3d { 3358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t is_3d; 3368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 3378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 3388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_overlay_blt { 3428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t enable; 3438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 3448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t width; 3458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t height; 3468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t bpp; 3478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram { 3508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t frame_cnt; 3518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t bin_cnt; 3528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *r; 3538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *g; 3548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *b; 3558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 3598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_block_type defines the identifiers for each of pipes in MDP 4.3 3618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RESERVED is provided for backward compatibility and is 3638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu deprecated. It corresponds to DMA_P. So MDP_BLOCK_DMA_P should be used 3648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu instead. 3658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu*/ 3678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 3698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RESERVED = 0, 3708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_0, 3718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_1, 3728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_VG_1, 3738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_VG_2, 3748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RGB_1, 3758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_RGB_2, 3768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_P, 3778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_S, 3788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_DMA_E, 3798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_OVERLAY_2, 3808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu MDP_BLOCK_MAX, 3818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 3848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * mdp_histogram_start_req is used to provide the parameters for 3858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * histogram start request 3868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 3878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram_start_req { 3898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 3908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t frame_cnt; 3918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t bit_mask; 3928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_bins; 3938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 3948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 3958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* 3968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * mdp_histogram_data is used to return the histogram data, once 3978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu * the histogram is done/stopped/cance 3988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu */ 3998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_histogram_data { 4018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t bin_cnt; 4038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c0; 4048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c1; 4058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c2; 4068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *extra_info; 4078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pcc_coeff { 4108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1; 4118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pcc_cfg_data { 4148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 4168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pcc_coeff r, g, b; 4178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 4208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_igc, 4218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_pgc, 4228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_hist, 4238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_lut_max, 4248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_igc_lut_data { 4278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t len, ops; 4298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c0_c1_data; 4308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *c2_data; 4318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_ar_gc_lut_data { 4348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t x_start; 4358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t slope; 4368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t offset; 4378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_pgc_lut_data { 4408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 4428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_r_stages; 4438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_g_stages; 4448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint8_t num_b_stages; 4458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *r_data; 4468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *g_data; 4478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_ar_gc_lut_data *b_data; 4488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_hist_lut_data { 4528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t block; 4538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t ops; 4548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t len; 4558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t *data; 4568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_lut_cfg_data { 4598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t lut_type; 4608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union { 4618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_igc_lut_data igc_lut_data; 4628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pgc_lut_data pgc_lut_data; 4638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_hist_lut_data hist_lut_data; 4648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu } data; 4658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_bl_scale_data { 4688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t min_lvl; 4698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t scale; 4708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 4738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_pcc_cfg, 4748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_csc_cfg, 4758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_lut_cfg, 4768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_qseed_cfg, 4778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_bl_scale_cfg, 4788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu mdp_op_max, 4798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_mdp_pp { 4828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t op; 4838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union { 4848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_pcc_cfg_data pcc_cfg_data; 4858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_csc_cfg_data csc_cfg_data; 4868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_lut_cfg_data lut_cfg_data; 4878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_qseed_cfg_data qseed_cfg_data; 4888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_bl_scale_data bl_scale_data; 4898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu } data; 4908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 4918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_MAX_FENCE_FD 10 4938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_BUF_SYNC_FLAG_WAIT 1 4948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 4958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_buf_sync { 4968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 4978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t acq_fen_fd_cnt; 4988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int *acq_fen_fd; 4998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int *rel_fen_fd; 5008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_buf_fence { 5038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 5048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t acq_fen_fd_cnt; 5058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int acq_fen_fd[MDP_MAX_FENCE_FD]; 5068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int rel_fen_fd[MDP_MAX_FENCE_FD]; 5078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MDP_DISPLAY_COMMIT_OVERLAY 0x00000001 5108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_display_commit { 5128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t flags; 5138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t wait_for_finish; 5148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct fb_var_screeninfo var; 5158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_buf_fence buf_fence; 5168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_page_protection { 5198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu uint32_t page_protection; 5208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct mdp_mixer_info { 5248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int pndx; 5258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int pnum; 5268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int ptype; 5278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int mixer_num; 5288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int z_order; 5298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MAX_PIPE_PER_MIXER 4 5328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msmfb_mixer_info_req { 5348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int mixer_num; 5358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int cnt; 5368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_mixer_info info[MAX_PIPE_PER_MIXER]; 5378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 5408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu DISPLAY_SUBSYSTEM_ID, 5418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu ROTATOR_SUBSYSTEM_ID, 5428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 5438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifdef __KERNEL__ 5458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu/* get the framebuffer physical address information */ 5478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num, 5488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int subsys_id); 5498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct fb_info *msm_fb_get_writeback_fb(void); 5508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_init(struct fb_info *info); 5518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_start(struct fb_info *info); 5528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_queue_buffer(struct fb_info *info, 5538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data *data); 5548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_dequeue_buffer(struct fb_info *info, 5558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data *data); 5568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_stop(struct fb_info *info); 5578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuint msm_fb_writeback_terminate(struct fb_info *info); 5588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif 5598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 5608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /*_MSM_MDP_H_*/ 561