summaryrefslogtreecommitdiff
path: root/hwc2/include/AmVinfo.h (plain)
blob: 3f251843565e3af58d1f6c59fc2aef4940186ed0
1/*
2// Copyright (c) 2017 Amlogic
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
18#ifndef AM_VINFO_H_
19#define AM_VINFO_H_
20#include <sys/types.h>
21
22/*
23 * !!!ATTENTATION:
24 * MOST COPY FROM KERNEL, DONT MODIFY.
25 */
26
27/*
28 * from kernel/include/driver/vout/vinfo.h
29 */
30enum vmode_e {
31 VMODE_480I = 0,
32 VMODE_480I_RPT,
33 VMODE_480CVBS,
34 VMODE_480P,
35 VMODE_480P_RPT,
36 VMODE_576I,
37 VMODE_576I_RPT,
38 VMODE_576CVBS,
39 VMODE_576P,
40 VMODE_576P_RPT,
41 VMODE_720P,
42 VMODE_720P_50HZ,
43 VMODE_768P,
44 VMODE_768P_50HZ,
45 VMODE_1080I,
46 VMODE_1080I_50HZ,
47 VMODE_1080P,
48 VMODE_1080P_30HZ,
49 VMODE_1080P_50HZ,
50 VMODE_1080P_25HZ,
51 VMODE_1080P_24HZ,
52 VMODE_4K2K_30HZ,
53 VMODE_4K2K_25HZ,
54 VMODE_4K2K_24HZ,
55 VMODE_4K2K_SMPTE,
56 VMODE_4K2K_SMPTE_25HZ,
57 VMODE_4K2K_SMPTE_30HZ,
58 VMODE_4K2K_SMPTE_50HZ,
59 VMODE_4K2K_SMPTE_50HZ_Y420,
60 VMODE_4K2K_SMPTE_60HZ,
61 VMODE_4K2K_SMPTE_60HZ_Y420,
62 VMODE_4K2K_FAKE_5G,
63 VMODE_4K2K_60HZ,
64 VMODE_4K2K_60HZ_Y420,
65 VMODE_4K2K_50HZ,
66 VMODE_4K2K_50HZ_Y420,
67 VMODE_4K2K_5G,
68 VMODE_4K1K_120HZ,
69 VMODE_4K1K_120HZ_Y420,
70 VMODE_4K1K_100HZ,
71 VMODE_4K1K_100HZ_Y420,
72 VMODE_4K05K_240HZ,
73 VMODE_4K05K_240HZ_Y420,
74 VMODE_4K05K_200HZ,
75 VMODE_4K05K_200HZ_Y420,
76 VMODE_VGA,
77 VMODE_SVGA,
78 VMODE_XGA,
79 VMODE_SXGA,
80 VMODE_WSXGA,
81 VMODE_FHDVGA,
82 VMODE_720FP50HZ, /* Extra VMODE for 3D Frame Packing */
83 VMODE_720FP60HZ,
84 VMODE_1080FP24HZ,
85 VMODE_1080FP25HZ,
86 VMODE_1080FP30HZ,
87 VMODE_1080FP50HZ,
88 VMODE_1080FP60HZ,
89 VMODE_LCD,
90 VMODE_NULL, /* null mode is used as temporary witch mode state */
91 VMODE_MAX,
92 VMODE_INIT_NULL,
93 VMODE_MASK = 0xFF,
94};
95
96enum tvmode_e {
97 TVMODE_480I = 0,
98 TVMODE_480I_RPT,
99 TVMODE_480CVBS,
100 TVMODE_480P,
101 TVMODE_480P_RPT,
102 TVMODE_576I,
103 TVMODE_576I_RPT,
104 TVMODE_576CVBS,
105 TVMODE_576P,
106 TVMODE_576P_RPT,
107 TVMODE_720P,
108 TVMODE_720P_50HZ,
109 TVMODE_768P,
110 TVMODE_768P_50HZ,
111 TVMODE_1080I,
112 TVMODE_1080I_50HZ,
113 TVMODE_1080P,
114 TVMODE_1080P_30HZ,
115 TVMODE_1080P_50HZ,
116 TVMODE_1080P_25HZ,
117 TVMODE_1080P_24HZ,
118 TVMODE_4K2K_30HZ,
119 TVMODE_4K2K_25HZ,
120 TVMODE_4K2K_24HZ,
121 TVMODE_4K2K_SMPTE,
122 TVMODE_4K2K_SMPTE_25HZ,
123 TVMODE_4K2K_SMPTE_30HZ,
124 TVMODE_4K2K_SMPTE_50HZ,
125 TVMODE_4K2K_SMPTE_50HZ_Y420,
126 TVMODE_4K2K_SMPTE_60HZ,
127 TVMODE_4K2K_SMPTE_60HZ_Y420,
128 TVMODE_4K2K_FAKE_5G,
129 TVMODE_4K2K_60HZ,
130 TVMODE_4K2K_60HZ_Y420,
131 TVMODE_4K2K_50HZ,
132 TVMODE_4K2K_50HZ_Y420,
133 TVMODE_4K2K_5G,
134 TVMODE_4K1K_120HZ,
135 TVMODE_4K1K_120HZ_Y420,
136 TVMODE_4K1K_100HZ,
137 TVMODE_4K1K_100HZ_Y420,
138 TVMODE_4K05K_240HZ,
139 TVMODE_4K05K_240HZ_Y420,
140 TVMODE_4K05K_200HZ,
141 TVMODE_4K05K_200HZ_Y420,
142 TVMODE_VGA ,
143 TVMODE_SVGA,
144 TVMODE_XGA,
145 TVMODE_SXGA,
146 TVMODE_WSXGA,
147 TVMODE_FHDVGA,
148 TVMODE_720FP50HZ, /* Extra TVMODE for 3D Frame Packing */
149 TVMODE_720FP60HZ,
150 TVMODE_1080FP24HZ,
151 TVMODE_1080FP25HZ,
152 TVMODE_1080FP30HZ,
153 TVMODE_1080FP50HZ,
154 TVMODE_1080FP60HZ,
155 TVMODE_NULL, /* null mode is used as temporary witch mode state */
156 TVMODE_MAX,
157};
158
159enum tvin_color_fmt_e {
160 TVIN_RGB444 = 0,
161 TVIN_YUV422, /* 1 */
162 TVIN_YUV444, /* 2 */
163 TVIN_YUYV422, /* 3 */
164 TVIN_YVYU422, /* 4 */
165 TVIN_UYVY422, /* 5 */
166 TVIN_VYUY422, /* 6 */
167 TVIN_NV12, /* 7 */
168 TVIN_NV21, /* 8 */
169 TVIN_BGGR, /* 9 raw data */
170 TVIN_RGGB, /* 10 raw data */
171 TVIN_GBRG, /* 11 raw data */
172 TVIN_GRBG, /* 12 raw data */
173 TVIN_COLOR_FMT_MAX,
174};
175
176enum tvin_color_fmt_range_e {
177 TVIN_FMT_RANGE_NULL = 0, /* depend on vedio fromat */
178 TVIN_RGB_FULL, /* 1 */
179 TVIN_RGB_LIMIT, /* 2 */
180 TVIN_YUV_FULL, /* 3 */
181 TVIN_YUV_LIMIT, /* 4 */
182 TVIN_COLOR_FMT_RANGE_MAX,
183};
184
185typedef uint32_t u32;
186
187/*
188* The commented memebers are not need now.
189*/
190struct vinfo_s {
191 char *name;
192 enum vmode_e mode;
193 u32 width;
194 u32 height;
195 u32 field_height;
196 u32 aspect_ratio_num;
197 u32 aspect_ratio_den;
198 u32 sync_duration_num;
199 u32 sync_duration_den;
200// u32 screen_real_width;
201// u32 screen_real_height;
202 u32 video_clk;
203 enum tvin_color_fmt_e viu_color_fmt;
204
205// struct hdr_info hdr_info;
206// struct master_display_info_s
207// master_display_info;
208// const struct dv_info *dv_info;
209 /* update hdmitx hdr packet, if data is NULL, disalbe packet */
210// void (*fresh_tx_hdr_pkt)(struct master_display_info_s *data);
211 /* tunnel_mode: 1: tunneling mode, RGB 8bit 0: YCbCr422 12bit mode */
212// void (*fresh_tx_vsif_pkt)(enum eotf_type type, uint8_t tunnel_mode);
213};
214
215
216enum vmode_e vmode_name_to_mode(const char *str);
217const struct vinfo_s *get_tv_info(enum vmode_e mode);
218int want_hdmi_mode(enum vmode_e mode);
219const struct vinfo_s * findMatchedMode(u32 width, u32 height, u32 refreshrate);
220
221#endif //AML_VOUT_H_
222