]>
Commit | Line | Data |
---|---|---|
a594dcba MCC |
1 | #!/usr/bin/perl |
2 | ||
3 | # Copyright (c) Mauro Carvalho Chehab <[email protected]> | |
4 | # Released under GPLv2 | |
5 | # | |
6 | # In order to use, you need to: | |
7 | # 1) Download the windows driver with something like: | |
c590402b MCC |
8 | # Version 2.4 |
9 | # wget http://www.twinhan.com/files/AW/BDA T/20080303_V1.0.6.7.zip | |
10 | # or wget http://www.stefanringel.de/pub/20080303_V1.0.6.7.zip | |
11 | # Version 2.7 | |
a594dcba | 12 | # wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip |
c590402b MCC |
13 | # 2) Extract the files from the zip into the current dir: |
14 | # unzip -j 20080303_V1.0.6.7.zip 20080303_v1.0.6.7/UDXTTM6000.sys | |
a594dcba MCC |
15 | # unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys |
16 | # 3) run the script: | |
17 | # ./extract_xc3028.pl | |
c590402b MCC |
18 | # 4) copy the generated files: |
19 | # cp xc3028-v24.fw /lib/firmware | |
a594dcba MCC |
20 | # cp xc3028-v27.fw /lib/firmware |
21 | ||
22 | #use strict; | |
23 | use IO::Handle; | |
24 | ||
25 | my $debug=0; | |
26 | ||
27 | sub verify ($$) | |
28 | { | |
29 | my ($filename, $hash) = @_; | |
30 | my ($testhash); | |
31 | ||
32 | if (system("which md5sum > /dev/null 2>&1")) { | |
33 | die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n"; | |
34 | } | |
35 | ||
36 | open(CMD, "md5sum ".$filename."|"); | |
37 | $testhash = <CMD>; | |
38 | $testhash =~ /([a-zA-Z0-9]*)/; | |
39 | $testhash = $1; | |
40 | close CMD; | |
41 | die "Hash of extracted file does not match (found $testhash, expected $hash!\n" if ($testhash ne $hash); | |
42 | } | |
43 | ||
44 | sub get_hunk ($$) | |
45 | { | |
46 | my ($offset, $length) = @_; | |
47 | my ($chunklength, $buf, $rcount, $out); | |
48 | ||
49 | sysseek(INFILE, $offset, SEEK_SET); | |
50 | while ($length > 0) { | |
51 | # Calc chunk size | |
52 | $chunklength = 2048; | |
53 | $chunklength = $length if ($chunklength > $length); | |
54 | ||
55 | $rcount = sysread(INFILE, $buf, $chunklength); | |
56 | die "Ran out of data\n" if ($rcount != $chunklength); | |
57 | $out .= $buf; | |
58 | $length -= $rcount; | |
59 | } | |
60 | return $out; | |
61 | } | |
62 | ||
63 | sub write_le16($) | |
64 | { | |
65 | my $val = shift; | |
66 | my $msb = ($val >> 8) &0xff; | |
67 | my $lsb = $val & 0xff; | |
68 | ||
69 | syswrite(OUTFILE, chr($lsb).chr($msb)); | |
70 | } | |
71 | ||
72 | sub write_le32($) | |
73 | { | |
74 | my $val = shift; | |
75 | my $l3 = ($val >> 24) & 0xff; | |
76 | my $l2 = ($val >> 16) & 0xff; | |
77 | my $l1 = ($val >> 8) & 0xff; | |
78 | my $l0 = $val & 0xff; | |
79 | ||
80 | syswrite(OUTFILE, chr($l0).chr($l1).chr($l2).chr($l3)); | |
81 | } | |
82 | ||
83 | sub write_le64($$) | |
84 | { | |
85 | my $msb_val = shift; | |
86 | my $lsb_val = shift; | |
87 | my $l7 = ($msb_val >> 24) & 0xff; | |
88 | my $l6 = ($msb_val >> 16) & 0xff; | |
89 | my $l5 = ($msb_val >> 8) & 0xff; | |
90 | my $l4 = $msb_val & 0xff; | |
91 | ||
92 | my $l3 = ($lsb_val >> 24) & 0xff; | |
93 | my $l2 = ($lsb_val >> 16) & 0xff; | |
94 | my $l1 = ($lsb_val >> 8) & 0xff; | |
95 | my $l0 = $lsb_val & 0xff; | |
96 | ||
97 | syswrite(OUTFILE, | |
98 | chr($l0).chr($l1).chr($l2).chr($l3). | |
99 | chr($l4).chr($l5).chr($l6).chr($l7)); | |
100 | } | |
101 | ||
102 | sub write_hunk($$) | |
103 | { | |
104 | my ($offset, $length) = @_; | |
105 | my $out = get_hunk($offset, $length); | |
106 | ||
107 | printf "(len %d) ",$length if ($debug); | |
108 | ||
109 | for (my $i=0;$i<$length;$i++) { | |
110 | printf "%02x ",ord(substr($out,$i,1)) if ($debug); | |
111 | } | |
112 | printf "\n" if ($debug); | |
113 | ||
114 | syswrite(OUTFILE, $out); | |
115 | } | |
116 | ||
117 | sub write_hunk_fix_endian($$) | |
118 | { | |
119 | my ($offset, $length) = @_; | |
120 | my $out = get_hunk($offset, $length); | |
121 | ||
122 | printf "(len_fix %d) ",$length if ($debug); | |
123 | ||
124 | for (my $i=0;$i<$length;$i++) { | |
125 | printf "%02x ",ord(substr($out,$i,1)) if ($debug); | |
126 | } | |
127 | printf "\n" if ($debug); | |
128 | ||
129 | my $i=0; | |
130 | while ($i<$length) { | |
131 | my $size = ord(substr($out,$i,1))*256+ord(substr($out,$i+1,1)); | |
132 | syswrite(OUTFILE, substr($out,$i+1,1)); | |
133 | syswrite(OUTFILE, substr($out,$i,1)); | |
134 | $i+=2; | |
135 | if ($size>0 && $size <0x8000) { | |
136 | for (my $j=0;$j<$size;$j++) { | |
137 | syswrite(OUTFILE, substr($out,$j+$i,1)); | |
138 | } | |
139 | $i+=$size; | |
140 | } | |
141 | } | |
142 | } | |
143 | ||
c590402b | 144 | sub main_firmware_24($$$$) |
a594dcba MCC |
145 | { |
146 | my $out; | |
147 | my $j=0; | |
148 | my $outfile = shift; | |
149 | my $name = shift; | |
150 | my $version = shift; | |
151 | my $nr_desc = shift; | |
152 | ||
153 | for ($j = length($name); $j <32; $j++) { | |
154 | $name = $name.chr(0); | |
c590402b MCC |
155 | } |
156 | ||
157 | open OUTFILE, ">$outfile"; | |
158 | syswrite(OUTFILE, $name); | |
159 | write_le16($version); | |
160 | write_le16($nr_desc); | |
161 | ||
162 | # | |
163 | # Firmware 0, type: BASE FW F8MHZ (0x00000003), id: (0000000000000000), size: 6635 | |
164 | # | |
165 | ||
166 | write_le32(0x00000003); # Type | |
167 | write_le64(0x00000000, 0x00000000); # ID | |
168 | write_le32(6635); # Size | |
169 | write_hunk_fix_endian(257752, 6635); | |
170 | ||
171 | # | |
172 | # Firmware 1, type: BASE FW F8MHZ MTS (0x00000007), id: (0000000000000000), size: 6635 | |
173 | # | |
174 | ||
175 | write_le32(0x00000007); # Type | |
176 | write_le64(0x00000000, 0x00000000); # ID | |
177 | write_le32(6635); # Size | |
178 | write_hunk_fix_endian(264392, 6635); | |
179 | ||
180 | # | |
181 | # Firmware 2, type: BASE FW FM (0x00000401), id: (0000000000000000), size: 6525 | |
182 | # | |
183 | ||
184 | write_le32(0x00000401); # Type | |
185 | write_le64(0x00000000, 0x00000000); # ID | |
186 | write_le32(6525); # Size | |
187 | write_hunk_fix_endian(271040, 6525); | |
188 | ||
189 | # | |
190 | # Firmware 3, type: BASE FW FM INPUT1 (0x00000c01), id: (0000000000000000), size: 6539 | |
191 | # | |
192 | ||
193 | write_le32(0x00000c01); # Type | |
194 | write_le64(0x00000000, 0x00000000); # ID | |
195 | write_le32(6539); # Size | |
196 | write_hunk_fix_endian(277568, 6539); | |
197 | ||
198 | # | |
199 | # Firmware 4, type: BASE FW (0x00000001), id: (0000000000000000), size: 6633 | |
200 | # | |
201 | ||
202 | write_le32(0x00000001); # Type | |
203 | write_le64(0x00000000, 0x00000000); # ID | |
204 | write_le32(6633); # Size | |
205 | write_hunk_fix_endian(284120, 6633); | |
206 | ||
207 | # | |
208 | # Firmware 5, type: BASE FW MTS (0x00000005), id: (0000000000000000), size: 6617 | |
209 | # | |
210 | ||
211 | write_le32(0x00000005); # Type | |
212 | write_le64(0x00000000, 0x00000000); # ID | |
213 | write_le32(6617); # Size | |
214 | write_hunk_fix_endian(290760, 6617); | |
215 | ||
216 | # | |
217 | # Firmware 6, type: STD FW (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161 | |
218 | # | |
219 | ||
220 | write_le32(0x00000000); # Type | |
221 | write_le64(0x00000001, 0x00000007); # ID | |
222 | write_le32(161); # Size | |
223 | write_hunk_fix_endian(297384, 161); | |
224 | ||
225 | # | |
226 | # Firmware 7, type: STD FW MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169 | |
227 | # | |
228 | ||
229 | write_le32(0x00000004); # Type | |
230 | write_le64(0x00000001, 0x00000007); # ID | |
231 | write_le32(169); # Size | |
232 | write_hunk_fix_endian(297552, 169); | |
233 | ||
234 | # | |
235 | # Firmware 8, type: STD FW (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161 | |
236 | # | |
237 | ||
238 | write_le32(0x00000000); # Type | |
239 | write_le64(0x00000002, 0x00000007); # ID | |
240 | write_le32(161); # Size | |
241 | write_hunk_fix_endian(297728, 161); | |
242 | ||
243 | # | |
244 | # Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169 | |
245 | # | |
246 | ||
247 | write_le32(0x00000004); # Type | |
248 | write_le64(0x00000002, 0x00000007); # ID | |
249 | write_le32(169); # Size | |
250 | write_hunk_fix_endian(297896, 169); | |
251 | ||
252 | # | |
253 | # Firmware 10, type: STD FW (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161 | |
254 | # | |
255 | ||
256 | write_le32(0x00000000); # Type | |
257 | write_le64(0x00000004, 0x00000007); # ID | |
258 | write_le32(161); # Size | |
259 | write_hunk_fix_endian(298072, 161); | |
260 | ||
261 | # | |
262 | # Firmware 11, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169 | |
263 | # | |
264 | ||
265 | write_le32(0x00000004); # Type | |
266 | write_le64(0x00000004, 0x00000007); # ID | |
267 | write_le32(169); # Size | |
268 | write_hunk_fix_endian(298240, 169); | |
269 | ||
270 | # | |
271 | # Firmware 12, type: STD FW (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161 | |
272 | # | |
273 | ||
274 | write_le32(0x00000000); # Type | |
275 | write_le64(0x00000008, 0x00000007); # ID | |
276 | write_le32(161); # Size | |
277 | write_hunk_fix_endian(298416, 161); | |
278 | ||
279 | # | |
280 | # Firmware 13, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169 | |
281 | # | |
282 | ||
283 | write_le32(0x00000004); # Type | |
284 | write_le64(0x00000008, 0x00000007); # ID | |
285 | write_le32(169); # Size | |
286 | write_hunk_fix_endian(298584, 169); | |
287 | ||
288 | # | |
289 | # Firmware 14, type: STD FW (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161 | |
290 | # | |
291 | ||
292 | write_le32(0x00000000); # Type | |
293 | write_le64(0x00000003, 0x000000e0); # ID | |
294 | write_le32(161); # Size | |
295 | write_hunk_fix_endian(298760, 161); | |
296 | ||
297 | # | |
298 | # Firmware 15, type: STD FW MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169 | |
299 | # | |
300 | ||
301 | write_le32(0x00000004); # Type | |
302 | write_le64(0x00000003, 0x000000e0); # ID | |
303 | write_le32(169); # Size | |
304 | write_hunk_fix_endian(298928, 169); | |
305 | ||
306 | # | |
307 | # Firmware 16, type: STD FW (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161 | |
308 | # | |
309 | ||
310 | write_le32(0x00000000); # Type | |
311 | write_le64(0x0000000c, 0x000000e0); # ID | |
312 | write_le32(161); # Size | |
313 | write_hunk_fix_endian(299104, 161); | |
314 | ||
315 | # | |
316 | # Firmware 17, type: STD FW MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169 | |
317 | # | |
318 | ||
319 | write_le32(0x00000004); # Type | |
320 | write_le64(0x0000000c, 0x000000e0); # ID | |
321 | write_le32(169); # Size | |
322 | write_hunk_fix_endian(299272, 169); | |
323 | ||
324 | # | |
325 | # Firmware 18, type: STD FW (0x00000000), id: SECAM/K1 (0000000000200000), size: 161 | |
326 | # | |
327 | ||
328 | write_le32(0x00000000); # Type | |
329 | write_le64(0x00000000, 0x00200000); # ID | |
330 | write_le32(161); # Size | |
331 | write_hunk_fix_endian(299448, 161); | |
332 | ||
333 | # | |
334 | # Firmware 19, type: STD FW MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169 | |
335 | # | |
336 | ||
337 | write_le32(0x00000004); # Type | |
338 | write_le64(0x00000000, 0x00200000); # ID | |
339 | write_le32(169); # Size | |
340 | write_hunk_fix_endian(299616, 169); | |
341 | ||
342 | # | |
343 | # Firmware 20, type: STD FW (0x00000000), id: SECAM/K3 (0000000004000000), size: 161 | |
344 | # | |
345 | ||
346 | write_le32(0x00000000); # Type | |
347 | write_le64(0x00000000, 0x04000000); # ID | |
348 | write_le32(161); # Size | |
349 | write_hunk_fix_endian(299792, 161); | |
350 | ||
351 | # | |
352 | # Firmware 21, type: STD FW MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169 | |
353 | # | |
354 | ||
355 | write_le32(0x00000004); # Type | |
356 | write_le64(0x00000000, 0x04000000); # ID | |
357 | write_le32(169); # Size | |
358 | write_hunk_fix_endian(299960, 169); | |
359 | ||
360 | # | |
361 | # Firmware 22, type: STD FW D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149 | |
362 | # | |
363 | ||
364 | write_le32(0x00010030); # Type | |
365 | write_le64(0x00000000, 0x00000000); # ID | |
366 | write_le32(149); # Size | |
367 | write_hunk_fix_endian(300136, 149); | |
368 | ||
369 | # | |
370 | # Firmware 23, type: STD FW D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149 | |
371 | # | |
372 | ||
373 | write_le32(0x00000068); # Type | |
374 | write_le64(0x00000000, 0x00000000); # ID | |
375 | write_le32(149); # Size | |
376 | write_hunk_fix_endian(300296, 149); | |
377 | ||
378 | # | |
379 | # Firmware 24, type: STD FW D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149 | |
380 | # | |
381 | ||
382 | write_le32(0x00000070); # Type | |
383 | write_le64(0x00000000, 0x00000000); # ID | |
384 | write_le32(149); # Size | |
385 | write_hunk_fix_endian(300448, 149); | |
386 | ||
387 | # | |
388 | # Firmware 25, type: STD FW D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149 | |
389 | # | |
390 | ||
391 | write_le32(0x00000088); # Type | |
392 | write_le64(0x00000000, 0x00000000); # ID | |
393 | write_le32(149); # Size | |
394 | write_hunk_fix_endian(300608, 149); | |
395 | ||
396 | # | |
397 | # Firmware 26, type: STD FW D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149 | |
398 | # | |
399 | ||
400 | write_le32(0x00000090); # Type | |
401 | write_le64(0x00000000, 0x00000000); # ID | |
402 | write_le32(149); # Size | |
403 | write_hunk_fix_endian(300760, 149); | |
404 | ||
405 | # | |
406 | # Firmware 27, type: STD FW D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149 | |
407 | # | |
408 | ||
409 | write_le32(0x00000108); # Type | |
410 | write_le64(0x00000000, 0x00000000); # ID | |
411 | write_le32(149); # Size | |
412 | write_hunk_fix_endian(300920, 149); | |
413 | ||
414 | # | |
415 | # Firmware 28, type: STD FW D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149 | |
416 | # | |
417 | ||
418 | write_le32(0x00000110); # Type | |
419 | write_le64(0x00000000, 0x00000000); # ID | |
420 | write_le32(149); # Size | |
421 | write_hunk_fix_endian(301072, 149); | |
422 | ||
423 | # | |
424 | # Firmware 29, type: STD FW D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149 | |
425 | # | |
426 | ||
427 | write_le32(0x00000208); # Type | |
428 | write_le64(0x00000000, 0x00000000); # ID | |
429 | write_le32(149); # Size | |
430 | write_hunk_fix_endian(301232, 149); | |
431 | ||
432 | # | |
433 | # Firmware 30, type: STD FW D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149 | |
434 | # | |
435 | ||
436 | write_le32(0x00000210); # Type | |
437 | write_le64(0x00000000, 0x00000000); # ID | |
438 | write_le32(149); # Size | |
439 | write_hunk_fix_endian(301384, 149); | |
440 | ||
441 | # | |
442 | # Firmware 31, type: STD FW FM (0x00000400), id: (0000000000000000), size: 135 | |
443 | # | |
444 | ||
445 | write_le32(0x00000400); # Type | |
446 | write_le64(0x00000000, 0x00000000); # ID | |
447 | write_le32(135); # Size | |
448 | write_hunk_fix_endian(301554, 135); | |
449 | ||
450 | # | |
451 | # Firmware 32, type: STD FW (0x00000000), id: PAL/I (0000000000000010), size: 161 | |
452 | # | |
453 | ||
454 | write_le32(0x00000000); # Type | |
455 | write_le64(0x00000000, 0x00000010); # ID | |
456 | write_le32(161); # Size | |
457 | write_hunk_fix_endian(301688, 161); | |
458 | ||
459 | # | |
460 | # Firmware 33, type: STD FW MTS (0x00000004), id: PAL/I (0000000000000010), size: 169 | |
461 | # | |
462 | ||
463 | write_le32(0x00000004); # Type | |
464 | write_le64(0x00000000, 0x00000010); # ID | |
465 | write_le32(169); # Size | |
466 | write_hunk_fix_endian(301856, 169); | |
467 | ||
468 | # | |
469 | # Firmware 34, type: STD FW (0x00000000), id: SECAM/L AM (0000001000400000), size: 169 | |
470 | # | |
471 | ||
472 | # | |
473 | # Firmware 35, type: STD FW (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161 | |
474 | # | |
475 | ||
476 | write_le32(0x00000000); # Type | |
477 | write_le64(0x0000000c, 0x00400000); # ID | |
478 | write_le32(161); # Size | |
479 | write_hunk_fix_endian(302032, 161); | |
480 | ||
481 | # | |
482 | # Firmware 36, type: STD FW (0x00000000), id: SECAM/Lc (0000000000800000), size: 161 | |
483 | # | |
484 | ||
485 | write_le32(0x00000000); # Type | |
486 | write_le64(0x00000000, 0x00800000); # ID | |
487 | write_le32(161); # Size | |
488 | write_hunk_fix_endian(302200, 161); | |
489 | ||
490 | # | |
491 | # Firmware 37, type: STD FW (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161 | |
492 | # | |
493 | ||
494 | write_le32(0x00000000); # Type | |
495 | write_le64(0x00000000, 0x00008000); # ID | |
496 | write_le32(161); # Size | |
497 | write_hunk_fix_endian(302368, 161); | |
498 | ||
499 | # | |
500 | # Firmware 38, type: STD FW LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161 | |
501 | # | |
502 | ||
503 | write_le32(0x00001000); # Type | |
504 | write_le64(0x00000000, 0x00008000); # ID | |
505 | write_le32(161); # Size | |
506 | write_hunk_fix_endian(302536, 161); | |
507 | ||
508 | # | |
509 | # Firmware 39, type: STD FW LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161 | |
510 | # | |
511 | ||
512 | write_le32(0x00003000); # Type | |
513 | write_le64(0x00000000, 0x00008000); # ID | |
514 | write_le32(161); # Size | |
515 | write_hunk_fix_endian(302704, 161); | |
516 | ||
517 | # | |
518 | # Firmware 40, type: STD FW MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169 | |
519 | # | |
520 | ||
521 | write_le32(0x00000004); # Type | |
522 | write_le64(0x00000000, 0x00008000); # ID | |
523 | write_le32(169); # Size | |
524 | write_hunk_fix_endian(302872, 169); | |
525 | ||
526 | # | |
527 | # Firmware 41, type: STD FW (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
528 | # | |
529 | ||
530 | write_le32(0x00000000); # Type | |
531 | write_le64(0x00000000, 0x0000b700); # ID | |
532 | write_le32(161); # Size | |
533 | write_hunk_fix_endian(303048, 161); | |
534 | ||
535 | # | |
536 | # Firmware 42, type: STD FW LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
537 | # | |
538 | ||
539 | write_le32(0x00001000); # Type | |
540 | write_le64(0x00000000, 0x0000b700); # ID | |
541 | write_le32(161); # Size | |
542 | write_hunk_fix_endian(303216, 161); | |
543 | ||
544 | # | |
545 | # Firmware 43, type: STD FW LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
546 | # | |
547 | ||
548 | write_le32(0x00003000); # Type | |
549 | write_le64(0x00000000, 0x0000b700); # ID | |
550 | write_le32(161); # Size | |
551 | write_hunk_fix_endian(303384, 161); | |
552 | ||
553 | # | |
554 | # Firmware 44, type: STD FW (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161 | |
555 | # | |
556 | ||
557 | write_le32(0x00000000); # Type | |
558 | write_le64(0x00000000, 0x00002000); # ID | |
559 | write_le32(161); # Size | |
560 | write_hunk_fix_endian(303552, 161); | |
561 | ||
562 | # | |
563 | # Firmware 45, type: STD FW MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
564 | # | |
565 | ||
566 | write_le32(0x00000004); # Type | |
567 | write_le64(0x00000000, 0x0000b700); # ID | |
568 | write_le32(169); # Size | |
569 | write_hunk_fix_endian(303720, 169); | |
570 | ||
571 | # | |
572 | # Firmware 46, type: STD FW MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
573 | # | |
574 | ||
575 | write_le32(0x00001004); # Type | |
576 | write_le64(0x00000000, 0x0000b700); # ID | |
577 | write_le32(169); # Size | |
578 | write_hunk_fix_endian(303896, 169); | |
579 | ||
580 | # | |
581 | # Firmware 47, type: STD FW MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
582 | # | |
583 | ||
584 | write_le32(0x00003004); # Type | |
585 | write_le64(0x00000000, 0x0000b700); # ID | |
586 | write_le32(169); # Size | |
587 | write_hunk_fix_endian(304072, 169); | |
588 | ||
589 | # | |
590 | # Firmware 48, type: SCODE FW HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192 | |
591 | # | |
592 | ||
593 | write_le32(0x60000000); # Type | |
594 | write_le64(0x00000000, 0x00000000); # ID | |
595 | write_le16(3280); # IF | |
596 | write_le32(192); # Size | |
597 | write_hunk(309048, 192); | |
598 | ||
599 | # | |
600 | # Firmware 49, type: SCODE FW HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192 | |
601 | # | |
602 | ||
603 | # write_le32(0x60000000); # Type | |
604 | # write_le64(0x00000000, 0x00000000); # ID | |
605 | # write_le16(3300); # IF | |
606 | # write_le32(192); # Size | |
607 | # write_hunk(304440, 192); | |
608 | ||
609 | # | |
610 | # Firmware 50, type: SCODE FW HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192 | |
611 | # | |
612 | ||
613 | write_le32(0x60000000); # Type | |
614 | write_le64(0x00000000, 0x00000000); # ID | |
615 | write_le16(3440); # IF | |
616 | write_le32(192); # Size | |
617 | write_hunk(309432, 192); | |
618 | ||
619 | # | |
620 | # Firmware 51, type: SCODE FW HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192 | |
621 | # | |
622 | ||
623 | write_le32(0x60000000); # Type | |
624 | write_le64(0x00000000, 0x00000000); # ID | |
625 | write_le16(3460); # IF | |
626 | write_le32(192); # Size | |
627 | write_hunk(309624, 192); | |
628 | ||
629 | # | |
630 | # Firmware 52, type: SCODE FW DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192 | |
631 | # | |
632 | ||
633 | write_le32(0x60210020); # Type | |
634 | write_le64(0x00000000, 0x00000000); # ID | |
635 | write_le16(3800); # IF | |
636 | write_le32(192); # Size | |
637 | write_hunk(306936, 192); | |
638 | ||
639 | # | |
640 | # Firmware 53, type: SCODE FW HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192 | |
641 | # | |
642 | ||
643 | write_le32(0x60000000); # Type | |
644 | write_le64(0x00000000, 0x00000000); # ID | |
645 | write_le16(4000); # IF | |
646 | write_le32(192); # Size | |
647 | write_hunk(309240, 192); | |
648 | ||
649 | # | |
650 | # Firmware 54, type: SCODE FW DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192 | |
651 | # | |
652 | ||
653 | write_le32(0x60410020); # Type | |
654 | write_le64(0x00000000, 0x00000000); # ID | |
655 | write_le16(4080); # IF | |
656 | write_le32(192); # Size | |
657 | write_hunk(307128, 192); | |
658 | ||
659 | # | |
660 | # Firmware 55, type: SCODE FW HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192 | |
661 | # | |
662 | ||
663 | write_le32(0x60000000); # Type | |
664 | write_le64(0x00000000, 0x00000000); # ID | |
665 | write_le16(4200); # IF | |
666 | write_le32(192); # Size | |
667 | write_hunk(308856, 192); | |
668 | ||
669 | # | |
670 | # Firmware 56, type: SCODE FW MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192 | |
671 | # | |
672 | ||
673 | write_le32(0x60008000); # Type | |
674 | write_le64(0x00000000, 0x00008000); # ID | |
675 | write_le16(4320); # IF | |
676 | write_le32(192); # Size | |
677 | write_hunk(305208, 192); | |
678 | ||
679 | # | |
680 | # Firmware 57, type: SCODE FW HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192 | |
681 | # | |
682 | ||
683 | write_le32(0x60000000); # Type | |
684 | write_le64(0x00000000, 0x00000000); # ID | |
685 | write_le16(4450); # IF | |
686 | write_le32(192); # Size | |
687 | write_hunk(309816, 192); | |
688 | ||
689 | # | |
690 | # Firmware 58, type: SCODE FW MTS LCD NOGD MONO IF HAS IF (0x6002b004), IF = 4.50 MHz id: NTSC PAL/M PAL/N (000000000000b700), size: 192 | |
691 | # | |
692 | ||
693 | write_le32(0x6002b004); # Type | |
694 | write_le64(0x00000000, 0x0000b700); # ID | |
695 | write_le16(4500); # IF | |
696 | write_le32(192); # Size | |
697 | write_hunk(304824, 192); | |
698 | ||
699 | # | |
700 | # Firmware 59, type: SCODE FW LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192 | |
701 | # | |
702 | ||
703 | write_le32(0x60023000); # Type | |
704 | write_le64(0x00000000, 0x00008000); # ID | |
705 | write_le16(4600); # IF | |
706 | write_le32(192); # Size | |
707 | write_hunk(305016, 192); | |
708 | ||
709 | # | |
710 | # Firmware 60, type: SCODE FW DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 HAS IF (0x620003e0), IF = 4.76 MHz id: (0000000000000000), size: 192 | |
711 | # | |
712 | ||
713 | write_le32(0x620003e0); # Type | |
714 | write_le64(0x00000000, 0x00000000); # ID | |
715 | write_le16(4760); # IF | |
716 | write_le32(192); # Size | |
717 | write_hunk(304440, 192); | |
718 | ||
719 | # | |
720 | # Firmware 61, type: SCODE FW HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192 | |
721 | # | |
722 | ||
723 | write_le32(0x60000000); # Type | |
724 | write_le64(0x00000000, 0x00000000); # ID | |
725 | write_le16(4940); # IF | |
726 | write_le32(192); # Size | |
727 | write_hunk(308664, 192); | |
728 | ||
729 | # | |
730 | # Firmware 62, type: SCODE FW HAS IF (0x60000000), IF = 5.26 MHz id: (0000000000000000), size: 192 | |
731 | # | |
732 | ||
733 | write_le32(0x60000000); # Type | |
734 | write_le64(0x00000000, 0x00000000); # ID | |
735 | write_le16(5260); # IF | |
736 | write_le32(192); # Size | |
737 | write_hunk(307704, 192); | |
738 | ||
739 | # | |
740 | # Firmware 63, type: SCODE FW MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG A2 NICAM (0000000f00000007), size: 192 | |
741 | # | |
742 | ||
743 | write_le32(0x60008000); # Type | |
744 | write_le64(0x0000000f, 0x00000007); # ID | |
745 | write_le16(5320); # IF | |
746 | write_le32(192); # Size | |
747 | write_hunk(307896, 192); | |
748 | ||
749 | # | |
750 | # Firmware 64, type: SCODE FW DTV7 DTV78 DTV8 DIBCOM52 CHINA HAS IF (0x65000380), IF = 5.40 MHz id: (0000000000000000), size: 192 | |
751 | # | |
752 | ||
753 | write_le32(0x65000380); # Type | |
754 | write_le64(0x00000000, 0x00000000); # ID | |
755 | write_le16(5400); # IF | |
756 | write_le32(192); # Size | |
757 | write_hunk(304248, 192); | |
758 | ||
759 | # | |
760 | # Firmware 65, type: SCODE FW DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192 | |
761 | # | |
762 | ||
763 | write_le32(0x60110020); # Type | |
764 | write_le64(0x00000000, 0x00000000); # ID | |
765 | write_le16(5580); # IF | |
766 | write_le32(192); # Size | |
767 | write_hunk(306744, 192); | |
768 | ||
769 | # | |
770 | # Firmware 66, type: SCODE FW HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2 (0000000300000007), size: 192 | |
771 | # | |
772 | ||
773 | write_le32(0x60000000); # Type | |
774 | write_le64(0x00000003, 0x00000007); # ID | |
775 | write_le16(5640); # IF | |
776 | write_le32(192); # Size | |
777 | write_hunk(305592, 192); | |
778 | ||
779 | # | |
780 | # Firmware 67, type: SCODE FW HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM (0000000c00000007), size: 192 | |
781 | # | |
782 | ||
783 | write_le32(0x60000000); # Type | |
784 | write_le64(0x0000000c, 0x00000007); # ID | |
785 | write_le16(5740); # IF | |
786 | write_le32(192); # Size | |
787 | write_hunk(305784, 192); | |
788 | ||
789 | # | |
790 | # Firmware 68, type: SCODE FW HAS IF (0x60000000), IF = 5.90 MHz id: (0000000000000000), size: 192 | |
791 | # | |
792 | ||
793 | write_le32(0x60000000); # Type | |
794 | write_le64(0x00000000, 0x00000000); # ID | |
795 | write_le16(5900); # IF | |
796 | write_le32(192); # Size | |
797 | write_hunk(307512, 192); | |
798 | ||
799 | # | |
800 | # Firmware 69, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/DK PAL/I SECAM/K3 SECAM/L SECAM/Lc NICAM (0000000c04c000f0), size: 192 | |
801 | # | |
802 | ||
803 | write_le32(0x60008000); # Type | |
804 | write_le64(0x0000000c, 0x04c000f0); # ID | |
805 | write_le16(6000); # IF | |
806 | write_le32(192); # Size | |
807 | write_hunk(305576, 192); | |
808 | ||
809 | # | |
810 | # Firmware 70, type: SCODE FW DTV6 QAM ATSC LG60 F6MHZ HAS IF (0x68050060), IF = 6.20 MHz id: (0000000000000000), size: 192 | |
811 | # | |
812 | ||
813 | write_le32(0x68050060); # Type | |
814 | write_le64(0x00000000, 0x00000000); # ID | |
815 | write_le16(6200); # IF | |
816 | write_le32(192); # Size | |
817 | write_hunk(306552, 192); | |
818 | ||
819 | # | |
820 | # Firmware 71, type: SCODE FW HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192 | |
821 | # | |
822 | ||
823 | write_le32(0x60000000); # Type | |
824 | write_le64(0x00000000, 0x00000010); # ID | |
825 | write_le16(6240); # IF | |
826 | write_le32(192); # Size | |
827 | write_hunk(305400, 192); | |
828 | ||
829 | # | |
830 | # Firmware 72, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192 | |
831 | # | |
832 | ||
833 | write_le32(0x60008000); # Type | |
834 | write_le64(0x00000000, 0x00200000); # ID | |
835 | write_le16(6320); # IF | |
836 | write_le32(192); # Size | |
837 | write_hunk(308472, 192); | |
838 | ||
839 | # | |
840 | # Firmware 73, type: SCODE FW HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192 | |
841 | # | |
842 | ||
843 | write_le32(0x60000000); # Type | |
844 | write_le64(0x00000000, 0x00200000); # ID | |
845 | write_le16(6340); # IF | |
846 | write_le32(192); # Size | |
847 | write_hunk(306360, 192); | |
848 | ||
849 | # | |
850 | # Firmware 74, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.50 MHz id: PAL/DK SECAM/K3 SECAM/L NICAM (0000000c044000e0), size: 192 | |
851 | # | |
852 | ||
853 | write_le32(0x60008000); # Type | |
854 | write_le64(0x0000000c, 0x044000e0); # ID | |
855 | write_le16(6500); # IF | |
856 | write_le32(192); # Size | |
857 | write_hunk(308280, 192); | |
858 | ||
859 | # | |
860 | # Firmware 75, type: SCODE FW DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192 | |
861 | # | |
862 | ||
863 | write_le32(0x60090020); # Type | |
864 | write_le64(0x00000000, 0x00000000); # ID | |
865 | write_le16(6580); # IF | |
866 | write_le32(192); # Size | |
867 | write_hunk(304632, 192); | |
868 | ||
869 | # | |
870 | # Firmware 76, type: SCODE FW HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192 | |
871 | # | |
872 | ||
873 | write_le32(0x60000000); # Type | |
874 | write_le64(0x00000003, 0x000000e0); # ID | |
875 | write_le16(6600); # IF | |
876 | write_le32(192); # Size | |
877 | write_hunk(306168, 192); | |
878 | ||
879 | # | |
880 | # Firmware 77, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192 | |
881 | # | |
882 | ||
883 | write_le32(0x60008000); # Type | |
884 | write_le64(0x00000003, 0x000000e0); # ID | |
885 | write_le16(6680); # IF | |
886 | write_le32(192); # Size | |
887 | write_hunk(308088, 192); | |
888 | ||
889 | # | |
890 | # Firmware 78, type: SCODE FW DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192 | |
891 | # | |
892 | ||
893 | write_le32(0x60810020); # Type | |
894 | write_le64(0x00000000, 0x00000000); # ID | |
895 | write_le16(8140); # IF | |
896 | write_le32(192); # Size | |
897 | write_hunk(307320, 192); | |
898 | ||
899 | # | |
900 | # Firmware 79, type: SCODE FW HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192 | |
901 | # | |
902 | ||
903 | # write_le32(0x60000000); # Type | |
904 | # write_le64(0x00000000, 0x00000000); # ID | |
905 | # write_le16(8200); # IF | |
906 | # write_le32(192); # Size | |
907 | # write_hunk(308088, 192); | |
a594dcba MCC |
908 | } |
909 | ||
c590402b MCC |
910 | sub main_firmware_27($$$$) |
911 | { | |
912 | my $out; | |
913 | my $j=0; | |
914 | my $outfile = shift; | |
915 | my $name = shift; | |
916 | my $version = shift; | |
917 | my $nr_desc = shift; | |
918 | ||
919 | for ($j = length($name); $j <32; $j++) { | |
920 | $name = $name.chr(0); | |
921 | } | |
922 | ||
a594dcba MCC |
923 | open OUTFILE, ">$outfile"; |
924 | syswrite(OUTFILE, $name); | |
925 | write_le16($version); | |
926 | write_le16($nr_desc); | |
927 | ||
928 | # | |
929 | # Firmware 0, type: BASE FW F8MHZ (0x00000003), id: (0000000000000000), size: 8718 | |
930 | # | |
931 | ||
932 | write_le32(0x00000003); # Type | |
933 | write_le64(0x00000000, 0x00000000); # ID | |
934 | write_le32(8718); # Size | |
935 | write_hunk_fix_endian(813432, 8718); | |
936 | ||
937 | # | |
938 | # Firmware 1, type: BASE FW F8MHZ MTS (0x00000007), id: (0000000000000000), size: 8712 | |
939 | # | |
940 | ||
941 | write_le32(0x00000007); # Type | |
942 | write_le64(0x00000000, 0x00000000); # ID | |
943 | write_le32(8712); # Size | |
944 | write_hunk_fix_endian(822152, 8712); | |
945 | ||
946 | # | |
947 | # Firmware 2, type: BASE FW FM (0x00000401), id: (0000000000000000), size: 8562 | |
948 | # | |
949 | ||
950 | write_le32(0x00000401); # Type | |
951 | write_le64(0x00000000, 0x00000000); # ID | |
952 | write_le32(8562); # Size | |
953 | write_hunk_fix_endian(830872, 8562); | |
954 | ||
955 | # | |
956 | # Firmware 3, type: BASE FW FM INPUT1 (0x00000c01), id: (0000000000000000), size: 8576 | |
957 | # | |
958 | ||
959 | write_le32(0x00000c01); # Type | |
960 | write_le64(0x00000000, 0x00000000); # ID | |
961 | write_le32(8576); # Size | |
962 | write_hunk_fix_endian(839440, 8576); | |
963 | ||
964 | # | |
965 | # Firmware 4, type: BASE FW (0x00000001), id: (0000000000000000), size: 8706 | |
966 | # | |
967 | ||
968 | write_le32(0x00000001); # Type | |
969 | write_le64(0x00000000, 0x00000000); # ID | |
970 | write_le32(8706); # Size | |
971 | write_hunk_fix_endian(848024, 8706); | |
972 | ||
973 | # | |
974 | # Firmware 5, type: BASE FW MTS (0x00000005), id: (0000000000000000), size: 8682 | |
975 | # | |
976 | ||
977 | write_le32(0x00000005); # Type | |
978 | write_le64(0x00000000, 0x00000000); # ID | |
979 | write_le32(8682); # Size | |
980 | write_hunk_fix_endian(856736, 8682); | |
981 | ||
982 | # | |
983 | # Firmware 6, type: STD FW (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161 | |
984 | # | |
985 | ||
986 | write_le32(0x00000000); # Type | |
987 | write_le64(0x00000001, 0x00000007); # ID | |
988 | write_le32(161); # Size | |
989 | write_hunk_fix_endian(865424, 161); | |
990 | ||
991 | # | |
992 | # Firmware 7, type: STD FW MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169 | |
993 | # | |
994 | ||
995 | write_le32(0x00000004); # Type | |
996 | write_le64(0x00000001, 0x00000007); # ID | |
997 | write_le32(169); # Size | |
998 | write_hunk_fix_endian(865592, 169); | |
999 | ||
1000 | # | |
1001 | # Firmware 8, type: STD FW (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161 | |
1002 | # | |
1003 | ||
1004 | write_le32(0x00000000); # Type | |
1005 | write_le64(0x00000002, 0x00000007); # ID | |
1006 | write_le32(161); # Size | |
1007 | write_hunk_fix_endian(865424, 161); | |
1008 | ||
1009 | # | |
1010 | # Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169 | |
1011 | # | |
1012 | ||
1013 | write_le32(0x00000004); # Type | |
1014 | write_le64(0x00000002, 0x00000007); # ID | |
1015 | write_le32(169); # Size | |
1016 | write_hunk_fix_endian(865592, 169); | |
1017 | ||
1018 | # | |
1019 | # Firmware 10, type: STD FW (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161 | |
1020 | # | |
1021 | ||
1022 | write_le32(0x00000000); # Type | |
1023 | write_le64(0x00000004, 0x00000007); # ID | |
1024 | write_le32(161); # Size | |
1025 | write_hunk_fix_endian(866112, 161); | |
1026 | ||
1027 | # | |
1028 | # Firmware 11, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169 | |
1029 | # | |
1030 | ||
1031 | write_le32(0x00000004); # Type | |
1032 | write_le64(0x00000004, 0x00000007); # ID | |
1033 | write_le32(169); # Size | |
1034 | write_hunk_fix_endian(866280, 169); | |
1035 | ||
1036 | # | |
1037 | # Firmware 12, type: STD FW (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161 | |
1038 | # | |
1039 | ||
1040 | write_le32(0x00000000); # Type | |
1041 | write_le64(0x00000008, 0x00000007); # ID | |
1042 | write_le32(161); # Size | |
1043 | write_hunk_fix_endian(866112, 161); | |
1044 | ||
1045 | # | |
1046 | # Firmware 13, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169 | |
1047 | # | |
1048 | ||
1049 | write_le32(0x00000004); # Type | |
1050 | write_le64(0x00000008, 0x00000007); # ID | |
1051 | write_le32(169); # Size | |
1052 | write_hunk_fix_endian(866280, 169); | |
1053 | ||
1054 | # | |
1055 | # Firmware 14, type: STD FW (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161 | |
1056 | # | |
1057 | ||
1058 | write_le32(0x00000000); # Type | |
1059 | write_le64(0x00000003, 0x000000e0); # ID | |
1060 | write_le32(161); # Size | |
1061 | write_hunk_fix_endian(866800, 161); | |
1062 | ||
1063 | # | |
1064 | # Firmware 15, type: STD FW MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169 | |
1065 | # | |
1066 | ||
1067 | write_le32(0x00000004); # Type | |
1068 | write_le64(0x00000003, 0x000000e0); # ID | |
1069 | write_le32(169); # Size | |
1070 | write_hunk_fix_endian(866968, 169); | |
1071 | ||
1072 | # | |
1073 | # Firmware 16, type: STD FW (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161 | |
1074 | # | |
1075 | ||
1076 | write_le32(0x00000000); # Type | |
1077 | write_le64(0x0000000c, 0x000000e0); # ID | |
1078 | write_le32(161); # Size | |
1079 | write_hunk_fix_endian(867144, 161); | |
1080 | ||
1081 | # | |
1082 | # Firmware 17, type: STD FW MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169 | |
1083 | # | |
1084 | ||
1085 | write_le32(0x00000004); # Type | |
1086 | write_le64(0x0000000c, 0x000000e0); # ID | |
1087 | write_le32(169); # Size | |
1088 | write_hunk_fix_endian(867312, 169); | |
1089 | ||
1090 | # | |
1091 | # Firmware 18, type: STD FW (0x00000000), id: SECAM/K1 (0000000000200000), size: 161 | |
1092 | # | |
1093 | ||
1094 | write_le32(0x00000000); # Type | |
1095 | write_le64(0x00000000, 0x00200000); # ID | |
1096 | write_le32(161); # Size | |
1097 | write_hunk_fix_endian(867488, 161); | |
1098 | ||
1099 | # | |
1100 | # Firmware 19, type: STD FW MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169 | |
1101 | # | |
1102 | ||
1103 | write_le32(0x00000004); # Type | |
1104 | write_le64(0x00000000, 0x00200000); # ID | |
1105 | write_le32(169); # Size | |
1106 | write_hunk_fix_endian(867656, 169); | |
1107 | ||
1108 | # | |
1109 | # Firmware 20, type: STD FW (0x00000000), id: SECAM/K3 (0000000004000000), size: 161 | |
1110 | # | |
1111 | ||
1112 | write_le32(0x00000000); # Type | |
1113 | write_le64(0x00000000, 0x04000000); # ID | |
1114 | write_le32(161); # Size | |
1115 | write_hunk_fix_endian(867832, 161); | |
1116 | ||
1117 | # | |
1118 | # Firmware 21, type: STD FW MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169 | |
1119 | # | |
1120 | ||
1121 | write_le32(0x00000004); # Type | |
1122 | write_le64(0x00000000, 0x04000000); # ID | |
1123 | write_le32(169); # Size | |
1124 | write_hunk_fix_endian(868000, 169); | |
1125 | ||
1126 | # | |
1127 | # Firmware 22, type: STD FW D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149 | |
1128 | # | |
1129 | ||
1130 | write_le32(0x00010030); # Type | |
1131 | write_le64(0x00000000, 0x00000000); # ID | |
1132 | write_le32(149); # Size | |
1133 | write_hunk_fix_endian(868176, 149); | |
1134 | ||
1135 | # | |
1136 | # Firmware 23, type: STD FW D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149 | |
1137 | # | |
1138 | ||
1139 | write_le32(0x00000068); # Type | |
1140 | write_le64(0x00000000, 0x00000000); # ID | |
1141 | write_le32(149); # Size | |
1142 | write_hunk_fix_endian(868336, 149); | |
1143 | ||
1144 | # | |
1145 | # Firmware 24, type: STD FW D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149 | |
1146 | # | |
1147 | ||
1148 | write_le32(0x00000070); # Type | |
1149 | write_le64(0x00000000, 0x00000000); # ID | |
1150 | write_le32(149); # Size | |
1151 | write_hunk_fix_endian(868488, 149); | |
1152 | ||
1153 | # | |
1154 | # Firmware 25, type: STD FW D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149 | |
1155 | # | |
1156 | ||
1157 | write_le32(0x00000088); # Type | |
1158 | write_le64(0x00000000, 0x00000000); # ID | |
1159 | write_le32(149); # Size | |
1160 | write_hunk_fix_endian(868648, 149); | |
1161 | ||
1162 | # | |
1163 | # Firmware 26, type: STD FW D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149 | |
1164 | # | |
1165 | ||
1166 | write_le32(0x00000090); # Type | |
1167 | write_le64(0x00000000, 0x00000000); # ID | |
1168 | write_le32(149); # Size | |
1169 | write_hunk_fix_endian(868800, 149); | |
1170 | ||
1171 | # | |
1172 | # Firmware 27, type: STD FW D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149 | |
1173 | # | |
1174 | ||
1175 | write_le32(0x00000108); # Type | |
1176 | write_le64(0x00000000, 0x00000000); # ID | |
1177 | write_le32(149); # Size | |
1178 | write_hunk_fix_endian(868960, 149); | |
1179 | ||
1180 | # | |
1181 | # Firmware 28, type: STD FW D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149 | |
1182 | # | |
1183 | ||
1184 | write_le32(0x00000110); # Type | |
1185 | write_le64(0x00000000, 0x00000000); # ID | |
1186 | write_le32(149); # Size | |
1187 | write_hunk_fix_endian(869112, 149); | |
1188 | ||
1189 | # | |
1190 | # Firmware 29, type: STD FW D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149 | |
1191 | # | |
1192 | ||
1193 | write_le32(0x00000208); # Type | |
1194 | write_le64(0x00000000, 0x00000000); # ID | |
1195 | write_le32(149); # Size | |
1196 | write_hunk_fix_endian(868648, 149); | |
1197 | ||
1198 | # | |
1199 | # Firmware 30, type: STD FW D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149 | |
1200 | # | |
1201 | ||
1202 | write_le32(0x00000210); # Type | |
1203 | write_le64(0x00000000, 0x00000000); # ID | |
1204 | write_le32(149); # Size | |
1205 | write_hunk_fix_endian(868800, 149); | |
1206 | ||
1207 | # | |
1208 | # Firmware 31, type: STD FW FM (0x00000400), id: (0000000000000000), size: 135 | |
1209 | # | |
1210 | ||
1211 | write_le32(0x00000400); # Type | |
1212 | write_le64(0x00000000, 0x00000000); # ID | |
1213 | write_le32(135); # Size | |
1214 | write_hunk_fix_endian(869584, 135); | |
1215 | ||
1216 | # | |
1217 | # Firmware 32, type: STD FW (0x00000000), id: PAL/I (0000000000000010), size: 161 | |
1218 | # | |
1219 | ||
1220 | write_le32(0x00000000); # Type | |
1221 | write_le64(0x00000000, 0x00000010); # ID | |
1222 | write_le32(161); # Size | |
1223 | write_hunk_fix_endian(869728, 161); | |
1224 | ||
1225 | # | |
1226 | # Firmware 33, type: STD FW MTS (0x00000004), id: PAL/I (0000000000000010), size: 169 | |
1227 | # | |
1228 | ||
1229 | write_le32(0x00000004); # Type | |
1230 | write_le64(0x00000000, 0x00000010); # ID | |
1231 | write_le32(169); # Size | |
1232 | write_hunk_fix_endian(869896, 169); | |
1233 | ||
1234 | # | |
1235 | # Firmware 34, type: STD FW (0x00000000), id: SECAM/L AM (0000001000400000), size: 169 | |
1236 | # | |
1237 | ||
1238 | write_le32(0x00000000); # Type | |
1239 | write_le64(0x00000010, 0x00400000); # ID | |
1240 | write_le32(169); # Size | |
1241 | write_hunk_fix_endian(870072, 169); | |
1242 | ||
1243 | # | |
1244 | # Firmware 35, type: STD FW (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161 | |
1245 | # | |
1246 | ||
1247 | write_le32(0x00000000); # Type | |
1248 | write_le64(0x0000000c, 0x00400000); # ID | |
1249 | write_le32(161); # Size | |
1250 | write_hunk_fix_endian(870248, 161); | |
1251 | ||
1252 | # | |
1253 | # Firmware 36, type: STD FW (0x00000000), id: SECAM/Lc (0000000000800000), size: 161 | |
1254 | # | |
1255 | ||
1256 | write_le32(0x00000000); # Type | |
1257 | write_le64(0x00000000, 0x00800000); # ID | |
1258 | write_le32(161); # Size | |
1259 | write_hunk_fix_endian(870416, 161); | |
1260 | ||
1261 | # | |
1262 | # Firmware 37, type: STD FW (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161 | |
1263 | # | |
1264 | ||
1265 | write_le32(0x00000000); # Type | |
1266 | write_le64(0x00000000, 0x00008000); # ID | |
1267 | write_le32(161); # Size | |
1268 | write_hunk_fix_endian(870584, 161); | |
1269 | ||
1270 | # | |
1271 | # Firmware 38, type: STD FW LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161 | |
1272 | # | |
1273 | ||
1274 | write_le32(0x00001000); # Type | |
1275 | write_le64(0x00000000, 0x00008000); # ID | |
1276 | write_le32(161); # Size | |
1277 | write_hunk_fix_endian(870752, 161); | |
1278 | ||
1279 | # | |
1280 | # Firmware 39, type: STD FW LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161 | |
1281 | # | |
1282 | ||
1283 | write_le32(0x00003000); # Type | |
1284 | write_le64(0x00000000, 0x00008000); # ID | |
1285 | write_le32(161); # Size | |
1286 | write_hunk_fix_endian(870920, 161); | |
1287 | ||
1288 | # | |
1289 | # Firmware 40, type: STD FW MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169 | |
1290 | # | |
1291 | ||
1292 | write_le32(0x00000004); # Type | |
1293 | write_le64(0x00000000, 0x00008000); # ID | |
1294 | write_le32(169); # Size | |
1295 | write_hunk_fix_endian(871088, 169); | |
1296 | ||
1297 | # | |
1298 | # Firmware 41, type: STD FW (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
1299 | # | |
1300 | ||
1301 | write_le32(0x00000000); # Type | |
1302 | write_le64(0x00000000, 0x0000b700); # ID | |
1303 | write_le32(161); # Size | |
1304 | write_hunk_fix_endian(871264, 161); | |
1305 | ||
1306 | # | |
1307 | # Firmware 42, type: STD FW LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
1308 | # | |
1309 | ||
1310 | write_le32(0x00001000); # Type | |
1311 | write_le64(0x00000000, 0x0000b700); # ID | |
1312 | write_le32(161); # Size | |
1313 | write_hunk_fix_endian(871432, 161); | |
1314 | ||
1315 | # | |
1316 | # Firmware 43, type: STD FW LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161 | |
1317 | # | |
1318 | ||
1319 | write_le32(0x00003000); # Type | |
1320 | write_le64(0x00000000, 0x0000b700); # ID | |
1321 | write_le32(161); # Size | |
1322 | write_hunk_fix_endian(871600, 161); | |
1323 | ||
1324 | # | |
1325 | # Firmware 44, type: STD FW (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161 | |
1326 | # | |
1327 | ||
1328 | write_le32(0x00000000); # Type | |
1329 | write_le64(0x00000000, 0x00002000); # ID | |
1330 | write_le32(161); # Size | |
1331 | write_hunk_fix_endian(871264, 161); | |
1332 | ||
1333 | # | |
1334 | # Firmware 45, type: STD FW MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
1335 | # | |
1336 | ||
1337 | write_le32(0x00000004); # Type | |
1338 | write_le64(0x00000000, 0x0000b700); # ID | |
1339 | write_le32(169); # Size | |
1340 | write_hunk_fix_endian(871936, 169); | |
1341 | ||
1342 | # | |
1343 | # Firmware 46, type: STD FW MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
1344 | # | |
1345 | ||
1346 | write_le32(0x00001004); # Type | |
1347 | write_le64(0x00000000, 0x0000b700); # ID | |
1348 | write_le32(169); # Size | |
1349 | write_hunk_fix_endian(872112, 169); | |
1350 | ||
1351 | # | |
1352 | # Firmware 47, type: STD FW MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169 | |
1353 | # | |
1354 | ||
1355 | write_le32(0x00003004); # Type | |
1356 | write_le64(0x00000000, 0x0000b700); # ID | |
1357 | write_le32(169); # Size | |
1358 | write_hunk_fix_endian(872288, 169); | |
1359 | ||
1360 | # | |
1361 | # Firmware 48, type: SCODE FW HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192 | |
1362 | # | |
1363 | ||
1364 | write_le32(0x60000000); # Type | |
1365 | write_le64(0x00000000, 0x00000000); # ID | |
1366 | write_le16(3280); # IF | |
1367 | write_le32(192); # Size | |
1368 | write_hunk(811896, 192); | |
1369 | ||
1370 | # | |
1371 | # Firmware 49, type: SCODE FW HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192 | |
1372 | # | |
1373 | ||
1374 | write_le32(0x60000000); # Type | |
1375 | write_le64(0x00000000, 0x00000000); # ID | |
1376 | write_le16(3300); # IF | |
1377 | write_le32(192); # Size | |
1378 | write_hunk(813048, 192); | |
1379 | ||
1380 | # | |
1381 | # Firmware 50, type: SCODE FW HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192 | |
1382 | # | |
1383 | ||
1384 | write_le32(0x60000000); # Type | |
1385 | write_le64(0x00000000, 0x00000000); # ID | |
1386 | write_le16(3440); # IF | |
1387 | write_le32(192); # Size | |
1388 | write_hunk(812280, 192); | |
1389 | ||
1390 | # | |
1391 | # Firmware 51, type: SCODE FW HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192 | |
1392 | # | |
1393 | ||
1394 | write_le32(0x60000000); # Type | |
1395 | write_le64(0x00000000, 0x00000000); # ID | |
1396 | write_le16(3460); # IF | |
1397 | write_le32(192); # Size | |
1398 | write_hunk(812472, 192); | |
1399 | ||
1400 | # | |
1401 | # Firmware 52, type: SCODE FW DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192 | |
1402 | # | |
1403 | ||
1404 | write_le32(0x60210020); # Type | |
1405 | write_le64(0x00000000, 0x00000000); # ID | |
1406 | write_le16(3800); # IF | |
1407 | write_le32(192); # Size | |
1408 | write_hunk(809784, 192); | |
1409 | ||
1410 | # | |
1411 | # Firmware 53, type: SCODE FW HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192 | |
1412 | # | |
1413 | ||
1414 | write_le32(0x60000000); # Type | |
1415 | write_le64(0x00000000, 0x00000000); # ID | |
1416 | write_le16(4000); # IF | |
1417 | write_le32(192); # Size | |
1418 | write_hunk(812088, 192); | |
1419 | ||
1420 | # | |
1421 | # Firmware 54, type: SCODE FW DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192 | |
1422 | # | |
1423 | ||
1424 | write_le32(0x60410020); # Type | |
1425 | write_le64(0x00000000, 0x00000000); # ID | |
1426 | write_le16(4080); # IF | |
1427 | write_le32(192); # Size | |
1428 | write_hunk(809976, 192); | |
1429 | ||
1430 | # | |
1431 | # Firmware 55, type: SCODE FW HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192 | |
1432 | # | |
1433 | ||
1434 | write_le32(0x60000000); # Type | |
1435 | write_le64(0x00000000, 0x00000000); # ID | |
1436 | write_le16(4200); # IF | |
1437 | write_le32(192); # Size | |
1438 | write_hunk(811704, 192); | |
1439 | ||
1440 | # | |
1441 | # Firmware 56, type: SCODE FW MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192 | |
1442 | # | |
1443 | ||
1444 | write_le32(0x60008000); # Type | |
1445 | write_le64(0x00000000, 0x00008000); # ID | |
1446 | write_le16(4320); # IF | |
1447 | write_le32(192); # Size | |
1448 | write_hunk(808056, 192); | |
1449 | ||
1450 | # | |
1451 | # Firmware 57, type: SCODE FW HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192 | |
1452 | # | |
1453 | ||
1454 | write_le32(0x60000000); # Type | |
1455 | write_le64(0x00000000, 0x00000000); # ID | |
1456 | write_le16(4450); # IF | |
1457 | write_le32(192); # Size | |
1458 | write_hunk(812664, 192); | |
1459 | ||
1460 | # | |
33e53161 | 1461 | # Firmware 58, type: SCODE FW MTS LCD NOGD MONO IF HAS IF (0x6002b004), IF = 4.50 MHz id: NTSC PAL/M PAL/N (000000000000b700), size: 192 |
a594dcba MCC |
1462 | # |
1463 | ||
33e53161 MCC |
1464 | write_le32(0x6002b004); # Type |
1465 | write_le64(0x00000000, 0x0000b700); # ID | |
a594dcba MCC |
1466 | write_le16(4500); # IF |
1467 | write_le32(192); # Size | |
1468 | write_hunk(807672, 192); | |
1469 | ||
1470 | # | |
1471 | # Firmware 59, type: SCODE FW LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192 | |
1472 | # | |
1473 | ||
1474 | write_le32(0x60023000); # Type | |
1475 | write_le64(0x00000000, 0x00008000); # ID | |
1476 | write_le16(4600); # IF | |
1477 | write_le32(192); # Size | |
1478 | write_hunk(807864, 192); | |
1479 | ||
1480 | # | |
33e53161 | 1481 | # Firmware 60, type: SCODE FW DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 HAS IF (0x620003e0), IF = 4.76 MHz id: (0000000000000000), size: 192 |
a594dcba MCC |
1482 | # |
1483 | ||
33e53161 | 1484 | write_le32(0x620003e0); # Type |
a594dcba MCC |
1485 | write_le64(0x00000000, 0x00000000); # ID |
1486 | write_le16(4760); # IF | |
1487 | write_le32(192); # Size | |
1488 | write_hunk(807288, 192); | |
1489 | ||
1490 | # | |
1491 | # Firmware 61, type: SCODE FW HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192 | |
1492 | # | |
1493 | ||
1494 | write_le32(0x60000000); # Type | |
1495 | write_le64(0x00000000, 0x00000000); # ID | |
1496 | write_le16(4940); # IF | |
1497 | write_le32(192); # Size | |
1498 | write_hunk(811512, 192); | |
1499 | ||
1500 | # | |
33e53161 | 1501 | # Firmware 62, type: SCODE FW HAS IF (0x60000000), IF = 5.26 MHz id: (0000000000000000), size: 192 |
a594dcba MCC |
1502 | # |
1503 | ||
33e53161 | 1504 | write_le32(0x60000000); # Type |
a594dcba MCC |
1505 | write_le64(0x00000000, 0x00000000); # ID |
1506 | write_le16(5260); # IF | |
1507 | write_le32(192); # Size | |
1508 | write_hunk(810552, 192); | |
1509 | ||
1510 | # | |
33e53161 | 1511 | # Firmware 63, type: SCODE FW MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG A2 NICAM (0000000f00000007), size: 192 |
a594dcba MCC |
1512 | # |
1513 | ||
1514 | write_le32(0x60008000); # Type | |
33e53161 | 1515 | write_le64(0x0000000f, 0x00000007); # ID |
a594dcba MCC |
1516 | write_le16(5320); # IF |
1517 | write_le32(192); # Size | |
1518 | write_hunk(810744, 192); | |
1519 | ||
1520 | # | |
33e53161 | 1521 | # Firmware 64, type: SCODE FW DTV7 DTV78 DTV8 DIBCOM52 CHINA HAS IF (0x65000380), IF = 5.40 MHz id: (0000000000000000), size: 192 |
a594dcba MCC |
1522 | # |
1523 | ||
33e53161 | 1524 | write_le32(0x65000380); # Type |
a594dcba MCC |
1525 | write_le64(0x00000000, 0x00000000); # ID |
1526 | write_le16(5400); # IF | |
1527 | write_le32(192); # Size | |
1528 | write_hunk(807096, 192); | |
1529 | ||
1530 | # | |
1531 | # Firmware 65, type: SCODE FW DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192 | |
1532 | # | |
1533 | ||
1534 | write_le32(0x60110020); # Type | |
1535 | write_le64(0x00000000, 0x00000000); # ID | |
1536 | write_le16(5580); # IF | |
1537 | write_le32(192); # Size | |
1538 | write_hunk(809592, 192); | |
1539 | ||
1540 | # | |
33e53161 | 1541 | # Firmware 66, type: SCODE FW HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2 (0000000300000007), size: 192 |
a594dcba MCC |
1542 | # |
1543 | ||
1544 | write_le32(0x60000000); # Type | |
33e53161 | 1545 | write_le64(0x00000003, 0x00000007); # ID |
a594dcba MCC |
1546 | write_le16(5640); # IF |
1547 | write_le32(192); # Size | |
1548 | write_hunk(808440, 192); | |
1549 | ||
1550 | # | |
33e53161 | 1551 | # Firmware 67, type: SCODE FW HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM (0000000c00000007), size: 192 |
a594dcba MCC |
1552 | # |
1553 | ||
1554 | write_le32(0x60000000); # Type | |
33e53161 | 1555 | write_le64(0x0000000c, 0x00000007); # ID |
a594dcba MCC |
1556 | write_le16(5740); # IF |
1557 | write_le32(192); # Size | |
1558 | write_hunk(808632, 192); | |
1559 | ||
1560 | # | |
33e53161 | 1561 | # Firmware 68, type: SCODE FW HAS IF (0x60000000), IF = 5.90 MHz id: (0000000000000000), size: 192 |
a594dcba MCC |
1562 | # |
1563 | ||
33e53161 | 1564 | write_le32(0x60000000); # Type |
a594dcba MCC |
1565 | write_le64(0x00000000, 0x00000000); # ID |
1566 | write_le16(5900); # IF | |
1567 | write_le32(192); # Size | |
1568 | write_hunk(810360, 192); | |
1569 | ||
1570 | # | |
33e53161 | 1571 | # Firmware 69, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/DK PAL/I SECAM/K3 SECAM/L SECAM/Lc NICAM (0000000c04c000f0), size: 192 |
a594dcba MCC |
1572 | # |
1573 | ||
1574 | write_le32(0x60008000); # Type | |
33e53161 | 1575 | write_le64(0x0000000c, 0x04c000f0); # ID |
a594dcba MCC |
1576 | write_le16(6000); # IF |
1577 | write_le32(192); # Size | |
1578 | write_hunk(808824, 192); | |
1579 | ||
1580 | # | |
33e53161 | 1581 | # Firmware 70, type: SCODE FW DTV6 QAM ATSC LG60 F6MHZ HAS IF (0x68050060), IF = 6.20 MHz id: (0000000000000000), size: 192 |
a594dcba MCC |
1582 | # |
1583 | ||
33e53161 | 1584 | write_le32(0x68050060); # Type |
a594dcba MCC |
1585 | write_le64(0x00000000, 0x00000000); # ID |
1586 | write_le16(6200); # IF | |
1587 | write_le32(192); # Size | |
1588 | write_hunk(809400, 192); | |
1589 | ||
1590 | # | |
1591 | # Firmware 71, type: SCODE FW HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192 | |
1592 | # | |
1593 | ||
1594 | write_le32(0x60000000); # Type | |
1595 | write_le64(0x00000000, 0x00000010); # ID | |
1596 | write_le16(6240); # IF | |
1597 | write_le32(192); # Size | |
1598 | write_hunk(808248, 192); | |
1599 | ||
1600 | # | |
1601 | # Firmware 72, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192 | |
1602 | # | |
1603 | ||
1604 | write_le32(0x60008000); # Type | |
1605 | write_le64(0x00000000, 0x00200000); # ID | |
1606 | write_le16(6320); # IF | |
1607 | write_le32(192); # Size | |
1608 | write_hunk(811320, 192); | |
1609 | ||
1610 | # | |
1611 | # Firmware 73, type: SCODE FW HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192 | |
1612 | # | |
1613 | ||
1614 | write_le32(0x60000000); # Type | |
1615 | write_le64(0x00000000, 0x00200000); # ID | |
1616 | write_le16(6340); # IF | |
1617 | write_le32(192); # Size | |
1618 | write_hunk(809208, 192); | |
1619 | ||
1620 | # | |
33e53161 | 1621 | # Firmware 74, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.50 MHz id: PAL/DK SECAM/K3 SECAM/L NICAM (0000000c044000e0), size: 192 |
a594dcba MCC |
1622 | # |
1623 | ||
1624 | write_le32(0x60008000); # Type | |
33e53161 | 1625 | write_le64(0x0000000c, 0x044000e0); # ID |
a594dcba MCC |
1626 | write_le16(6500); # IF |
1627 | write_le32(192); # Size | |
1628 | write_hunk(811128, 192); | |
1629 | ||
1630 | # | |
1631 | # Firmware 75, type: SCODE FW DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192 | |
1632 | # | |
1633 | ||
1634 | write_le32(0x60090020); # Type | |
1635 | write_le64(0x00000000, 0x00000000); # ID | |
1636 | write_le16(6580); # IF | |
1637 | write_le32(192); # Size | |
1638 | write_hunk(807480, 192); | |
1639 | ||
1640 | # | |
1641 | # Firmware 76, type: SCODE FW HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192 | |
1642 | # | |
1643 | ||
1644 | write_le32(0x60000000); # Type | |
1645 | write_le64(0x00000003, 0x000000e0); # ID | |
1646 | write_le16(6600); # IF | |
1647 | write_le32(192); # Size | |
1648 | write_hunk(809016, 192); | |
1649 | ||
1650 | # | |
1651 | # Firmware 77, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192 | |
1652 | # | |
1653 | ||
1654 | write_le32(0x60008000); # Type | |
1655 | write_le64(0x00000003, 0x000000e0); # ID | |
1656 | write_le16(6680); # IF | |
1657 | write_le32(192); # Size | |
1658 | write_hunk(810936, 192); | |
1659 | ||
1660 | # | |
1661 | # Firmware 78, type: SCODE FW DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192 | |
1662 | # | |
1663 | ||
1664 | write_le32(0x60810020); # Type | |
1665 | write_le64(0x00000000, 0x00000000); # ID | |
1666 | write_le16(8140); # IF | |
1667 | write_le32(192); # Size | |
1668 | write_hunk(810168, 192); | |
1669 | ||
1670 | # | |
1671 | # Firmware 79, type: SCODE FW HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192 | |
1672 | # | |
1673 | ||
1674 | write_le32(0x60000000); # Type | |
1675 | write_le64(0x00000000, 0x00000000); # ID | |
1676 | write_le16(8200); # IF | |
1677 | write_le32(192); # Size | |
1678 | write_hunk(812856, 192); | |
1679 | } | |
1680 | ||
c590402b | 1681 | |
a594dcba | 1682 | sub extract_firmware { |
c590402b MCC |
1683 | my $sourcefile_24 = "UDXTTM6000.sys"; |
1684 | my $hash_24 = "cb9deb5508a5e150af2880f5b0066d78"; | |
1685 | my $outfile_24 = "xc3028-v24.fw"; | |
1686 | my $name_24 = "xc2028 firmware"; | |
1687 | my $version_24 = 516; | |
1688 | my $nr_desc_24 = 77; | |
1689 | my $out; | |
1690 | ||
1691 | my $sourcefile_27 = "hcw85bda.sys"; | |
1692 | my $hash_27 = "0e44dbf63bb0169d57446aec21881ff2"; | |
1693 | my $outfile_27 = "xc3028-v27.fw"; | |
1694 | my $name_27 = "xc2028 firmware"; | |
1695 | my $version_27 = 519; | |
1696 | my $nr_desc_27 = 80; | |
a594dcba MCC |
1697 | my $out; |
1698 | ||
c590402b MCC |
1699 | if (-e $sourcefile_24) { |
1700 | verify($sourcefile_24, $hash_24); | |
a594dcba | 1701 | |
c590402b MCC |
1702 | open INFILE, "<$sourcefile_24"; |
1703 | main_firmware_24($outfile_24, $name_24, $version_24, $nr_desc_24); | |
1704 | close INFILE; | |
1705 | } | |
1706 | ||
1707 | if (-e $sourcefile_27) { | |
1708 | verify($sourcefile_27, $hash_27); | |
1709 | ||
1710 | open INFILE, "<$sourcefile_27"; | |
1711 | main_firmware_27($outfile_27, $name_27, $version_27, $nr_desc_27); | |
1712 | close INFILE; | |
1713 | } | |
a594dcba MCC |
1714 | } |
1715 | ||
1716 | extract_firmware; | |
1717 | printf "Firmwares generated.\n"; |