blob: 28096d55874d397972f8976fee064ea55035c9aa [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001#!/usr/bin/perl
2#
3# Copyright Statement:
4# --------------------
5# This software is protected by Copyright and the information contained
6# herein is confidential. The software may not be copied and the information
7# contained herein may not be used or disclosed except with the written
8# permission of MediaTek Inc. (C) 2012
9#
10# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
11# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
12# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
13# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
14# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
15# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
16# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
17# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
18# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
19# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
20# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
21# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
22#
23# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
24# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
25# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
26# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
27# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
28#
29# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
30# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
31# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
32# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
33# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
34#
35#*****************************************************************************
36#*
37#* Filename:
38#* ---------
39#* gencxifchksum.pl
40#*
41#* Project:
42#* --------
43#*
44#*
45#* Description:
46#* ------------
47#* This script is to generate verno.c/verno.h
48#*
49#* Author:
50#* -------
51#* Chi-Chun Lu (mtk09348)
52#*
53#*============================================================================
54#* HISTORY
55#* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56#*------------------------------------------------------------------------------
57#* $Revision$
58#* $Modtime$
59#* $Log$
60#*
61#* 08 27 2019 chi-chun.lu
62#* [MOLY00428038] [MakeFile] [UMOLYE] [Modify Makefile Rules]cxif enhancement
63#*
64#* .
65#*
66#* 08 02 2019 chi-chun.lu
67#* [MOLY00428038] [MakeFile] [UMOLYE] [Modify Makefile Rules]cxif enhancement
68#* .
69#*
70#* 02 18 2019 gerry.liao
71#* [MOLY00384186] [6297] CSIF checksum feature development
72#* .
73#*
74#*------------------------------------------------------------------------------
75#* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
76#*============================================================================
77#****************************************************************************/
78#****************************************************************************
79# Included Modules
80#****************************************************************************
81BEGIN { push @INC, './tools/CXIF/' }
82use strict;
83use CUIF_Structure_Check;
84use CMIF_Structure_Check;
85use CSIF_Structure_Check;
86
87#****************************************************************************
88# Input Parameters & Global Variables
89#****************************************************************************
90my $project_name = $ARGV[0];
91my $flavor = $ARGV[1];
92my $mtk_modem_arch = $ARGV[2];
93my $gencxiffdr = $ARGV[3];
94my $source_file = "cxifchksum.c";
95my $header_file = "cxifchksum.h";
96#****************************************************************************
97# CXIF Variables Setting
98#****************************************************************************
99my $cxif_dir = "../common/interface/modem/$mtk_modem_arch";
100my $cuif_inner_checksum = CUIF_Structure_Check::get_cuif_checksum_value(0, "$cxif_dir/CUIF");
101my $cuif_brp_checksum = CUIF_Structure_Check::get_cuif_checksum_value(1, "$cxif_dir/CUIF");
102my $cuif_fec_checksum = CUIF_Structure_Check::get_cuif_checksum_value(2, "$cxif_dir/CUIF");
103my $cuif_speech_checksum = CUIF_Structure_Check::get_cuif_checksum_value(3, "$cxif_dir/CUIF");
104my $cmif_checksum = CMIF_Structure_Check::get_cmif_checksum_value("$cxif_dir/CMIF");
105#****************************************************************************
106# CSIF Variables Setting
107#****************************************************************************
108my $csif_csif_checksum;
109my $csif_slm_checksum;
110my $csif_nl1fwk_checksum;
111my $csif_ulsp_checksum;
112my $csif_nl1tx_checksum;
113if (($mtk_modem_arch ne "mt6293")&&($mtk_modem_arch ne "mt6295"))
114{
115 my $check_result = CSIF_Structure_Check::xml_format_checker("$cxif_dir/CSIF/CSIF_chksum_list.xml");
116 if ($check_result == 1)
117 {
118 $csif_csif_checksum = CSIF_Structure_Check::get_csif_checksum_value(0, "$cxif_dir/CSIF", "$cxif_dir/CSIF/CSIF_chksum_list.xml");
119 $csif_slm_checksum = CSIF_Structure_Check::get_csif_checksum_value(1, "$cxif_dir/CSIF", "$cxif_dir/CSIF/CSIF_chksum_list.xml");
120 $csif_nl1fwk_checksum = CSIF_Structure_Check::get_csif_checksum_value(2, "$cxif_dir/CSIF", "$cxif_dir/CSIF/CSIF_chksum_list.xml");
121 $csif_ulsp_checksum = CSIF_Structure_Check::get_csif_checksum_value(3, "$cxif_dir/CSIF", "$cxif_dir/CSIF/CSIF_chksum_list.xml");
122 $csif_nl1tx_checksum = CSIF_Structure_Check::get_csif_checksum_value(4, "$cxif_dir/CSIF", "$cxif_dir/CSIF/CSIF_chksum_list.xml");
123 }
124 else
125 {
126 &error_handler("CSIF Structure Check Fail!", __FILE__, __LINE__);
127 }
128}
129#****************************************************************************
130# subroutines
131#****************************************************************************
132#****************************************************************************
133# Execute
134#****************************************************************************
135open (SRCFILE, ">$gencxiffdr/$source_file") or &error_handler("$gencxiffdr/$source_file : file error!", __FILE__, __LINE__);
136if (($mtk_modem_arch ne "mt6293")&&($mtk_modem_arch ne "mt6295")){
137 print SRCFILE &gen_cxif_src_declare_97;
138} else {
139 print SRCFILE &gen_cxif_src_declare;
140}
141print SRCFILE &gen_cxif_src_get_cuif_check_sum;
142print SRCFILE &gen_cxif_src_get_cmif_check_sum;
143print SRCFILE &gen_cxif_src_get_csif_check_sum if (($mtk_modem_arch ne "mt6293")&&($mtk_modem_arch ne "mt6295"));
144close SRCFILE;
145
146open (H_FILE, ">$gencxiffdr/$header_file") or &error_handler("$gencxiffdr/$header_file : file error!", __FILE__, __LINE__);
147print H_FILE &gen_cxif_header_file;
148close H_FILE;
149
150#****************************************************************************
151# subroutine: gencxif_cxif
152#****************************************************************************
153sub gencxif_cxif
154{
155 return " v0.00 , initial version ";
156}
157
158#****************************************************************************
159# subroutine: gen_cxif_header_file
160#****************************************************************************
161sub gen_cxif_header_file
162{
163 my $template = <<"__TEMPLATE";
164#define PROJECT_NAME_STR "$project_name"
165#define PROJECT_FLAVOR_STR "$flavor"
166__TEMPLATE
167}
168
169#****************************************************************************
170# 1. subroutine: gen_cxif_src_declare
171#****************************************************************************
172sub gen_cxif_src_declare
173{
174 my $template = <<"__TEMPLATE";
175#include "kal_public_api.h"
176#if defined(__MTK_TARGET__)
177kal_uint32 CUIF_inner_checksum = $cuif_inner_checksum;
178kal_uint32 CUIF_brp_checksum = $cuif_brp_checksum;
179kal_uint32 CUIF_fec_checksum = $cuif_fec_checksum;
180kal_uint32 CUIF_speech_checksum = $cuif_speech_checksum;
181#endif
182__TEMPLATE
183
184}
185
186#****************************************************************************
187# 1. subroutine: gen_cxif_src_declare_97
188#****************************************************************************
189sub gen_cxif_src_declare_97
190{
191 my $template = <<"__TEMPLATE";
192#include "kal_public_api.h"
193#if defined(__MTK_TARGET__)
194kal_uint32 CUIF_inner_checksum = $cuif_inner_checksum;
195kal_uint32 CUIF_brp_checksum = $cuif_brp_checksum;
196kal_uint32 CUIF_fec_checksum = $cuif_fec_checksum;
197kal_uint32 CUIF_speech_checksum = $cuif_speech_checksum;
198
199kal_uint32 CSIF_csif_checksum = $csif_csif_checksum;
200kal_uint32 CSIF_slm_checksum = $csif_slm_checksum;
201kal_uint32 CSIF_nl1fwk_checksum = $csif_nl1fwk_checksum;
202kal_uint32 CSIF_ulsp_checksum = $csif_ulsp_checksum;
203kal_uint32 CSIF_nl1tx_checksum = $csif_nl1tx_checksum;
204#endif
205__TEMPLATE
206
207}
208
209#****************************************************************************
210# 1. subroutine: gen_cxif_src_get_cuif_check_sum
211#****************************************************************************
212sub gen_cxif_src_get_cuif_check_sum
213{
214 my $template = <<"__TEMPLATE";
215kal_uint32 getCUIFStructureChecksum(int user) // 0: inner, 1:brp, 2:fec, 3:speech
216{
217#if defined(__MTK_TARGET__)
218 switch(user)
219 {
220 case 0:
221 return CUIF_inner_checksum;
222 case 1:
223 return CUIF_brp_checksum;
224 case 2:
225 return CUIF_fec_checksum;
226 case 3:
227 return CUIF_speech_checksum;
228 default: // incorrect user input
229 return 0;
230 }
231#else
232 static kal_uint32 CUIF_inner_checksum = $cuif_inner_checksum;
233 static kal_uint32 CUIF_brp_checksum = $cuif_brp_checksum;
234 static kal_uint32 CUIF_fec_checksum = $cuif_fec_checksum;
235 static kal_uint32 CUIF_speech_checksum = $cuif_speech_checksum;
236
237 switch(user)
238 {
239 case 0:
240 return CUIF_inner_checksum;
241 case 1:
242 return CUIF_brp_checksum;
243 case 2:
244 return CUIF_fec_checksum;
245 case 3:
246 return CUIF_speech_checksum;
247 default: // incorrect user input
248 return 0;
249 }
250#endif
251}
252
253__TEMPLATE
254}
255
256#****************************************************************************
257# 2. subroutine: gen_cxif_src_get_cmif_check_sum
258#****************************************************************************
259sub gen_cxif_src_get_cmif_check_sum
260{
261 my $template = <<"__TEMPLATE";
262kal_uint32 getCMIFStructureChecksum(void)
263{
264 static kal_uint32 CMIF_checksum = $cmif_checksum;
265 return CMIF_checksum;
266}
267
268__TEMPLATE
269}
270
271#****************************************************************************
272# 3. subroutine: gen_cxif_src_get_csif_check_sum
273#****************************************************************************
274sub gen_cxif_src_get_csif_check_sum
275{
276 my $template = <<"__TEMPLATE";
277kal_uint32 getCSIFStructureChecksum(int user) // 0: csif, 1:slm, 2:nl1fwk, 3:ulsp, 4:nl1tx
278{
279#if defined(__MTK_TARGET__)
280 switch(user)
281 {
282 case 0:
283 return CSIF_csif_checksum;
284 case 1:
285 return CSIF_slm_checksum;
286 case 2:
287 return CSIF_nl1fwk_checksum;
288 case 3:
289 return CSIF_ulsp_checksum;
290 case 4:
291 return CSIF_nl1tx_checksum;
292 default: // incorrect user input
293 return 0;
294 }
295#else
296 static kal_uint32 CSIF_csif_checksum = $csif_csif_checksum;
297 static kal_uint32 CSIF_slm_checksum = $csif_slm_checksum;
298 static kal_uint32 CSIF_nl1fwk_checksum = $csif_nl1fwk_checksum;
299 static kal_uint32 CSIF_ulsp_checksum = $csif_ulsp_checksum;
300 static kal_uint32 CSIF_nl1tx_checksum = $csif_nl1tx_checksum;
301
302 switch(user)
303 {
304 case 0:
305 return CSIF_csif_checksum;
306 case 1:
307 return CSIF_slm_checksum;
308 case 2:
309 return CSIF_nl1fwk_checksum;
310 case 3:
311 return CSIF_ulsp_checksum;
312 case 4:
313 return CSIF_nl1tx_checksum;
314 default: // incorrect user input
315 return 0;
316 }
317#endif
318}
319
320__TEMPLATE
321}
322
323#****************************************************************************
324# subroutine: error_handler
325# input: $error_msg: error message
326#****************************************************************************
327sub error_handler
328{
329 my ($error_msg, $file, $line_no) = @_;
330
331 my $final_error_msg = "GENCXIF CHECKSUM ERROR: $error_msg at $file line $line_no\n";
332 print $final_error_msg;
333 die $final_error_msg;
334}
335