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