Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | #include "si_common.h" |
2 | #include "si_mhl_tx_api.h" | |
3 | #include "si_drv_mhl_tx.h" | |
4 | #include "si_platform.h" | |
5 | #include "si_drv_ext.h" | |
6 | #ifdef AMF_SRC | |
7 | #include "AMF_Lib.h" | |
8 | static AVModeDescription_t AVModeDescription; | |
9 | static void AVModeReport(void) | |
10 | { | |
11 | uint16_t OldDebugFormat; | |
12 | OldDebugFormat = SiiOsDebugGetConfig(); | |
13 | SiiOsDebugSetConfig(SII_OS_DEBUG_FORMAT_SIMPLE); | |
14 | TX_DEBUG_PRINT(("HF:%d", (int)AVModeDescription.HDMIVideoFormat)); | |
15 | switch (AVModeDescription.HDMIVideoFormat) { | |
16 | case VMD_HDMIFORMAT_CEA_VIC: | |
17 | TX_DEBUG_PRINT((" (CEA VIC)")); | |
18 | break; | |
19 | case VMD_HDMIFORMAT_HDMI_VIC: | |
20 | TX_DEBUG_PRINT((" (HDMI VIC)")); | |
21 | break; | |
22 | case VMD_HDMIFORMAT_3D: | |
23 | TX_DEBUG_PRINT((" (3D)")); | |
24 | break; | |
25 | case VMD_HDMIFORMAT_PC: | |
26 | TX_DEBUG_PRINT((" (PC)")); | |
27 | break; | |
28 | default: | |
29 | TX_DEBUG_PRINT((" (Illegal)")); | |
30 | break; | |
31 | } | |
32 | TX_DEBUG_PRINT((" VIC:%d", (int)AVModeDescription.VIC)); | |
33 | TX_DEBUG_PRINT((" A:%x", (int)AVModeDescription.AspectRatio)); | |
34 | switch (AVModeDescription.AspectRatio) { | |
35 | case VMD_ASPECT_RATIO_4x3: | |
36 | TX_DEBUG_PRINT((" (4x3)")); | |
37 | break; | |
38 | case VMD_ASPECT_RATIO_16x9: | |
39 | TX_DEBUG_PRINT((" (16x9)")); | |
40 | break; | |
41 | default: | |
42 | TX_DEBUG_PRINT((" (Illegal)")); | |
43 | break; | |
44 | } | |
45 | TX_DEBUG_PRINT((" ICS:%d", (int)AVModeDescription.ColorSpace)); | |
46 | switch (AVModeDescription.ColorSpace) { | |
47 | case VMD_COLOR_SPACE_RGB: | |
48 | TX_DEBUG_PRINT((" (RGB)")); | |
49 | break; | |
50 | case VMD_COLOR_SPACE_YCBCR422: | |
51 | TX_DEBUG_PRINT((" (YCBCR422)")); | |
52 | break; | |
53 | case VMD_COLOR_SPACE_YCBCR444: | |
54 | TX_DEBUG_PRINT((" (YCBCR444)")); | |
55 | break; | |
56 | default: | |
57 | TX_DEBUG_PRINT((" (Illegal)")); | |
58 | break; | |
59 | } | |
60 | TX_DEBUG_PRINT((" ICD:%d", (int)AVModeDescription.ColorDepth)); | |
61 | switch (AVModeDescription.ColorDepth) { | |
62 | case VMD_COLOR_DEPTH_8BIT: | |
63 | TX_DEBUG_PRINT((" (8BIT)")); | |
64 | break; | |
65 | case VMD_COLOR_DEPTH_10BIT: | |
66 | TX_DEBUG_PRINT((" (10BIT)")); | |
67 | break; | |
68 | case VMD_COLOR_DEPTH_12BIT: | |
69 | TX_DEBUG_PRINT((" (12BIT)")); | |
70 | break; | |
71 | case VMD_COLOR_DEPTH_16BIT: | |
72 | TX_DEBUG_PRINT((" (16BIT)")); | |
73 | break; | |
74 | default: | |
75 | TX_DEBUG_PRINT((" (Illegal)")); | |
76 | break; | |
77 | } | |
78 | TX_DEBUG_PRINT((" HA:%d", (int)AVModeDescription.HDCPAuthenticated)); | |
79 | if (AVModeDescription.HDCPAuthenticated == VMD_HDCP_AUTHENTICATED) { | |
80 | TX_DEBUG_PRINT((" (Authenticated)\n")); | |
81 | } else { | |
82 | TX_DEBUG_PRINT((" (NOT Authenticated)\n")); | |
83 | } | |
84 | if (AVModeDescription.HDMIVideoFormat == VMD_HDMIFORMAT_3D) { | |
85 | TX_DEBUG_PRINT((" 3D:%d", (int)AVModeDescription.ThreeDStructure)); | |
86 | switch (AVModeDescription.ThreeDStructure) { | |
87 | case VMD_3D_EXT_DATA_MAP: | |
88 | TX_DEBUG_PRINT((" (Ext Data Map)\n")); | |
89 | break; | |
90 | case VMD_3D_FRAMEPACKING: | |
91 | TX_DEBUG_PRINT((" (Frame Packing)\n")); | |
92 | break; | |
93 | case VMD_3D_FIELDALTERNATIVE: | |
94 | TX_DEBUG_PRINT((" (Field Alternating)\n")); | |
95 | break; | |
96 | case VMD_3D_LINEALTERNATIVE: | |
97 | TX_DEBUG_PRINT(("(Line Alternating)\n")); | |
98 | break; | |
99 | case VMD_3D_SIDEBYSIDEFULL: | |
100 | TX_DEBUG_PRINT((" (Side-by-side Full)\n")); | |
101 | break; | |
102 | case VMD_3D_LDEPTH: | |
103 | TX_DEBUG_PRINT((" (L Depth)\n")); | |
104 | break; | |
105 | case VMD_3D_LDEPTHGRAPHICS: | |
106 | TX_DEBUG_PRINT((" (L Depth Graphics)\n")); | |
107 | break; | |
108 | case VMD_3D_SIDEBYSIDEHALF: | |
109 | TX_DEBUG_PRINT((" (Side-by-side half)")); | |
110 | TX_DEBUG_PRINT((" 3Dx:%d\n", (int)AVModeDescription.ThreeDExtData)); | |
111 | break; | |
112 | default: | |
113 | TX_DEBUG_PRINT((" (Illegal)")); | |
114 | break; | |
115 | } | |
116 | } | |
117 | switch (AVModeDescription.Audiotype) { | |
118 | case 0x00: | |
119 | TX_DEBUG_PRINT((" AUD: 44.1kHz ")); | |
120 | break; | |
121 | case 0x01: | |
122 | TX_DEBUG_PRINT((" AUD: not indicated ")); | |
123 | break; | |
124 | case 0x02: | |
125 | TX_DEBUG_PRINT((" AUD: 48kHz ")); | |
126 | break; | |
127 | case 0x03: | |
128 | TX_DEBUG_PRINT((" AUD: 32kHz ")); | |
129 | break; | |
130 | case 0x04: | |
131 | TX_DEBUG_PRINT((" AUD: 22.05kHz ")); | |
132 | break; | |
133 | case 0x06: | |
134 | TX_DEBUG_PRINT((" AUD: 24kHz ")); | |
135 | break; | |
136 | case 0x08: | |
137 | TX_DEBUG_PRINT((" AUD: 88.2kHz ")); | |
138 | break; | |
139 | case 0x09: | |
140 | TX_DEBUG_PRINT((" AUD: 768kHz ")); | |
141 | break; | |
142 | case 0x0A: | |
143 | TX_DEBUG_PRINT((" AUD: 96kHz ")); | |
144 | break; | |
145 | case 0x0C: | |
146 | TX_DEBUG_PRINT((" AUD: 176.4kHz ")); | |
147 | break; | |
148 | case 0x0E: | |
149 | TX_DEBUG_PRINT((" AUD: 192kHz ")); | |
150 | break; | |
151 | default: | |
152 | TX_DEBUG_PRINT((" AUD: Illegal")); | |
153 | break; | |
154 | } | |
155 | TX_DEBUG_PRINT(("\n")); | |
156 | SiiOsDebugSetConfig(OldDebugFormat); | |
157 | } | |
158 | ||
159 | bool_t CheckExtVideo(void) | |
160 | { | |
161 | bool_t video_change = false; | |
162 | if (AMF_Poll(false) != 0) { | |
163 | video_change = true; | |
164 | AMF_GetAVModeDescription(&AVModeDescription); | |
165 | PRINT("RX AV mode from AMF:\n"); | |
166 | AVModeReport(); | |
167 | if (AVModeDescription.VIC == 0) { | |
168 | video_change = false; | |
169 | } | |
170 | } | |
171 | return video_change; | |
172 | } | |
173 | ||
174 | unsigned char GetExt_AudioType(void) | |
175 | { | |
176 | inAudioTypes_t audio_type; | |
177 | if (AVModeDescription.VIC == 0) { | |
178 | audio_type = AUD_INVALID; | |
179 | } else { | |
180 | switch (AVModeDescription.Audiotype) { | |
181 | case 0x00: | |
182 | audio_type = I2S_44; | |
183 | break; | |
184 | case 0x02: | |
185 | audio_type = I2S_48; | |
186 | break; | |
187 | case 0x03: | |
188 | audio_type = I2S_32; | |
189 | break; | |
190 | case 0x08: | |
191 | audio_type = I2S_88; | |
192 | break; | |
193 | case 0x0A: | |
194 | audio_type = I2S_96; | |
195 | break; | |
196 | case 0x0C: | |
197 | audio_type = I2S_176; | |
198 | break; | |
199 | case 0x0E: | |
200 | audio_type = I2S_192; | |
201 | break; | |
202 | default: | |
203 | audio_type = AUD_INVALID; | |
204 | break; | |
205 | } | |
206 | } | |
207 | return audio_type; | |
208 | } | |
209 | ||
210 | uint8_t GetExt_inputColorSpace(void) | |
211 | { | |
212 | return AVModeDescription.ColorSpace; | |
213 | } | |
214 | ||
215 | uint8_t GetExt_inputVideoCode(void) | |
216 | { | |
217 | return AVModeDescription.VIC; | |
218 | } | |
219 | ||
220 | uint8_t GetExt_inputcolorimetryAspectRatio(void) | |
221 | { | |
222 | if (AVModeDescription.AspectRatio == VMD_ASPECT_RATIO_4x3) | |
223 | return 0x18; | |
224 | else | |
225 | return 0x28; | |
226 | } | |
227 | ||
228 | uint8_t GetExt_inputAR(void) | |
229 | { | |
230 | return AVModeDescription.AspectRatio; | |
231 | } | |
232 | ||
233 | void InitExtVideo(void) | |
234 | { | |
235 | TX_DEBUG_PRINT(("AMFlib initialize.\n")); | |
236 | AMF_Init(false); | |
237 | } | |
238 | ||
239 | void TriggerExtInt(void) | |
240 | { | |
241 | #ifdef __KERLNEL__ | |
242 | AMF_TriggerSWInt(); | |
243 | #endif | |
244 | } | |
245 | #else | |
246 | static void AVModeReport(void) | |
247 | { | |
248 | return; | |
249 | } | |
250 | ||
251 | bool_t CheckExtVideo(void) | |
252 | { | |
253 | return false; | |
254 | } | |
255 | ||
256 | unsigned char GetExt_AudioType(void) | |
257 | { | |
258 | return 0; | |
259 | } | |
260 | ||
261 | uint8_t GetExt_inputColorSpace(void) | |
262 | { | |
263 | return 0; | |
264 | } | |
265 | ||
266 | uint8_t GetExt_inputVideoCode(void) | |
267 | { | |
268 | return 0; | |
269 | } | |
270 | ||
271 | uint8_t GetExt_inputcolorimetryAspectRatio(void) | |
272 | { | |
273 | return 0; | |
274 | } | |
275 | ||
276 | uint8_t GetExt_inputAR(void) | |
277 | { | |
278 | return 0; | |
279 | } | |
280 | ||
281 | void InitExtVideo(void) | |
282 | { | |
283 | } | |
284 | ||
285 | void TriggerExtInt(void) | |
286 | { | |
287 | } | |
288 | #endif |