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) 534071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MSMFB_NOTIFY_UPDATE _IOWR(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) 737738efc2f677583f9b6cd4404154b61ae9baddbdDima Zavin#define MSMFB_BUFFER_SYNC _IOW(MSMFB_IOCTL_MAGIC, 162, struct mdp_buf_sync) 7492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_OVERLAY_COMMIT _IO(MSMFB_IOCTL_MAGIC, 163) 757738efc2f677583f9b6cd4404154b61ae9baddbdDima Zavin#define MSMFB_DISPLAY_COMMIT _IOW(MSMFB_IOCTL_MAGIC, 164, \ 7692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_display_commit) 777738efc2f677583f9b6cd4404154b61ae9baddbdDima Zavin#define MSMFB_METADATA_SET _IOW(MSMFB_IOCTL_MAGIC, 165, struct msmfb_metadata) 7892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_METADATA_GET _IOW(MSMFB_IOCTL_MAGIC, 166, struct msmfb_metadata) 79f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSMFB_WRITEBACK_SET_MIRRORING_HINT _IOW(MSMFB_IOCTL_MAGIC, 167, \ 80f2be60f5864338ca33d569f0086dac301b7066afDevin Kim unsigned int) 814071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MSMFB_ASYNC_BLIT _IOW(MSMFB_IOCTL_MAGIC, 168, unsigned int) 8292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define FB_TYPE_3D_PANEL 0x10101010 8492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_IMGTYPE2_START 0x10000 8592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_DRIVER_VERSION 0xF9E8D701 8692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 8892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NOTIFY_UPDATE_START, 8992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NOTIFY_UPDATE_STOP, 903d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed NOTIFY_UPDATE_POWER_OFF, 9192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 9292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 9392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 944071280488d3a261c39278b404aacc8701daef3eBongkyu Kim NOTIFY_TYPE_NO_UPDATE, 954071280488d3a261c39278b404aacc8701daef3eBongkyu Kim NOTIFY_TYPE_SUSPEND, 964071280488d3a261c39278b404aacc8701daef3eBongkyu Kim NOTIFY_TYPE_UPDATE, 974071280488d3a261c39278b404aacc8701daef3eBongkyu Kim}; 984071280488d3a261c39278b404aacc8701daef3eBongkyu Kim 994071280488d3a261c39278b404aacc8701daef3eBongkyu Kimenum { 10092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_565, /* RGB 565 planer */ 10192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_XRGB_8888, /* RGB 888 padded */ 10292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2, /* Y and CbCr, pseudo planer w/ Cb is in MSB */ 10392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_ADRENO, 10492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_ARGB_8888, /* ARGB 888 */ 10592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_888, /* RGB 888 planer */ 10692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V2, /* Y and CrCb, pseudo planer w/ Cr is in MSB */ 10792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCRYCB_H2V1, /* YCrYCb interleave */ 1087738efc2f677583f9b6cd4404154b61ae9baddbdDima Zavin MDP_CBYCRY_H2V1, /* CbYCrY interleave */ 10992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 11092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 11192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H1V2, 11292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H1V2, 11392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGBA_8888, /* ARGB 888 */ 11492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGRA_8888, /* ABGR 888 */ 11592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGBX_8888, /* RGBX 888 */ 11692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H2V2_TILE, /* Y and CrCb, pseudo planer tile */ 11792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_TILE, /* Y and CbCr, pseudo planer tile */ 11892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CR_CB_H2V2, /* Y, Cr and Cb, planar */ 11992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CR_CB_GH2V2, /* Y, Cr and Cb, planar aligned to Android YV12 */ 12092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CB_CR_H2V2, /* Y, Cb and Cr, planar */ 12192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CRCB_H1V1, /* Y and CrCb, pseduo planer w/ Cr is in MSB */ 12292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H1V1, /* Y and CbCr, pseduo planer w/ Cb is in MSB */ 12392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCRCB_H1V1, /* YCrCb interleave */ 12492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_YCBCR_H1V1, /* YCbCr interleave */ 12592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGR_565, /* BGR 565 planer */ 12692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGR_888, /* BGR 888 */ 12792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_Y_CBCR_H2V2_VENUS, 12892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BGRX_8888, /* BGRX 8888 */ 1295fb1aea7caade679d59ba57745660571ca191bb8Iliyan Malchev MDP_YCBYCR_H2V1, /* YCbYCr interleave */ 13092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IMGTYPE_LIMIT, 13192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_RGB_BORDERFILL, /* border fill pipe */ 13292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_FB_FORMAT = MDP_IMGTYPE2_START, /* framebuffer format */ 13392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IMGTYPE_LIMIT2 /* Non valid image type after this enum */ 13492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 13592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 13692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 13792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling PMEM_IMG, 13892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling FB_IMG, 13992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 14092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 14192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 14292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_HUE = 0, 14392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_SAT, 14492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_INT, 14592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling HSIC_CON, 14692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling NUM_HSIC_PARAM, 14792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 14892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 14992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_MDP_ROT_ONLY 0x80 15092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDSS_MDP_RIGHT_MIXER 0x100 1515fb1aea7caade679d59ba57745660571ca191bb8Iliyan Malchev#define MDSS_MDP_DUAL_PIPE 0x200 15292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 15392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* mdp_blit_req flag values */ 15492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_NOP 0 15592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FLIP_LR 0x1 15692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FLIP_UD 0x2 15792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_90 0x4 15892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR) 15992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR) 16092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DITHER 0x8 16192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLUR 0x10 16292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLEND_FG_PREMULT 0x20000 16392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_IS_FG 0x40000 16492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DEINTERLACE 0x80000000 16592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SHARPENING 0x40000000 16692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_DMA_BARRIER_START 0x20000000 16792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_DMA_BARRIER_END 0x10000000 16892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NO_BLIT 0x08000000 16992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_WITH_DMA_BARRIERS 0x000 17092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_WITH_NO_DMA_BARRIERS \ 17192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling (MDP_NO_DMA_BARRIER_START | MDP_NO_DMA_BARRIER_END) 17292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_SRC_GEM 0x04000000 17392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_DST_GEM 0x02000000 17492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_NON_CACHED 0x01000000 17592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PIPE_SHARE 0x00800000 17692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DEINTERLACE_ODD 0x00400000 17792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PLAY_NOWAIT 0x00200000 17892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SOURCE_ROTATED_90 0x00100000 17992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_CFG_EN 0x00080000 18092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BACKEND_COMPOSITION 0x00040000 18192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BORDERFILL_SUPPORTED 0x00010000 18292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_SECURE_OVERLAY_SESSION 0x00008000 18392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OV_PIPE_FORCE_DMA 0x00004000 18492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_MEMORY_ID_TYPE_FB 0x00001000 185f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_BWC_EN 0x00000400 186f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_DECIMATION_EN 0x00000800 18792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_TRANSP_NOP 0xffffffff 18892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_ALPHA_NOP 0xff 18992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 19092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_NONCACHED (0) 19192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITECOMBINE (1) 19292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITETHROUGHCACHE (2) 19392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITEBACKCACHE (3) 19492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_WRITEBACKWACACHE (4) 19592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* Sentinel: Don't use! */ 19692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_FB_PAGE_PROTECTION_INVALID (5) 19792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* Count of the number of MDP_FB_PAGE_PROTECTION_... values. */ 19892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_NUM_FB_PAGE_PROTECTION_VALUES (5) 19992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 20092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_rect { 20192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t x; 20292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t y; 20392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t w; 20492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t h; 20592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 20692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 20792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_img { 20892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 20992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 21092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t format; 21192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 21292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int memory_id; /* the file descriptor */ 21392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t priv; 21492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 21592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 21692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 21792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * {3x3} + {3} ccs matrix 21892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 21992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 22092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_RGB2YUV 0 22192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_YUV2RGB 1 22292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 22392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CCS_SIZE 9 22492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BV_SIZE 3 22592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 22692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_ccs { 22792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int direction; /* MDP_CCS_RGB2YUV or YUV2RGB */ 22892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t ccs[MDP_CCS_SIZE]; /* 3x3 color coefficients */ 22992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t bv[MDP_BV_SIZE]; /* 1x3 bias vector */ 23092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 23192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 23292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc { 23392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int id; 23492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_mv[9]; 23592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_bv[3]; 23692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_bv[3]; 23792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_lv[6]; 23892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_lv[6]; 23992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 24092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 24192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* The version of the mdp_blit_req structure so that 24292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * user applications can selectively decide which functionality 24392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * to include 24492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 24592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 24692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BLIT_REQ_VERSION 2 24792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 24892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blit_req { 24992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_img src; 25092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_img dst; 25192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect src_rect; 25292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect dst_rect; 25392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 25492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t transp_mask; 25592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 25692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int sharpening_strength; /* -127 <--> 127, default 64 */ 25792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 25892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 25992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blit_req_list { 26092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t count; 26192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_blit_req req[]; 26292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 26392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 26492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_DATA_VERSION 2 26592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 26692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_data { 26792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 26892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int memory_id; 26992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int id; 27092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 27192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t priv; 27292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t iova; 27392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 27492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 27592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_NEW_REQUEST -1 27692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 27792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_data { 27892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t id; 27992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data data; 28092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t version_key; 28192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data plane1_data; 28292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data plane2_data; 28392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data dst_data; 28492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 28592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 28692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_img { 28792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 28892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 28992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t format; 29092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 29192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 29292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MSMFB_WRITEBACK_DEQUEUE_BLOCKING 0x1 29392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_writeback_data { 29492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data buf_info; 29592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_img img; 29692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 29792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 29892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_ENABLE 0x1 29992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_READ 0x2 30092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_WRITE 0x4 30192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_OPS_DISABLE 0x8 30292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_IGC_FLAG_ROM0 0x10 30392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_PP_IGC_FLAG_ROM1 0x20 30492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 305f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_DSPP_CFG 0x000 306f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_SSPP_CFG 0x100 307f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_LM_CFG 0x200 308f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_WB_CFG 0x300 30992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 310f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_ARG_MASK 0x3C00 311f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_ARG_NUM 4 312f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_ARG_SHIFT 10 313f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_LOCATION_MASK 0x0300 314f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_LOGICAL_MASK 0x00FF 31592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 316f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_PP_ADD_ARG(var, arg) ((var) | (0x1 << (MDSS_PP_ARG_SHIFT + (arg)))) 317f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define PP_ARG(x, var) ((var) & (0x1 << (MDSS_PP_ARG_SHIFT + (x)))) 31892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define PP_LOCAT(var) ((var) & MDSS_PP_LOCATION_MASK) 31992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define PP_BLOCK(var) ((var) & MDSS_PP_LOGICAL_MASK) 32092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 32192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 32292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_qseed_cfg { 32392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t table_num; 32492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 32592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t len; 32692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *data; 32792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 32892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 32992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_sharp_cfg { 33092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 33192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t strength; 33292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t edge_thr; 33392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t smooth_thr; 33492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t noise_thr; 33592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 33692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 33792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_qseed_cfg_data { 33892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 33992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg qseed_data; 34092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 34192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 34292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_CSC_CFG 0x1 34392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_QSEED_CFG 0x2 34492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_PA_CFG 0x4 34592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_IGC_CFG 0x8 34692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_OVERLAY_PP_SHARP_CFG 0x10 347f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_OVERLAY_PP_HIST_CFG 0x20 348f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_OVERLAY_PP_HIST_LUT_CFG 0x40 34992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 35092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_ENABLE 0x1 35192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_YUV_IN 0x2 35292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_CSC_FLAG_YUV_OUT 0x4 35392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 35492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc_cfg { 35592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling /* flags for enable CSC, toggling RGB,YUV input/output */ 35692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 35792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_mv[9]; 35892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_bv[3]; 35992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_bv[3]; 36092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_pre_lv[6]; 36192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t csc_post_lv[6]; 36292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 36392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 36492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_csc_cfg_data { 36592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 36692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg csc_data; 36792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 36892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 36992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pa_cfg { 37092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 37192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t hue_adj; 37292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t sat_adj; 37392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t val_adj; 37492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t cont_adj; 37592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 37692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 37792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_igc_lut_data { 37892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 37992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t len, ops; 38092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c0_c1_data; 38192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c2_data; 38292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 38392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 384f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdp_histogram_cfg { 385f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t ops; 386f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t block; 387f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t frame_cnt; 388f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t bit_mask; 389f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t num_bins; 390f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 391f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 392f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdp_hist_lut_data { 393f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t block; 394f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t ops; 395f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t len; 396f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t *data; 397f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 398f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 39992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_overlay_pp_params { 40092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t config_ops; 40192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg csc_cfg; 40292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg qseed_cfg[2]; 40392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg pa_cfg; 40492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_igc_lut_data igc_cfg; 40592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_sharp_cfg sharp_cfg; 406f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdp_histogram_cfg hist_cfg; 407f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdp_hist_lut_data hist_lut_cfg; 40892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 40992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 4103d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed/** 4113d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * enum mdss_mdp_blend_op - Different blend operations set by userspace 4123d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * 4133d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * @BLEND_OP_NOT_DEFINED: No blend operation defined for the layer. 4143d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * @BLEND_OP_OPAQUE: Apply a constant blend operation. The layer 4153d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * would appear opaque in case fg plane alpha is 4163d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * 0xff. 4173d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * @BLEND_OP_PREMULTIPLIED: Apply source over blend rule. Layer already has 4183d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * alpha pre-multiplication done. If fg plane alpha 4193d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * is less than 0xff, apply modulation as well. This 4203d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * operation is intended on layers having alpha 4213d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * channel. 4223d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * @BLEND_OP_COVERAGE: Apply source over blend rule. Layer is not alpha 4233d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * pre-multiplied. Apply pre-multiplication. If fg 4243d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * plane alpha is less than 0xff, apply modulation as 4253d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * well. 4263d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * @BLEND_OP_MAX: Used to track maximum blend operation possible by 4273d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed * mdp. 4283d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed */ 4293d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmedenum mdss_mdp_blend_op { 4303d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed BLEND_OP_NOT_DEFINED = 0, 4313d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed BLEND_OP_OPAQUE, 4323d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed BLEND_OP_PREMULTIPLIED, 4333d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed BLEND_OP_COVERAGE, 4343d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed BLEND_OP_MAX, 4353d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed}; 4363d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed 43792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_overlay { 43892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_img src; 43992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect src_rect; 44092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_rect dst_rect; 44192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t z_order; /* stage number */ 44292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_fg; /* control alpha & transp */ 44392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 4443d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed uint32_t blend_op; 44592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t transp_mask; 44692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 44792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t id; 448f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t user_data[7]; 449f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t horz_deci; 450f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t vert_deci; 45192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_overlay_pp_params overlay_pp_cfg; 45292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 45392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 45492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_3d { 45592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_3d; 45692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 45792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 45892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 45992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 46092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 46192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_overlay_blt { 46292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t enable; 46392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 46492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t width; 46592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t height; 46692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bpp; 46792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 46892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 46992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram { 47092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t frame_cnt; 47192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bin_cnt; 47292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *r; 47392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *g; 47492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *b; 47592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 47692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 477a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimenum { 478a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_EDP, 479a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_DSI0, 480a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_DSI1, 481a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_HDMI, 482a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_LCDC, 483a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_ATV, 484a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_DSI_CMD, 485a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim DISPLAY_MISR_MAX 486a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim}; 487a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim 488a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimenum { 489a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim MISR_OP_NONE, 490a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim MISR_OP_SFM, 491a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim MISR_OP_MFM, 492a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim MISR_OP_BM, 493a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim MISR_OP_MAX 494a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim}; 495a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim 496a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimstruct mdp_misr { 497a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t block_id; 498a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t frame_count; 499a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t crc_op_mode; 500a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t crc_value[32]; 501a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim}; 50292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 50392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 50492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 50592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_block_type defines the identifiers for pipes in MDP 4.3 and up 50692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 50792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RESERVED is provided for backward compatibility and is 50892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling deprecated. It corresponds to DMA_P. So MDP_BLOCK_DMA_P should be used 50992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling instead. 51092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 51192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_0 identifies the display pipe which fb0 uses, 51292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling same for others. 51392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 51492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling*/ 51592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 51692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 51792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RESERVED = 0, 51892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_0, 51992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_1, 52092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_VG_1, 52192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_VG_2, 52292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RGB_1, 52392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_RGB_2, 52492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_P, 52592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_S, 52692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_DMA_E, 52792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_OVERLAY_2, 528f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MDP_LOGICAL_BLOCK_DISP_0 = 0x10, 52992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_1, 53092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_LOGICAL_BLOCK_DISP_2, 53192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_BLOCK_MAX, 53292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 53392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 53492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 53592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * mdp_histogram_start_req is used to provide the parameters for 53692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * histogram start request 53792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 53892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 53992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram_start_req { 54092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 54192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t frame_cnt; 54292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t bit_mask; 54392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t num_bins; 54492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 54592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 54692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* 54792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * mdp_histogram_data is used to return the histogram data, once 54892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling * the histogram is done/stopped/cance 54992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling */ 55092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 55192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_histogram_data { 55292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 55392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t bin_cnt; 55492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c0; 55592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c1; 55692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *c2; 55792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t *extra_info; 55892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 55992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 56092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pcc_coeff { 56192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1; 56292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 56392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 56492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pcc_cfg_data { 56592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 56692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 56792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pcc_coeff r, g, b; 56892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 56992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 57092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_GAMUT_TABLE_NUM 8 57192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 57292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 57392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_igc, 57492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_pgc, 57592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_hist, 57692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_lut_max, 57792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 57892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 57992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_ar_gc_lut_data { 58092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t x_start; 58192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t slope; 58292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t offset; 58392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 58492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 58592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pgc_lut_data { 58692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 58792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 58892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_r_stages; 58992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_g_stages; 59092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint8_t num_b_stages; 59192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *r_data; 59292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *g_data; 59392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_ar_gc_lut_data *b_data; 59492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 59592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 59692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 59792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_lut_cfg_data { 59892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t lut_type; 59992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 60092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_igc_lut_data igc_lut_data; 60192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pgc_lut_data pgc_lut_data; 60292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_hist_lut_data hist_lut_data; 60392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 60492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 60592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 60692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_bl_scale_data { 60792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t min_lvl; 60892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t scale; 60992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 61092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 61192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_pa_cfg_data { 61292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 61392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg pa_data; 61492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 61592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 61692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_dither_cfg_data { 61792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 61892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 61992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t g_y_depth; 62092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t r_cr_depth; 62192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t b_cb_depth; 62292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 62392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 62492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_gamut_cfg_data { 62592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t block; 62692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 62792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t gamut_first; 62892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t tbl_size[MDP_GAMUT_TABLE_NUM]; 62992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *r_tbl[MDP_GAMUT_TABLE_NUM]; 63092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *g_tbl[MDP_GAMUT_TABLE_NUM]; 63192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint16_t *b_tbl[MDP_GAMUT_TABLE_NUM]; 63292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 63392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 63492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_calib_config_data { 63592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t ops; 63692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t addr; 63792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t data; 63892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 63992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 6407a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kimstruct mdp_calib_config_buffer { 6417a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim uint32_t ops; 6427a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim uint32_t size; 6437a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim uint32_t *buffer; 6447a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim}; 6457a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim 6463d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmedstruct mdp_calib_dcm_state { 6473d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed uint32_t ops; 6483d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed uint32_t dcm_state; 6493d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed}; 6503d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed 6513d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmedenum { 6523d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed DCM_UNINIT, 6533d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed DCM_UNBLANK, 6543d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed DCM_ENTER, 6553d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed DCM_EXIT, 6563d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed DCM_BLANK, 6573d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed}; 6583d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed 659a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim#define MDSS_MAX_BL_BRIGHTNESS 255 660a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim#define AD_BL_LIN_LEN (MDSS_MAX_BL_BRIGHTNESS + 1) 661a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim 662f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_AD_MODE_AUTO_BL 0x0 663f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_AD_MODE_AUTO_STR 0x1 664f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_AD_MODE_TARG_STR 0x3 665f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDSS_AD_MODE_MAN_STR 0x7 6664071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MDSS_AD_MODE_CALIB 0xF 667f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 668f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_PP_AD_INIT 0x10 669f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MDP_PP_AD_CFG 0x20 670f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 671f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdss_ad_init { 672f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t asym_lut[33]; 673f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t color_corr_lut[33]; 674f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t i_control[2]; 675f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t black_lvl; 676f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t white_lvl; 677f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t var; 678f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t limit_ampl; 679f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t i_dither; 680f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t slope_max; 681f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t slope_min; 682f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t dither_ctl; 683f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t format; 684f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t auto_size; 685f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t frame_w; 686f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t frame_h; 687f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t logo_v; 688f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t logo_h; 689a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t bl_lin_len; 690a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t *bl_lin; 691a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t *bl_lin_inv; 692f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 693f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 6944071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MDSS_AD_BL_CTRL_MODE_EN 1 6954071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MDSS_AD_BL_CTRL_MODE_DIS 0 696f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdss_ad_cfg { 697f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t mode; 698f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t al_calib_lut[33]; 699f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t backlight_min; 700f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t backlight_max; 701f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t backlight_scale; 702f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t amb_light_min; 703f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t filter[2]; 704f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t calib[4]; 705f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t strength_limit; 706f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint8_t t_filter_recursion; 707f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint16_t stab_itr; 7084071280488d3a261c39278b404aacc8701daef3eBongkyu Kim uint32_t bl_ctrl_mode; 709f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 710f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 711f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* ops uses standard MDP_PP_* flags */ 712f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdss_ad_init_cfg { 713f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t ops; 714f2be60f5864338ca33d569f0086dac301b7066afDevin Kim union { 715f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdss_ad_init init; 716f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdss_ad_cfg cfg; 717f2be60f5864338ca33d569f0086dac301b7066afDevin Kim } params; 718f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 719f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 720f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* mode uses MDSS_AD_MODE_* flags */ 721f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct mdss_ad_input { 722f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t mode; 723f2be60f5864338ca33d569f0086dac301b7066afDevin Kim union { 724f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t amb_light; 725f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t strength; 7264071280488d3a261c39278b404aacc8701daef3eBongkyu Kim uint32_t calib_bl; 727f2be60f5864338ca33d569f0086dac301b7066afDevin Kim } in; 728f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t output; 729f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 730f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 7314071280488d3a261c39278b404aacc8701daef3eBongkyu Kim#define MDSS_CALIB_MODE_BL 0x1 732a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimstruct mdss_calib_cfg { 733a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t ops; 734a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim uint32_t calib_mask; 735a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim}; 736a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim 73792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 73892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_pcc_cfg, 73992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_csc_cfg, 74092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_lut_cfg, 74192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_qseed_cfg, 74292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_bl_scale_cfg, 74392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_pa_cfg, 74492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_dither_cfg, 74592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_gamut_cfg, 74692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_calib_cfg, 747f2be60f5864338ca33d569f0086dac301b7066afDevin Kim mdp_op_ad_cfg, 748f2be60f5864338ca33d569f0086dac301b7066afDevin Kim mdp_op_ad_input, 749a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim mdp_op_calib_mode, 7507a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim mdp_op_calib_buffer, 7513d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed mdp_op_calib_dcm_state, 75292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling mdp_op_max, 75392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 75492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 75592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 75692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_NV12, 75792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_RGB_565, 75892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_RGB_888, 75992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_xRGB_8888, 76092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_ARGB_8888, 7613d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed WB_FORMAT_BGRA_8888, 7623d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed WB_FORMAT_BGRX_8888, 76392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling WB_FORMAT_ARGB_8888_INPUT_ALPHA /* Need to support */ 76492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 76592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 76692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_mdp_pp { 76792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t op; 76892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 76992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pcc_cfg_data pcc_cfg_data; 77092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_csc_cfg_data csc_cfg_data; 77192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_lut_cfg_data lut_cfg_data; 77292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_qseed_cfg_data qseed_cfg_data; 77392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_bl_scale_data bl_scale_data; 77492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_pa_cfg_data pa_cfg_data; 77592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_dither_cfg_data dither_cfg_data; 77692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_gamut_cfg_data gamut_cfg_data; 77792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_calib_config_data calib_cfg; 778f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdss_ad_init_cfg ad_init_cfg; 779a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim struct mdss_calib_cfg mdss_calib_cfg; 780f2be60f5864338ca33d569f0086dac301b7066afDevin Kim struct mdss_ad_input ad_input; 7817a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim struct mdp_calib_config_buffer calib_buffer; 7823d163e306eece14820da529b2d9e98f8d6b269eaNaseer Ahmed struct mdp_calib_dcm_state calib_dcm; 78392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 78492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 78592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 78692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define FB_METADATA_VIDEO_INFO_CODE_SUPPORT 1 78792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 78892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_none, 78992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_base_blend, 79092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_frame_rate, 79192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_vic, 79292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_wb_format, 793882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed metadata_op_get_caps, 794a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim metadata_op_crc, 79592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling metadata_op_max 79692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 79792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 79892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_blend_cfg { 79992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t is_premultiplied; 80092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 80192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 80292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_mixer_cfg { 80392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t writeback_format; 80492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t alpha; 80592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 80692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 807882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmedstruct mdss_hw_caps { 808882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed uint32_t mdp_rev; 809882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed uint8_t rgb_pipes; 810882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed uint8_t vig_pipes; 811882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed uint8_t dma_pipes; 812f2be60f5864338ca33d569f0086dac301b7066afDevin Kim uint32_t features; 813882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed}; 814882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed 81592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_metadata { 81692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t op; 81792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 81892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling union { 819a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim struct mdp_misr misr_request; 82092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_blend_cfg blend_cfg; 82192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_mixer_cfg mixer_cfg; 82292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t panel_frame_rate; 82392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t video_info_code; 824882a818673cabdb635f3d8aad88839b58109a2e6Naseer Ahmed struct mdss_hw_caps caps; 82592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling } data; 82692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 82792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 828edb781a7a5d53bac3e131a89c929aa7b72eaf965Devin Kim#define MDP_MAX_FENCE_FD 32 82992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_BUF_SYNC_FLAG_WAIT 1 83092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 83192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_buf_sync { 83292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 83392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t acq_fen_fd_cnt; 8345fb1aea7caade679d59ba57745660571ca191bb8Iliyan Malchev uint32_t session_id; 83592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int *acq_fen_fd; 83692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int *rel_fen_fd; 837f381cb18448e109379fcf6af8f887776de7c3343Naseer Ahmed int *retire_fen_fd; 83892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 83992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 8404071280488d3a261c39278b404aacc8701daef3eBongkyu Kimstruct mdp_async_blit_req_list { 8414071280488d3a261c39278b404aacc8701daef3eBongkyu Kim struct mdp_buf_sync sync; 8424071280488d3a261c39278b404aacc8701daef3eBongkyu Kim uint32_t count; 8434071280488d3a261c39278b404aacc8701daef3eBongkyu Kim struct mdp_blit_req req[]; 8444071280488d3a261c39278b404aacc8701daef3eBongkyu Kim}; 8454071280488d3a261c39278b404aacc8701daef3eBongkyu Kim 84692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MDP_DISPLAY_COMMIT_OVERLAY 1 84792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 84892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_display_commit { 84992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t flags; 85092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t wait_for_finish; 85192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct fb_var_screeninfo var; 85292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 85392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 85492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_page_protection { 85592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling uint32_t page_protection; 85692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 85792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 85892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 85992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct mdp_mixer_info { 86092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int pndx; 86192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int pnum; 86292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int ptype; 86392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int mixer_num; 86492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int z_order; 86592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 86692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 86792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#define MAX_PIPE_PER_MIXER 4 86892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 86992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct msmfb_mixer_info_req { 87092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int mixer_num; 87192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int cnt; 87292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct mdp_mixer_info info[MAX_PIPE_PER_MIXER]; 87392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 87492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 87592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 87692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling DISPLAY_SUBSYSTEM_ID, 87792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling ROTATOR_SUBSYSTEM_ID, 87892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 87992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 88092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingenum { 88192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IOMMU_DOMAIN_CP, 88292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling MDP_IOMMU_DOMAIN_NS, 88392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling}; 88492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 885f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum { 886f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MDP_WRITEBACK_MIRROR_OFF, 887f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MDP_WRITEBACK_MIRROR_ON, 888f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MDP_WRITEBACK_MIRROR_PAUSE, 889f2be60f5864338ca33d569f0086dac301b7066afDevin Kim MDP_WRITEBACK_MIRROR_RESUME, 890f2be60f5864338ca33d569f0086dac301b7066afDevin Kim}; 891f2be60f5864338ca33d569f0086dac301b7066afDevin Kim 89292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#ifdef __KERNEL__ 89392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_get_iommu_domain(struct fb_info *info, int domain); 89492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling/* get the framebuffer physical address information */ 89592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint get_fb_phys_info(unsigned long *start, unsigned long *len, int fb_num, 89692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling int subsys_id); 89792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingstruct fb_info *msm_fb_get_writeback_fb(void); 89892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_init(struct fb_info *info); 89992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_start(struct fb_info *info); 90092e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_queue_buffer(struct fb_info *info, 90192e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data *data); 90292e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_dequeue_buffer(struct fb_info *info, 90392e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling struct msmfb_data *data); 90492e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_stop(struct fb_info *info); 90592e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_terminate(struct fb_info *info); 90692e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gillingint msm_fb_writeback_set_secure(struct fb_info *info, int enable); 90792e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#endif 90892e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling 90992e19fda794d2d9b3a8dcf2301f29b2af4da4b8aErik Gilling#endif /*_MSM_MDP_H_*/ 910