import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / misc / mediatek / hdmi / Sii8338 / si_drv_ext.c
CommitLineData
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"
8static AVModeDescription_t AVModeDescription;
9static 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
159bool_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
174unsigned 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
210uint8_t GetExt_inputColorSpace(void)
211{
212 return AVModeDescription.ColorSpace;
213}
214
215uint8_t GetExt_inputVideoCode(void)
216{
217 return AVModeDescription.VIC;
218}
219
220uint8_t GetExt_inputcolorimetryAspectRatio(void)
221{
222 if (AVModeDescription.AspectRatio == VMD_ASPECT_RATIO_4x3)
223 return 0x18;
224 else
225 return 0x28;
226}
227
228uint8_t GetExt_inputAR(void)
229{
230 return AVModeDescription.AspectRatio;
231}
232
233void InitExtVideo(void)
234{
235 TX_DEBUG_PRINT(("AMFlib initialize.\n"));
236 AMF_Init(false);
237}
238
239void TriggerExtInt(void)
240{
241#ifdef __KERLNEL__
242 AMF_TriggerSWInt();
243#endif
244}
245#else
246static void AVModeReport(void)
247{
248 return;
249}
250
251bool_t CheckExtVideo(void)
252{
253 return false;
254}
255
256unsigned char GetExt_AudioType(void)
257{
258 return 0;
259}
260
261uint8_t GetExt_inputColorSpace(void)
262{
263 return 0;
264}
265
266uint8_t GetExt_inputVideoCode(void)
267{
268 return 0;
269}
270
271uint8_t GetExt_inputcolorimetryAspectRatio(void)
272{
273 return 0;
274}
275
276uint8_t GetExt_inputAR(void)
277{
278 return 0;
279}
280
281void InitExtVideo(void)
282{
283}
284
285void TriggerExtInt(void)
286{
287}
288#endif