1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef DISP_COMMON_H 17094332d3Sopenharmony_ci#define DISP_COMMON_H 18094332d3Sopenharmony_ci#include <stdint.h> 19094332d3Sopenharmony_ci#include "hdf_log.h" 20094332d3Sopenharmony_ci 21094332d3Sopenharmony_ci#ifdef HDF_LOG_TAG 22094332d3Sopenharmony_ci#undef HDF_LOG_TAG 23094332d3Sopenharmony_ci#endif 24094332d3Sopenharmony_ci#define HDF_LOG_TAG HDF_DISP 25094332d3Sopenharmony_ci 26094332d3Sopenharmony_ci#define CHECK_NULLPOINTER_RETURN_VALUE(pointer, ret) do { \ 27094332d3Sopenharmony_ci if ((pointer) == NULL) { \ 28094332d3Sopenharmony_ci HDF_LOGE("%s: pointer is null", __func__); \ 29094332d3Sopenharmony_ci return (ret); \ 30094332d3Sopenharmony_ci } \ 31094332d3Sopenharmony_ci} while (0) 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ci#define CHECK_NULLPOINTER_RETURN(pointer) do { \ 34094332d3Sopenharmony_ci if ((pointer) == NULL) { \ 35094332d3Sopenharmony_ci HDF_LOGE("%s: pointer is null", __func__); \ 36094332d3Sopenharmony_ci return; \ 37094332d3Sopenharmony_ci } \ 38094332d3Sopenharmony_ci} while (0) 39094332d3Sopenharmony_ci 40094332d3Sopenharmony_ci#define DISPLAY_CHK_RETURN(val, ret, ...) \ 41094332d3Sopenharmony_ci do { \ 42094332d3Sopenharmony_ci if (val) { \ 43094332d3Sopenharmony_ci __VA_ARGS__; \ 44094332d3Sopenharmony_ci return (ret); \ 45094332d3Sopenharmony_ci } \ 46094332d3Sopenharmony_ci } while (0) 47094332d3Sopenharmony_ci 48094332d3Sopenharmony_ci#define DISPLAY_CHK_RETURN_NOT_VALUE(val, ...) \ 49094332d3Sopenharmony_ci do { \ 50094332d3Sopenharmony_ci if (val) { \ 51094332d3Sopenharmony_ci __VA_ARGS__; \ 52094332d3Sopenharmony_ci return; \ 53094332d3Sopenharmony_ci } \ 54094332d3Sopenharmony_ci } while (0) 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_cienum LayerId { 57094332d3Sopenharmony_ci GRA_LAYER_0, 58094332d3Sopenharmony_ci GRA_LAYER_1, 59094332d3Sopenharmony_ci GRA_LAYER_2, 60094332d3Sopenharmony_ci GRA_LAYER_MAX, 61094332d3Sopenharmony_ci OV_LAYER_0, 62094332d3Sopenharmony_ci OV_LAYER_1, 63094332d3Sopenharmony_ci OV_LAYER_2, 64094332d3Sopenharmony_ci OV_LAYER_MAX 65094332d3Sopenharmony_ci}; 66094332d3Sopenharmony_ci 67094332d3Sopenharmony_cienum PowerMode { 68094332d3Sopenharmony_ci DISP_ON, 69094332d3Sopenharmony_ci DISP_OFF, 70094332d3Sopenharmony_ci}; 71094332d3Sopenharmony_ci 72094332d3Sopenharmony_ci/* output timing */ 73094332d3Sopenharmony_cienum IntfSync { 74094332d3Sopenharmony_ci OUTPUT_USER = 0, /* User timing */ 75094332d3Sopenharmony_ci OUTPUT_PAL, /* PAL standard */ 76094332d3Sopenharmony_ci OUTPUT_NTSC, /* NTSC standard */ 77094332d3Sopenharmony_ci OUTPUT_1080P24, /* 1920 x 1080 at 24 Hz. */ 78094332d3Sopenharmony_ci OUTPUT_1080P25, /* 1920 x 1080 at 25 Hz. */ 79094332d3Sopenharmony_ci OUTPUT_1080P30, /* 1920 x 1080 at 30 Hz. */ 80094332d3Sopenharmony_ci OUTPUT_720P50, /* 1280 x 720 at 50 Hz. */ 81094332d3Sopenharmony_ci OUTPUT_720P60, /* 1280 x 720 at 60 Hz. */ 82094332d3Sopenharmony_ci OUTPUT_1080I50, /* 1920 x 1080 at 50 Hz, interlace. */ 83094332d3Sopenharmony_ci OUTPUT_1080I60, /* 1920 x 1080 at 60 Hz, interlace. */ 84094332d3Sopenharmony_ci OUTPUT_1080P50, /* 1920 x 1080 at 50 Hz. */ 85094332d3Sopenharmony_ci OUTPUT_1080P60, /* 1920 x 1080 at 60 Hz. */ 86094332d3Sopenharmony_ci OUTPUT_576P50, /* 720 x 576 at 50 Hz. */ 87094332d3Sopenharmony_ci OUTPUT_480P60, /* 720 x 480 at 60 Hz. */ 88094332d3Sopenharmony_ci OUTPUT_800X600_60, /* VESA 800 x 600 at 60 Hz (non-interlaced) */ 89094332d3Sopenharmony_ci OUTPUT_1024X768_60, /* VESA 1024 x 768 at 60 Hz (non-interlaced) */ 90094332d3Sopenharmony_ci OUTPUT_1280X1024_60, /* VESA 1280 x 1024 at 60 Hz (non-interlaced) */ 91094332d3Sopenharmony_ci OUTPUT_1366X768_60, /* VESA 1366 x 768 at 60 Hz (non-interlaced) */ 92094332d3Sopenharmony_ci OUTPUT_1440X900_60, /* VESA 1440 x 900 at 60 Hz (non-interlaced) CVT Compliant */ 93094332d3Sopenharmony_ci OUTPUT_1280X800_60, /* 1280*800@60Hz VGA@60Hz */ 94094332d3Sopenharmony_ci OUTPUT_1600X1200_60, /* VESA 1600 x 1200 at 60 Hz (non-interlaced) */ 95094332d3Sopenharmony_ci OUTPUT_1680X1050_60, /* VESA 1680 x 1050 at 60 Hz (non-interlaced) */ 96094332d3Sopenharmony_ci OUTPUT_1920X1200_60, /* VESA 1920 x 1600 at 60 Hz (non-interlaced) CVT (Reduced Blanking) */ 97094332d3Sopenharmony_ci OUTPUT_640X480_60, /* VESA 640 x 480 at 60 Hz (non-interlaced) CVT */ 98094332d3Sopenharmony_ci OUTPUT_960H_PAL, /* ITU-R BT.1302 960 x 576 at 50 Hz (interlaced) */ 99094332d3Sopenharmony_ci OUTPUT_960H_NTSC, /* ITU-R BT.1302 960 x 480 at 60 Hz (interlaced) */ 100094332d3Sopenharmony_ci OUTPUT_1920X2160_30, /* 1920x2160_30 */ 101094332d3Sopenharmony_ci OUTPUT_2560X1440_30, /* 2560x1440_30 */ 102094332d3Sopenharmony_ci OUTPUT_2560X1440_60, /* 2560x1440_60 */ 103094332d3Sopenharmony_ci OUTPUT_2560X1600_60, /* 2560x1600_60 */ 104094332d3Sopenharmony_ci OUTPUT_3840X2160_24, /* 3840x2160_24 */ 105094332d3Sopenharmony_ci OUTPUT_3840X2160_25, /* 3840x2160_25 */ 106094332d3Sopenharmony_ci OUTPUT_3840X2160_30, /* 3840x2160_30 */ 107094332d3Sopenharmony_ci OUTPUT_3840X2160_50, /* 3840x2160_50 */ 108094332d3Sopenharmony_ci OUTPUT_3840X2160_60, /* 3840x2160_60 */ 109094332d3Sopenharmony_ci OUTPUT_4096X2160_24, /* 4096x2160_24 */ 110094332d3Sopenharmony_ci OUTPUT_4096X2160_25, /* 4096x2160_25 */ 111094332d3Sopenharmony_ci OUTPUT_4096X2160_30, /* 4096x2160_30 */ 112094332d3Sopenharmony_ci OUTPUT_4096X2160_50, /* 4096x2160_50 */ 113094332d3Sopenharmony_ci OUTPUT_4096X2160_60, /* 4096x2160_60 */ 114094332d3Sopenharmony_ci OUTPUT_320X240_60, /* For ota5182 at 60 Hz (8bit) */ 115094332d3Sopenharmony_ci OUTPUT_320X240_50, /* For ili9342 at 50 Hz (6bit) */ 116094332d3Sopenharmony_ci OUTPUT_240X320_50, /* Hi3559AV100: For ili9341 at 50 Hz (6bit) */ 117094332d3Sopenharmony_ci OUTPUT_240X320_60, /* For ili9341 at 60 Hz (16bit) */ 118094332d3Sopenharmony_ci OUTPUT_800X600_50, /* For LCD at 50 Hz (24bit) */ 119094332d3Sopenharmony_ci OUTPUT_720X1280_60, /* For MIPI DSI Tx 720 x1280 at 60 Hz */ 120094332d3Sopenharmony_ci OUTPUT_1080X1920_60, /* For MIPI DSI Tx 1080x1920 at 60 Hz */ 121094332d3Sopenharmony_ci OUTPUT_7680X4320_30, /* For HDMI2.1 at 30 Hz */ 122094332d3Sopenharmony_ci}; 123094332d3Sopenharmony_ci 124094332d3Sopenharmony_cistruct DispInfo { 125094332d3Sopenharmony_ci uint32_t width; 126094332d3Sopenharmony_ci uint32_t hbp; 127094332d3Sopenharmony_ci uint32_t hfp; 128094332d3Sopenharmony_ci uint32_t hsw; 129094332d3Sopenharmony_ci uint32_t height; 130094332d3Sopenharmony_ci uint32_t vbp; 131094332d3Sopenharmony_ci uint32_t vfp; 132094332d3Sopenharmony_ci uint32_t vsw; 133094332d3Sopenharmony_ci uint32_t frameRate; 134094332d3Sopenharmony_ci uint32_t intfType; 135094332d3Sopenharmony_ci enum IntfSync intfSync; 136094332d3Sopenharmony_ci uint32_t minLevel; 137094332d3Sopenharmony_ci uint32_t maxLevel; 138094332d3Sopenharmony_ci uint32_t defLevel; 139094332d3Sopenharmony_ci}; 140094332d3Sopenharmony_ci#endif // DISP_COMMON_H 141