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