diff options
author | Marco Gittler <g.marco@freenet.de> | 2007-07-04 18:18:34 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-07-18 13:24:41 -0400 |
commit | 59800555f79a52394c3c29e19e448b4635daf14c (patch) | |
tree | a6540f53684f2939bc89b26f2d72770a09d5c53e /Documentation/dvb | |
parent | b31c33bd8b339e426138dd267ec969291f802a0d (diff) |
V4L/DVB (5829): Firmware extract and loading for opera dvb-usb update
Better way of creating and loading the firmware used.
Update for get_dvb_firmware script to extract the files for opera usb-box
Help file for creating the firmware added
Signed-off-by: Marco Gittler <g.marco@freenet.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'Documentation/dvb')
-rw-r--r-- | Documentation/dvb/get_dvb_firmware | 61 | ||||
-rw-r--r-- | Documentation/dvb/opera-firmware.txt | 27 |
2 files changed, 87 insertions, 1 deletions
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index e32f79e05c85..b4d306ae9234 100644 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -24,7 +24,8 @@ use IO::Handle; | |||
24 | @components = ( "sp8870", "sp887x", "tda10045", "tda10046", | 24 | @components = ( "sp8870", "sp887x", "tda10045", "tda10046", |
25 | "tda10046lifeview", "av7110", "dec2000t", "dec2540t", | 25 | "tda10046lifeview", "av7110", "dec2000t", "dec2540t", |
26 | "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", | 26 | "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", |
27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird"); | 27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird", |
28 | "opera1"); | ||
28 | 29 | ||
29 | # Check args | 30 | # Check args |
30 | syntax() if (scalar(@ARGV) != 1); | 31 | syntax() if (scalar(@ARGV) != 1); |
@@ -210,6 +211,45 @@ sub dec3000s { | |||
210 | 211 | ||
211 | $outfile; | 212 | $outfile; |
212 | } | 213 | } |
214 | sub opera1{ | ||
215 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 0); | ||
216 | |||
217 | checkstandard(); | ||
218 | my $fwfile1="dvb-usb-opera1-fpga-01.fw"; | ||
219 | my $fwfile2="dvb-usb-opera-01.fw"; | ||
220 | extract("2830SCap2.sys", 0x62e8, 55024, "$tmpdir/opera1-fpga.fw"); | ||
221 | extract("2830SLoad2.sys",0x3178,0x3685-0x3178,"$tmpdir/fw1part1"); | ||
222 | extract("2830SLoad2.sys",0x0980,0x3150-0x0980,"$tmpdir/fw1part2"); | ||
223 | delzero("$tmpdir/fw1part1","$tmpdir/fw1part1-1"); | ||
224 | delzero("$tmpdir/fw1part2","$tmpdir/fw1part2-1"); | ||
225 | verify("$tmpdir/fw1part1-1","5e0909858fdf0b5b09ad48b9fe622e70"); | ||
226 | verify("$tmpdir/fw1part2-1","d6e146f321427e931df2c6fcadac37a1"); | ||
227 | verify("$tmpdir/opera1-fpga.fw","0f8133f5e9051f5f3c1928f7e5a1b07d"); | ||
228 | |||
229 | my $RES1="\x01\x92\x7f\x00\x01\x00"; | ||
230 | my $RES0="\x01\x92\x7f\x00\x00\x00"; | ||
231 | my $DAT1="\x01\x00\xe6\x00\x01\x00"; | ||
232 | my $DAT0="\x01\x00\xe6\x00\x00\x00"; | ||
233 | open FW,">$tmpdir/opera.fw"; | ||
234 | print FW "$RES1"; | ||
235 | print FW "$DAT1"; | ||
236 | print FW "$RES1"; | ||
237 | print FW "$DAT1"; | ||
238 | appendfile(FW,"$tmpdir/fw1part1-1"); | ||
239 | print FW "$RES0"; | ||
240 | print FW "$DAT0"; | ||
241 | print FW "$RES1"; | ||
242 | print FW "$DAT1"; | ||
243 | appendfile(FW,"$tmpdir/fw1part2-1"); | ||
244 | print FW "$RES1"; | ||
245 | print FW "$DAT1"; | ||
246 | print FW "$RES0"; | ||
247 | print FW "$DAT0"; | ||
248 | copy ("$tmpdir/opera1-fpga.fw",$fwfile1); | ||
249 | copy ("$tmpdir/opera.fw",$fwfile2); | ||
250 | |||
251 | $fwfile1.",".$fwfile2; | ||
252 | } | ||
213 | 253 | ||
214 | sub vp7041 { | 254 | sub vp7041 { |
215 | my $sourcefile = "2.422.zip"; | 255 | my $sourcefile = "2.422.zip"; |
@@ -440,6 +480,25 @@ sub appendfile { | |||
440 | close(INFILE); | 480 | close(INFILE); |
441 | } | 481 | } |
442 | 482 | ||
483 | sub delzero{ | ||
484 | my ($infile,$outfile) =@_; | ||
485 | |||
486 | open INFILE,"<$infile"; | ||
487 | open OUTFILE,">$outfile"; | ||
488 | while (1){ | ||
489 | $rcount=sysread(INFILE,$buf,22); | ||
490 | $len=ord(substr($buf,0,1)); | ||
491 | print OUTFILE substr($buf,0,1); | ||
492 | print OUTFILE substr($buf,2,$len+3); | ||
493 | last if ($rcount<1); | ||
494 | printf OUTFILE "%c",0; | ||
495 | #print $len." ".length($buf)."\n"; | ||
496 | |||
497 | } | ||
498 | close(INFILE); | ||
499 | close(OUTFILE); | ||
500 | } | ||
501 | |||
443 | sub syntax() { | 502 | sub syntax() { |
444 | print STDERR "syntax: get_dvb_firmware <component>\n"; | 503 | print STDERR "syntax: get_dvb_firmware <component>\n"; |
445 | print STDERR "Supported components:\n"; | 504 | print STDERR "Supported components:\n"; |
diff --git a/Documentation/dvb/opera-firmware.txt b/Documentation/dvb/opera-firmware.txt new file mode 100644 index 000000000000..93e784c2607b --- /dev/null +++ b/Documentation/dvb/opera-firmware.txt | |||
@@ -0,0 +1,27 @@ | |||
1 | To extract the firmware for the Opera DVB-S1 USB-Box | ||
2 | you need to copy the files: | ||
3 | |||
4 | 2830SCap2.sys | ||
5 | 2830SLoad2.sys | ||
6 | |||
7 | from the windriver disk into this directory. | ||
8 | |||
9 | Then run | ||
10 | |||
11 | ./get_dvb_firware opera1 | ||
12 | |||
13 | and after that you have 2 files: | ||
14 | |||
15 | dvb-usb-opera-01.fw | ||
16 | dvb-usb-opera1-fpga-01.fw | ||
17 | |||
18 | in here. | ||
19 | |||
20 | Copy them into /lib/firmware/ . | ||
21 | |||
22 | After that the driver can load the firmware | ||
23 | (if you have enabled firmware loading | ||
24 | in kernel config and have hotplug running). | ||
25 | |||
26 | |||
27 | Marco Gittler <g.marco@freenet.de> \ No newline at end of file | ||