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 | */ |
30 | enum 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 | |
96 | enum 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 | |
159 | enum 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 | |
176 | enum 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 | |
185 | typedef uint32_t u32; |
186 | |
187 | /* |
188 | * The commented memebers are not need now. |
189 | */ |
190 | struct 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 | |
216 | enum vmode_e vmode_name_to_mode(const char *str); |
217 | const struct vinfo_s *get_tv_info(enum vmode_e mode); |
218 | int want_hdmi_mode(enum vmode_e mode); |
219 | const struct vinfo_s * findMatchedMode(u32 width, u32 height, u32 refreshrate); |
220 | |
221 | #endif //AML_VOUT_H_ |
222 |