1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef _EXYNOSMPPTYPE_H 18 #define _EXYNOSMPPTYPE_H 19 20 #include <system/graphics.h> 21 #include "DeconHeader.h" 22 23 /* 24 * physical types 25 * Resources are sorted by physical type. 26 * Resource that has smaller type value is assigned first. 27 */ 28 typedef enum { 29 MPP_DPP_G = 0, 30 MPP_DPP_GF, 31 MPP_DPP_VG, 32 MPP_DPP_VGS, 33 MPP_DPP_VGF, 34 MPP_DPP_VGFS, 35 MPP_DPP_VGRFS, 36 /* DPP count */ 37 /* If you add DPP, You should increase this value */ 38 MPP_DPP_NUM = 7, 39 40 MPP_MSC = 7, 41 MPP_G2D, 42 MPP_P_TYPE_MAX 43 } mpp_phycal_type_t; 44 45 /* logical types */ 46 typedef enum { 47 MPP_LOGICAL_DPP_G = 0x01, 48 MPP_LOGICAL_DPP_GF = 0x02, 49 MPP_LOGICAL_DPP_VG = 0x04, 50 MPP_LOGICAL_DPP_VGS = 0x08, 51 MPP_LOGICAL_DPP_VGF = 0x10, 52 MPP_LOGICAL_DPP_VGFS = 0x20, 53 MPP_LOGICAL_DPP_VGRFS = 0x40, 54 MPP_LOGICAL_MSC = 0x100, 55 MPP_LOGICAL_MSC_YUV = 0x200, 56 MPP_LOGICAL_G2D_YUV = 0x1000, 57 MPP_LOGICAL_G2D_RGB = 0x2000, 58 MPP_LOGICAL_G2D_COMBO = 0x4000, 59 /* 60 * Increase MPP_LOGICAL_TYPE_NUM 61 * if type is added 62 */ 63 MPP_LOGICAL_TYPE_NUM = 12 64 } mpp_logical_type_t; 65 66 enum { 67 MPP_ATTR_AFBC = 0x00000001, 68 MPP_ATTR_WINDOW_UPDATE = 0x00000002, 69 MPP_ATTR_BLOCK_MODE = 0x00000004, 70 MPP_ATTR_USE_CAPA = 0x00000008, 71 MPP_ATTR_FLIP_H = 0x00000020, 72 MPP_ATTR_FLIP_V = 0x00000040, 73 MPP_ATTR_ROT_90 = 0x00000080, 74 MPP_ATTR_SCALE = 0x00000800, 75 MPP_ATTR_DIM = 0x00001000, 76 MPP_ATTR_LAYER_TRANSFORM = 0x00002000, 77 78 MPP_ATTR_WCG = 0x00100000, 79 MPP_ATTR_HDR10 = 0x00200000, 80 81 MPP_ATTR_HDR10PLUS = 0x10000000, 82 }; 83 84 typedef struct feature_support_t { 85 mpp_phycal_type_t hwType; /* MPP_DPP_VG, MPP_DPP_VGFS, ... */ 86 uint64_t attr; 87 } feature_support_t; 88 89 typedef struct transform_map { 90 android_transform_t hal_tr; 91 uint32_t hwc_tr; 92 } transform_map_t; 93 94 const transform_map_t transform_map_table [] = 95 { 96 {HAL_TRANSFORM_FLIP_H, MPP_ATTR_FLIP_H}, 97 {HAL_TRANSFORM_FLIP_V, MPP_ATTR_FLIP_V}, 98 {HAL_TRANSFORM_ROT_90, MPP_ATTR_ROT_90}, 99 }; 100 101 typedef struct dpu_attr_map { 102 uint32_t dpp_attr; 103 uint32_t hwc_attr = 0; 104 } dpu_attr_map_t; 105 106 typedef struct dpp_channel_map { 107 mpp_phycal_type_t type; 108 uint32_t index; 109 uint32_t idma; // DECON_IDMA 110 decon_idma_type channel; 111 } dpp_channel_map_t; 112 113 #endif 114