msm_mdp.h revision 92e19fda794d2d9b3a8dcf2301f29b2af4da4b8a
192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* include/linux/msm_mdp.h 292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * 392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * Copyright (C) 2007 Google Incorporated 492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved. 592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * 692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * This software is licensed under the terms of the GNU General Public 792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * License version 2, as published by the Free Software Foundation, and 892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * may be copied, distributed, and modified under those terms. 992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * 1092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * This program is distributed in the hope that it will be useful, 1192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * but WITHOUT ANY WARRANTY; without even the implied warranty of 1292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * GNU General Public License for more details. 1492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 1592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#ifndef _MSM_MDP_H_ 1692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define _MSM_MDP_H_ 1792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 1892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#include <linux/types.h> 1992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#include <linux/fb.h> 2092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 2192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_IOCTL_MAGIC 'm' 2292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int) 2392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int) 2492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_SUSPEND_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 128, unsigned int) 2592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_RESUME_SW_REFRESHER _IOW(MSMFB_IOCTL_MAGIC, 129, unsigned int) 2692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_CURSOR _IOW(MSMFB_IOCTL_MAGIC, 130, struct fb_cursor) 2792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_SET_LUT _IOW(MSMFB_IOCTL_MAGIC, 131, struct fb_cmap) 2892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_HISTOGRAM _IOWR(MSMFB_IOCTL_MAGIC, 132, struct mdp_histogram_data) 2992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* new ioctls's for set/get ccs matrix */ 3092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_GET_CCS_MATRIX _IOWR(MSMFB_IOCTL_MAGIC, 133, struct mdp_ccs) 3192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_SET_CCS_MATRIX _IOW(MSMFB_IOCTL_MAGIC, 134, struct mdp_ccs) 3292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_SET _IOWR(MSMFB_IOCTL_MAGIC, 135, \ 3392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_overlay) 3492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_UNSET _IOW(MSMFB_IOCTL_MAGIC, 136, unsigned int) 3592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 3692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_PLAY _IOW(MSMFB_IOCTL_MAGIC, 137, \ 3792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_overlay_data) 3892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_QUEUE MSMFB_OVERLAY_PLAY 3992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 4092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_GET_PAGE_PROTECTION _IOR(MSMFB_IOCTL_MAGIC, 138, \ 4192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_page_protection) 4292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_SET_PAGE_PROTECTION _IOW(MSMFB_IOCTL_MAGIC, 139, \ 4392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_page_protection) 4492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_GET _IOR(MSMFB_IOCTL_MAGIC, 140, \ 4592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_overlay) 4692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_PLAY_ENABLE _IOW(MSMFB_IOCTL_MAGIC, 141, unsigned int) 4792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_BLT _IOWR(MSMFB_IOCTL_MAGIC, 142, \ 4892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_overlay_blt) 4992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_BLT_OFFSET _IOW(MSMFB_IOCTL_MAGIC, 143, unsigned int) 5092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_HISTOGRAM_START _IOR(MSMFB_IOCTL_MAGIC, 144, \ 5192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_histogram_start_req) 5292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_HISTOGRAM_STOP _IOR(MSMFB_IOCTL_MAGIC, 145, unsigned int) 5392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_NOTIFY_UPDATE _IOW(MSMFB_IOCTL_MAGIC, 146, unsigned int) 5492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 5592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_3D _IOWR(MSMFB_IOCTL_MAGIC, 147, \ 5692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_overlay_3d) 5792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 5892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_MIXER_INFO _IOWR(MSMFB_IOCTL_MAGIC, 148, \ 5992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_mixer_info_req) 6092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_PLAY_WAIT _IOWR(MSMFB_IOCTL_MAGIC, 149, \ 6192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_overlay_data) 6292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_INIT _IO(MSMFB_IOCTL_MAGIC, 150) 6392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_START _IO(MSMFB_IOCTL_MAGIC, 151) 6492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_STOP _IO(MSMFB_IOCTL_MAGIC, 152) 6592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_QUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 153, \ 6692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data) 6792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_DEQUEUE_BUFFER _IOW(MSMFB_IOCTL_MAGIC, 154, \ 6892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data) 6992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_TERMINATE _IO(MSMFB_IOCTL_MAGIC, 155) 7092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_MDP_PP _IOWR(MSMFB_IOCTL_MAGIC, 156, struct msmfb_mdp_pp) 7192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 160, unsigned int) 7292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_VSYNC_CTRL _IOW(MSMFB_IOCTL_MAGIC, 161, unsigned int) 7392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_METADATA_SET _IOW(MSMFB_IOCTL_MAGIC, 162, struct msmfb_metadata) 7492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_COMMIT _IO(MSMFB_IOCTL_MAGIC, 163) 7592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_BUFFER_SYNC _IOW(MSMFB_IOCTL_MAGIC, 164, struct mdp_buf_sync) 7692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 165, \ 7792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_display_commit) 7892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_METADATA_GET _IOW(MSMFB_IOCTL_MAGIC, 166, struct msmfb_metadata) 7992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define FB_TYPE_3D_PANEL 0x10101010 8192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_IMGTYPE2_START 0x10000 8292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_DRIVER_VERSION 0xF9E8D701 8392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 8592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NOTIFY_UPDATE_START, 8692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NOTIFY_UPDATE_STOP, 8792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 8892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 9092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_565, /* RGB 565 planer */ 9192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_XRGB_8888, /* RGB 888 padded */ 9292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planer w/ Cb is in MSB */ 9392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_ADRENO, 9492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_ARGB_8888, /* ARGB 888 */ 9592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_888, /* RGB 888 planer */ 9692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planer w/ Cr is in MSB */ 9792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCRYCB_H2V1, /* YCrYCb interleave */ 9892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 9992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 10092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H1V2, 10192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H1V2, 10292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGBA_8888, /* ARGB 888 */ 10392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGRA_8888, /* ABGR 888 */ 10492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGBX_8888, /* RGBX 888 */ 10592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V2_TILE, /* Y and CrCb, pseudo planer tile */ 10692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_TILE, /* Y and CbCr, pseudo planer tile */ 10792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CR_CB_H2V2, /* Y, Cr and Cb, planar */ 10892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CR_CB_GH2V2, /* Y, Cr and Cb, planar aligned to Android YV12 */ 10992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */ 11092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 11192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */ 11292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCRCB_H1V1, /* YCrCb interleave */ 11392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCBCR_H1V1, /* YCbCr interleave */ 11492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGR_565, /* BGR 565 planer */ 11592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGR_888, /* BGR 888 */ 11692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_VENUS, 11792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGRX_8888, /* BGRX 8888 */ 11892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IMGTYPE_LIMIT, 11992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_BORDERFILL, /* border fill pipe */ 12092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */ 12192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ 12292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 12392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 12492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 12592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling PMEM_IMG, 12692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling FB_IMG, 12792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 12892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 12992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 13092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_HUE = 0, 13192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_SAT, 13292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_INT, 13392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_CON, 13492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NUM_HSIC_PARAM, 13592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 13692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 13792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_MDP_ROT_ONLY 0x80 13892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_MDP_RIGHT_MIXER 0x100 13992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 14092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* mdp_blit_req flag values */ 14192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_NOP 0 14292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FLIP_LR 0x1 14392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FLIP_UD 0x2 14492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_90 0x4 14592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR) 14692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR) 14792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DITHER 0x8 14892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLUR 0x10 14992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLEND_FG_PREMULT 0x20000 15092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_IS_FG 0x40000 15192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DEINTERLACE 0x80000000 15292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SHARPENING 0x40000000 15392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_DMA_BARRIER_START 0x20000000 15492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_DMA_BARRIER_END 0x10000000 15592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_BLIT 0x08000000 15692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_WITH_DMA_BARRIERS 0x000 15792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_WITH_NO_DMA_BARRIERS \ 15892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END) 15992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_SRC_GEM 0x04000000 16092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_DST_GEM 0x02000000 16192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_NON_CACHED 0x01000000 16292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PIPE_SHARE 0x00800000 16392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DEINTERLACE_ODD 0x00400000 16492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PLAY_NOWAIT 0x00200000 16592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SOURCE_ROTATED_90 0x00100000 16692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_CFG_EN 0x00080000 16792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BACKEND_COMPOSITION 0x00040000 16892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BORDERFILL_SUPPORTED 0x00010000 16992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SECURE_OVERLAY_SESSION 0x00008000 17092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PIPE_FORCE_DMA 0x00004000 17192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_MEMORY_ID_TYPE_FB 0x00001000 17292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 17392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_TRANSP_NOP 0xffffffff 17492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ALPHA_NOP 0xff 17592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 17692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_NONCACHED (0) 17792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1) 17892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2) 17992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3) 18092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4) 18192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* Sentinel: Don't use! */ 18292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_INVALID (5) 18392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */ 18492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5) 18592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 18692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_rect { 18792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t x; 18892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t y; 18992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t w; 19092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t h; 19192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 19292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 19392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_img { 19492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 19592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 19692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t format; 19792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 19892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int memory_id; /* the file descriptor */ 19992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t priv; 20092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 20192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 20292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 20392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * {3x3} + {3} ccs matrix 20492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 20592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 20692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_RGB2YUV 0 20792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_YUV2RGB 1 20892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 20992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_SIZE 9 21092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BV_SIZE 3 21192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 21292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_ccs { 21392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int direction; /* MDP_CCS_RGB2YUV or YUV2RGB */ 21492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t ccs[MDP_CCS_SIZE]; /* 3x3 color coefficients */ 21592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t bv[MDP_BV_SIZE]; /* 1x3 bias vector */ 21692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 21792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 21892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc { 21992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int id; 22092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_mv[9]; 22192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_bv[3]; 22292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_bv[3]; 22392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_lv[6]; 22492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_lv[6]; 22592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 22692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 22792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* The version of the mdp_blit_req structure so that 22892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * user applications can selectively decide which functionality 22992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * to include 23092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 23192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 23292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_REQ_VERSION 2 23392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 23492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blit_req { 23592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_img src; 23692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_img dst; 23792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect src_rect; 23892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect dst_rect; 23992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 24092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t transp_mask; 24192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 24292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int sharpening_strength; /* -127 <--> 127, default 64 */ 24392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 24492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 24592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blit_req_list { 24692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t count; 24792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_blit_req req[]; 24892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 24992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 25092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_DATA_VERSION 2 25192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 25292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_data { 25392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 25492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int memory_id; 25592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int id; 25692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 25792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t priv; 25892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t iova; 25992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 26092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 26192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_NEW_REQUEST -1 26292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 26392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_data { 26492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t id; 26592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data data; 26692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t version_key; 26792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data plane1_data; 26892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data plane2_data; 26992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data dst_data; 27092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 27192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 27292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_img { 27392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 27492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 27592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t format; 27692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 27792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 27892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1 27992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_writeback_data { 28092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data buf_info; 28192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_img img; 28292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 28392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 28492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_ENABLE 0x1 28592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_READ 0x2 28692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_WRITE 0x4 28792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_DISABLE 0x8 28892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_IGC_FLAG_ROM0 0x10 28992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_IGC_FLAG_ROM1 0x20 29092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 29192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_DSPP_CFG 0x0000 29292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_SSPP_CFG 0x4000 29392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_LM_CFG 0x8000 29492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_WB_CFG 0xC000 29592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 29692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_LOCATION_MASK 0xC000 29792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_PP_LOGICAL_MASK 0x3FFF 29892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 29992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define PP_LOCAT(var) ((var) & MDSS_PP_LOCATION_MASK) 30092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define PP_BLOCK(var) ((var) & MDSS_PP_LOGICAL_MASK) 30192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 30292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 30392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_qseed_cfg { 30492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t table_num; 30592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 30692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t len; 30792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *data; 30892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 30992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 31092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_sharp_cfg { 31192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 31292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t strength; 31392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t edge_thr; 31492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t smooth_thr; 31592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t noise_thr; 31692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 31792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 31892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_qseed_cfg_data { 31992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 32092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg qseed_data; 32192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 32292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 32392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_CSC_CFG 0x1 32492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_QSEED_CFG 0x2 32592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_PA_CFG 0x4 32692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_IGC_CFG 0x8 32792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_SHARP_CFG 0x10 32892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 32992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_ENABLE 0x1 33092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_YUV_IN 0x2 33192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_YUV_OUT 0x4 33292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 33392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc_cfg { 33492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling /* flags for enable CSC, toggling RGB,YUV input/output */ 33592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 33692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_mv[9]; 33792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_bv[3]; 33892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_bv[3]; 33992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_lv[6]; 34092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_lv[6]; 34192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 34292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 34392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc_cfg_data { 34492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 34592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg csc_data; 34692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 34792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 34892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pa_cfg { 34992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 35092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t hue_adj; 35192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t sat_adj; 35292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t val_adj; 35392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t cont_adj; 35492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 35592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 35692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_igc_lut_data { 35792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 35892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t len, ops; 35992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c0_c1_data; 36092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c2_data; 36192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 36292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 36392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_overlay_pp_params { 36492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t config_ops; 36592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg csc_cfg; 36692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg qseed_cfg[2]; 36792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg pa_cfg; 36892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_igc_lut_data igc_cfg; 36992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_sharp_cfg sharp_cfg; 37092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 37192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 37292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_overlay { 37392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_img src; 37492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect src_rect; 37592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect dst_rect; 37692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t z_order; /* stage number */ 37792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_fg; /* control alpha & transp */ 37892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 37992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t transp_mask; 38092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 38192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t id; 38292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t user_data[8]; 38392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_overlay_pp_params overlay_pp_cfg; 38492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 38592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 38692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_3d { 38792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_3d; 38892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 38992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 39092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 39192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 39292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 39392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_blt { 39492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t enable; 39592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 39692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 39792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 39892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bpp; 39992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 40092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 40192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram { 40292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t frame_cnt; 40392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bin_cnt; 40492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *r; 40592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *g; 40692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *b; 40792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 40892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 40992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 41092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 41192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 41292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_block_type defines the identifiers for pipes in MDP 4.3 and up 41392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 41492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RESERVED is provided for backward compatibility and is 41592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling deprecated. It corresponds to DMA_P. So MDP_BLOCK_DMA_P should be used 41692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling instead. 41792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 41892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_0 identifies the display pipe which fb0 uses, 41992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling same for others. 42092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 42192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling*/ 42292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 42392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 42492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RESERVED = 0, 42592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_0, 42692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_1, 42792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_VG_1, 42892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_VG_2, 42992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RGB_1, 43092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RGB_2, 43192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_P, 43292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_S, 43392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_E, 43492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_2, 43592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_0 = 0x1000, 43692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_1, 43792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_2, 43892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_MAX, 43992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 44092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 44192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 44292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * mdp_histogram_start_req is used to provide the parameters for 44392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * histogram start request 44492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 44592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 44692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram_start_req { 44792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 44892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t frame_cnt; 44992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t bit_mask; 45092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t num_bins; 45192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 45292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 45392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 45492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * mdp_histogram_data is used to return the histogram data, once 45592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * the histogram is done/stopped/cance 45692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 45792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 45892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram_data { 45992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 46092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bin_cnt; 46192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c0; 46292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c1; 46392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c2; 46492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *extra_info; 46592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 46692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 46792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pcc_coeff { 46892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1; 46992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 47092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 47192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pcc_cfg_data { 47292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 47392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 47492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pcc_coeff r, g, b; 47592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 47692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 47792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_GAMUT_TABLE_NUM 8 47892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 47992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 48092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_igc, 48192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_pgc, 48292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_hist, 48392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_max, 48492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 48592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 48692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_ar_gc_lut_data { 48792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t x_start; 48892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t slope; 48992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 49092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 49192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 49292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pgc_lut_data { 49392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 49492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 49592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_r_stages; 49692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_g_stages; 49792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_b_stages; 49892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *r_data; 49992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *g_data; 50092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *b_data; 50192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 50292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 50392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 50492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_hist_lut_data { 50592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 50692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 50792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t len; 50892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *data; 50992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 51092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 51192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_lut_cfg_data { 51292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t lut_type; 51392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 51492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_igc_lut_data igc_lut_data; 51592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pgc_lut_data pgc_lut_data; 51692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_hist_lut_data hist_lut_data; 51792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 51892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 51992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 52092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_bl_scale_data { 52192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t min_lvl; 52292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t scale; 52392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 52492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 52592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pa_cfg_data { 52692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 52792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg pa_data; 52892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 52992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 53092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_dither_cfg_data { 53192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 53292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 53392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t g_y_depth; 53492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t r_cr_depth; 53592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t b_cb_depth; 53692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 53792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 53892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_gamut_cfg_data { 53992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 54092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 54192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t gamut_first; 54292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t tbl_size[MDP_GAMUT_TABLE_NUM]; 54392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *r_tbl[MDP_GAMUT_TABLE_NUM]; 54492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *g_tbl[MDP_GAMUT_TABLE_NUM]; 54592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *b_tbl[MDP_GAMUT_TABLE_NUM]; 54692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 54792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 54892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_calib_config_data { 54992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 55092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t addr; 55192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t data; 55292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 55392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 55492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 55592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_pcc_cfg, 55692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_csc_cfg, 55792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_lut_cfg, 55892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_qseed_cfg, 55992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_bl_scale_cfg, 56092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_pa_cfg, 56192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_dither_cfg, 56292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_gamut_cfg, 56392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_calib_cfg, 56492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_max, 56592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 56692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 56792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 56892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_NV12, 56992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_RGB_565, 57092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_RGB_888, 57192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_xRGB_8888, 57292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_ARGB_8888, 57392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_ARGB_8888_INPUT_ALPHA /* Need to support */ 57492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 57592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 57692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_mdp_pp { 57792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t op; 57892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 57992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pcc_cfg_data pcc_cfg_data; 58092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg_data csc_cfg_data; 58192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_lut_cfg_data lut_cfg_data; 58292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg_data qseed_cfg_data; 58392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_bl_scale_data bl_scale_data; 58492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg_data pa_cfg_data; 58592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_dither_cfg_data dither_cfg_data; 58692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_gamut_cfg_data gamut_cfg_data; 58792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_calib_config_data calib_cfg; 58892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 58992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 59092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 59192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define FB_METADATA_VIDEO_INFO_CODE_SUPPORT 1 59292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 59392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_none, 59492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_base_blend, 59592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_frame_rate, 59692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_vic, 59792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_wb_format, 59892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_max 59992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 60092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 60192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blend_cfg { 60292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_premultiplied; 60392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 60492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 60592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_mixer_cfg { 60692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t writeback_format; 60792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 60892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 60992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 61092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_metadata { 61192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t op; 61292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 61392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 61492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_blend_cfg blend_cfg; 61592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_mixer_cfg mixer_cfg; 61692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t panel_frame_rate; 61792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t video_info_code; 61892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 61992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 62092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 62192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_MAX_FENCE_FD 10 62292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BUF_SYNC_FLAG_WAIT 1 62392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 62492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_buf_sync { 62592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 62692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t acq_fen_fd_cnt; 62792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int *acq_fen_fd; 62892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int *rel_fen_fd; 62992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 63092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 63192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DISPLAY_COMMIT_OVERLAY 1 63292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 63392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_display_commit { 63492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 63592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t wait_for_finish; 63692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct fb_var_screeninfo var; 63792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 63892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 63992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_page_protection { 64092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t page_protection; 64192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 64292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 64392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 64492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_mixer_info { 64592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int pndx; 64692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int pnum; 64792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int ptype; 64892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int mixer_num; 64992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int z_order; 65092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 65192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 65292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MAX_PIPE_PER_MIXER 4 65392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 65492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_mixer_info_req { 65592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int mixer_num; 65692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int cnt; 65792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_mixer_info info[MAX_PIPE_PER_MIXER]; 65892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 65992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 66092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 66192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling DISPLAY_SUBSYSTEM_ID, 66292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling ROTATOR_SUBSYSTEM_ID, 66392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 66492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 66592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 66692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IOMMU_DOMAIN_CP, 66792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IOMMU_DOMAIN_NS, 66892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 66992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 67092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#ifdef __KERNEL__ 67192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_get_iommu_domain(struct fb_info *info, int domain); 67292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* get the framebuffer physical address information */ 67392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num, 67492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int subsys_id); 67592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct fb_info *msm_fb_get_writeback_fb(void); 67692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_init(struct fb_info *info); 67792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_start(struct fb_info *info); 67892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_queue_buffer(struct fb_info *info, 67992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data *data); 68092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_dequeue_buffer(struct fb_info *info, 68192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data *data); 68292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_stop(struct fb_info *info); 68392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_terminate(struct fb_info *info); 68492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_set_secure(struct fb_info *info, int enable); 68592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#endif 68692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 68792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#endif /*_MSM_MDP_H_*/ 688