1515#include "dp_audio.h"
1616#include "dp_panel.h"
1717#include "dp_display.h"
18-
19- #define HEADER_BYTE_2_BIT 0
20- #define PARITY_BYTE_2_BIT 8
21- #define HEADER_BYTE_1_BIT 16
22- #define PARITY_BYTE_1_BIT 24
23- #define HEADER_BYTE_3_BIT 16
24- #define PARITY_BYTE_3_BIT 24
18+ #include "dp_utils.h"
2519
2620struct dp_audio_private {
2721 struct platform_device * audio_pdev ;
@@ -36,71 +30,6 @@ struct dp_audio_private {
3630 struct dp_audio dp_audio ;
3731};
3832
39- static u8 dp_audio_get_g0_value (u8 data )
40- {
41- u8 c [4 ];
42- u8 g [4 ];
43- u8 ret_data = 0 ;
44- u8 i ;
45-
46- for (i = 0 ; i < 4 ; i ++ )
47- c [i ] = (data >> i ) & 0x01 ;
48-
49- g [0 ] = c [3 ];
50- g [1 ] = c [0 ] ^ c [3 ];
51- g [2 ] = c [1 ];
52- g [3 ] = c [2 ];
53-
54- for (i = 0 ; i < 4 ; i ++ )
55- ret_data = ((g [i ] & 0x01 ) << i ) | ret_data ;
56-
57- return ret_data ;
58- }
59-
60- static u8 dp_audio_get_g1_value (u8 data )
61- {
62- u8 c [4 ];
63- u8 g [4 ];
64- u8 ret_data = 0 ;
65- u8 i ;
66-
67- for (i = 0 ; i < 4 ; i ++ )
68- c [i ] = (data >> i ) & 0x01 ;
69-
70- g [0 ] = c [0 ] ^ c [3 ];
71- g [1 ] = c [0 ] ^ c [1 ] ^ c [3 ];
72- g [2 ] = c [1 ] ^ c [2 ];
73- g [3 ] = c [2 ] ^ c [3 ];
74-
75- for (i = 0 ; i < 4 ; i ++ )
76- ret_data = ((g [i ] & 0x01 ) << i ) | ret_data ;
77-
78- return ret_data ;
79- }
80-
81- static u8 dp_audio_calculate_parity (u32 data )
82- {
83- u8 x0 = 0 ;
84- u8 x1 = 0 ;
85- u8 ci = 0 ;
86- u8 iData = 0 ;
87- u8 i = 0 ;
88- u8 parity_byte ;
89- u8 num_byte = (data & 0xFF00 ) > 0 ? 8 : 2 ;
90-
91- for (i = 0 ; i < num_byte ; i ++ ) {
92- iData = (data >> i * 4 ) & 0xF ;
93-
94- ci = iData ^ x1 ;
95- x1 = x0 ^ dp_audio_get_g1_value (ci );
96- x0 = dp_audio_get_g0_value (ci );
97- }
98-
99- parity_byte = x1 | (x0 << 4 );
100-
101- return parity_byte ;
102- }
103-
10433static u32 dp_audio_get_header (struct dp_catalog * catalog ,
10534 enum dp_catalog_audio_sdp_type sdp ,
10635 enum dp_catalog_audio_header_type header )
@@ -134,7 +63,7 @@ static void dp_audio_stream_sdp(struct dp_audio_private *audio)
13463 DP_AUDIO_SDP_STREAM , DP_AUDIO_SDP_HEADER_1 );
13564
13665 new_value = 0x02 ;
137- parity_byte = dp_audio_calculate_parity (new_value );
66+ parity_byte = dp_utils_calculate_parity (new_value );
13867 value |= ((new_value << HEADER_BYTE_1_BIT )
13968 | (parity_byte << PARITY_BYTE_1_BIT ));
14069 drm_dbg_dp (audio -> drm_dev ,
@@ -147,7 +76,7 @@ static void dp_audio_stream_sdp(struct dp_audio_private *audio)
14776 value = dp_audio_get_header (catalog ,
14877 DP_AUDIO_SDP_STREAM , DP_AUDIO_SDP_HEADER_2 );
14978 new_value = value ;
150- parity_byte = dp_audio_calculate_parity (new_value );
79+ parity_byte = dp_utils_calculate_parity (new_value );
15180 value |= ((new_value << HEADER_BYTE_2_BIT )
15281 | (parity_byte << PARITY_BYTE_2_BIT ));
15382 drm_dbg_dp (audio -> drm_dev ,
@@ -162,7 +91,7 @@ static void dp_audio_stream_sdp(struct dp_audio_private *audio)
16291 DP_AUDIO_SDP_STREAM , DP_AUDIO_SDP_HEADER_3 );
16392
16493 new_value = audio -> channels - 1 ;
165- parity_byte = dp_audio_calculate_parity (new_value );
94+ parity_byte = dp_utils_calculate_parity (new_value );
16695 value |= ((new_value << HEADER_BYTE_3_BIT )
16796 | (parity_byte << PARITY_BYTE_3_BIT ));
16897 drm_dbg_dp (audio -> drm_dev ,
@@ -184,7 +113,7 @@ static void dp_audio_timestamp_sdp(struct dp_audio_private *audio)
184113 DP_AUDIO_SDP_TIMESTAMP , DP_AUDIO_SDP_HEADER_1 );
185114
186115 new_value = 0x1 ;
187- parity_byte = dp_audio_calculate_parity (new_value );
116+ parity_byte = dp_utils_calculate_parity (new_value );
188117 value |= ((new_value << HEADER_BYTE_1_BIT )
189118 | (parity_byte << PARITY_BYTE_1_BIT ));
190119 drm_dbg_dp (audio -> drm_dev ,
@@ -198,7 +127,7 @@ static void dp_audio_timestamp_sdp(struct dp_audio_private *audio)
198127 DP_AUDIO_SDP_TIMESTAMP , DP_AUDIO_SDP_HEADER_2 );
199128
200129 new_value = 0x17 ;
201- parity_byte = dp_audio_calculate_parity (new_value );
130+ parity_byte = dp_utils_calculate_parity (new_value );
202131 value |= ((new_value << HEADER_BYTE_2_BIT )
203132 | (parity_byte << PARITY_BYTE_2_BIT ));
204133 drm_dbg_dp (audio -> drm_dev ,
@@ -212,7 +141,7 @@ static void dp_audio_timestamp_sdp(struct dp_audio_private *audio)
212141 DP_AUDIO_SDP_TIMESTAMP , DP_AUDIO_SDP_HEADER_3 );
213142
214143 new_value = (0x0 | (0x11 << 2 ));
215- parity_byte = dp_audio_calculate_parity (new_value );
144+ parity_byte = dp_utils_calculate_parity (new_value );
216145 value |= ((new_value << HEADER_BYTE_3_BIT )
217146 | (parity_byte << PARITY_BYTE_3_BIT ));
218147 drm_dbg_dp (audio -> drm_dev ,
@@ -233,7 +162,7 @@ static void dp_audio_infoframe_sdp(struct dp_audio_private *audio)
233162 DP_AUDIO_SDP_INFOFRAME , DP_AUDIO_SDP_HEADER_1 );
234163
235164 new_value = 0x84 ;
236- parity_byte = dp_audio_calculate_parity (new_value );
165+ parity_byte = dp_utils_calculate_parity (new_value );
237166 value |= ((new_value << HEADER_BYTE_1_BIT )
238167 | (parity_byte << PARITY_BYTE_1_BIT ));
239168 drm_dbg_dp (audio -> drm_dev ,
@@ -247,7 +176,7 @@ static void dp_audio_infoframe_sdp(struct dp_audio_private *audio)
247176 DP_AUDIO_SDP_INFOFRAME , DP_AUDIO_SDP_HEADER_2 );
248177
249178 new_value = 0x1b ;
250- parity_byte = dp_audio_calculate_parity (new_value );
179+ parity_byte = dp_utils_calculate_parity (new_value );
251180 value |= ((new_value << HEADER_BYTE_2_BIT )
252181 | (parity_byte << PARITY_BYTE_2_BIT ));
253182 drm_dbg_dp (audio -> drm_dev ,
@@ -261,7 +190,7 @@ static void dp_audio_infoframe_sdp(struct dp_audio_private *audio)
261190 DP_AUDIO_SDP_INFOFRAME , DP_AUDIO_SDP_HEADER_3 );
262191
263192 new_value = (0x0 | (0x11 << 2 ));
264- parity_byte = dp_audio_calculate_parity (new_value );
193+ parity_byte = dp_utils_calculate_parity (new_value );
265194 value |= ((new_value << HEADER_BYTE_3_BIT )
266195 | (parity_byte << PARITY_BYTE_3_BIT ));
267196 drm_dbg_dp (audio -> drm_dev ,
@@ -282,7 +211,7 @@ static void dp_audio_copy_management_sdp(struct dp_audio_private *audio)
282211 DP_AUDIO_SDP_COPYMANAGEMENT , DP_AUDIO_SDP_HEADER_1 );
283212
284213 new_value = 0x05 ;
285- parity_byte = dp_audio_calculate_parity (new_value );
214+ parity_byte = dp_utils_calculate_parity (new_value );
286215 value |= ((new_value << HEADER_BYTE_1_BIT )
287216 | (parity_byte << PARITY_BYTE_1_BIT ));
288217 drm_dbg_dp (audio -> drm_dev ,
@@ -296,7 +225,7 @@ static void dp_audio_copy_management_sdp(struct dp_audio_private *audio)
296225 DP_AUDIO_SDP_COPYMANAGEMENT , DP_AUDIO_SDP_HEADER_2 );
297226
298227 new_value = 0x0F ;
299- parity_byte = dp_audio_calculate_parity (new_value );
228+ parity_byte = dp_utils_calculate_parity (new_value );
300229 value |= ((new_value << HEADER_BYTE_2_BIT )
301230 | (parity_byte << PARITY_BYTE_2_BIT ));
302231 drm_dbg_dp (audio -> drm_dev ,
@@ -310,7 +239,7 @@ static void dp_audio_copy_management_sdp(struct dp_audio_private *audio)
310239 DP_AUDIO_SDP_COPYMANAGEMENT , DP_AUDIO_SDP_HEADER_3 );
311240
312241 new_value = 0x0 ;
313- parity_byte = dp_audio_calculate_parity (new_value );
242+ parity_byte = dp_utils_calculate_parity (new_value );
314243 value |= ((new_value << HEADER_BYTE_3_BIT )
315244 | (parity_byte << PARITY_BYTE_3_BIT ));
316245 drm_dbg_dp (audio -> drm_dev ,
@@ -331,7 +260,7 @@ static void dp_audio_isrc_sdp(struct dp_audio_private *audio)
331260 DP_AUDIO_SDP_ISRC , DP_AUDIO_SDP_HEADER_1 );
332261
333262 new_value = 0x06 ;
334- parity_byte = dp_audio_calculate_parity (new_value );
263+ parity_byte = dp_utils_calculate_parity (new_value );
335264 value |= ((new_value << HEADER_BYTE_1_BIT )
336265 | (parity_byte << PARITY_BYTE_1_BIT ));
337266 drm_dbg_dp (audio -> drm_dev ,
@@ -345,7 +274,7 @@ static void dp_audio_isrc_sdp(struct dp_audio_private *audio)
345274 DP_AUDIO_SDP_ISRC , DP_AUDIO_SDP_HEADER_2 );
346275
347276 new_value = 0x0F ;
348- parity_byte = dp_audio_calculate_parity (new_value );
277+ parity_byte = dp_utils_calculate_parity (new_value );
349278 value |= ((new_value << HEADER_BYTE_2_BIT )
350279 | (parity_byte << PARITY_BYTE_2_BIT ));
351280 drm_dbg_dp (audio -> drm_dev ,
0 commit comments