aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-01-25 16:59:51 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-01-25 16:59:51 -0500
commitb31fde6db2b76a9f7f59bf016652b46cff43f8da (patch)
tree2af4c48ae97b9800604fc0b36bc5c274d46d4aa3 /Documentation
parentf31c338675872875e24f124af0689131b0c72600 (diff)
parenta999337b49fcdd2c4a475e97e4b8337ebdfa4abf (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (509 commits) V4L/DVB (7078): radio: fix sf16fmi section mismatch V4L/DVB (7077): bt878: remove handcrafted PCI subsystem ID check V4L/DVB (7075): Make a local function static V4L/DVB (7074): DiB7000P: correct tuning problem for 7MHz channel V4L/DVB (7073): DiB7070: Reception quality improved V4L/DVB (7072): sets the MT2060 IF1 frequency according to EEPROM V4L/DVB (7071): DiB0700: Start streaming the right way V4L/DVB (7070): Fix some tuning problems V4L/DVB (7069): Support for myTV.t V4L/DVB (7068): Add support for WinTV Nova-T-CE driver V4L/DVB (7067): fix autoserach in the Hauppauge NOVA-T 500 V4L/DVB (7066): ASUS My Cinema U3000 Mini DVBT Tuner V4L/DVB (7065): Artec T14BR patches V4L/DVB (7063): xc5000: Fix OOPS caused by missing firmware V4L/DVB (7062): radio-si570x: Some fixes and new USB ID addition V4L/DVB (7061): radio-si470x: Some cleanups V4L/DVB (7060): em28xx: remove has_tuner V4L/DVB (7059): cx88: Ensure the tuner is reset correctly V4L/DVB (7058): IR corrections for the Pinnacle 800i V4L/DVB (7056): tuner: suppress obsolete tuner i2c address warning for XC5000 tuners ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/videobook.tmpl9
-rw-r--r--Documentation/dvb/bt8xx.txt12
-rw-r--r--Documentation/video4linux/CARDLIST.cx238854
-rw-r--r--Documentation/video4linux/CARDLIST.cx881
-rw-r--r--Documentation/video4linux/CARDLIST.em28xx17
-rw-r--r--Documentation/video4linux/CARDLIST.ivtv6
-rw-r--r--Documentation/video4linux/CARDLIST.saa713417
-rw-r--r--Documentation/video4linux/CARDLIST.tuner5
-rw-r--r--Documentation/video4linux/CARDLIST.usbvision1
-rw-r--r--Documentation/video4linux/extract_xc3028.pl926
-rw-r--r--Documentation/video4linux/sn9c102.txt1
11 files changed, 978 insertions, 21 deletions
diff --git a/Documentation/DocBook/videobook.tmpl b/Documentation/DocBook/videobook.tmpl
index b629da33951d..b3d93ee27693 100644
--- a/Documentation/DocBook/videobook.tmpl
+++ b/Documentation/DocBook/videobook.tmpl
@@ -96,7 +96,6 @@ static struct video_device my_radio
96{ 96{
97 "My radio", 97 "My radio",
98 VID_TYPE_TUNER, 98 VID_TYPE_TUNER,
99 VID_HARDWARE_MYRADIO,
100 radio_open. 99 radio_open.
101 radio_close, 100 radio_close,
102 NULL, /* no read */ 101 NULL, /* no read */
@@ -119,13 +118,6 @@ static struct video_device my_radio
119 way to change channel so it is tuneable. 118 way to change channel so it is tuneable.
120 </para> 119 </para>
121 <para> 120 <para>
122 The VID_HARDWARE_ types are unique to each device. Numbers are assigned by
123 <email>alan@redhat.com</email> when device drivers are going to be released. Until then you
124 can pull a suitably large number out of your hat and use it. 10000 should be
125 safe for a very long time even allowing for the huge number of vendors
126 making new and different radio cards at the moment.
127 </para>
128 <para>
129 We declare an open and close routine, but we do not need read or write, 121 We declare an open and close routine, but we do not need read or write,
130 which are used to read and write video data to or from the card itself. As 122 which are used to read and write video data to or from the card itself. As
131 we have no read or write there is no poll function. 123 we have no read or write there is no poll function.
@@ -844,7 +836,6 @@ static struct video_device my_camera
844 "My Camera", 836 "My Camera",
845 VID_TYPE_OVERLAY|VID_TYPE_SCALES|\ 837 VID_TYPE_OVERLAY|VID_TYPE_SCALES|\
846 VID_TYPE_CAPTURE|VID_TYPE_CHROMAKEY, 838 VID_TYPE_CAPTURE|VID_TYPE_CHROMAKEY,
847 VID_HARDWARE_MYCAMERA,
848 camera_open. 839 camera_open.
849 camera_close, 840 camera_close,
850 camera_read, /* no read */ 841 camera_read, /* no read */
diff --git a/Documentation/dvb/bt8xx.txt b/Documentation/dvb/bt8xx.txt
index ecb47adda063..b7b1d1b1da46 100644
--- a/Documentation/dvb/bt8xx.txt
+++ b/Documentation/dvb/bt8xx.txt
@@ -78,6 +78,18 @@ Example:
78For a full list of card ID's please see Documentation/video4linux/CARDLIST.bttv. 78For a full list of card ID's please see Documentation/video4linux/CARDLIST.bttv.
79In case of further problems please subscribe and send questions to the mailing list: linux-dvb@linuxtv.org. 79In case of further problems please subscribe and send questions to the mailing list: linux-dvb@linuxtv.org.
80 80
812c) Probing the cards with broken PCI subsystem ID
82--------------------------------------------------
83There are some TwinHan cards that the EEPROM has become corrupted for some
84reason. The cards do not have correct PCI subsystem ID. But we can force
85probing the cards with broken PCI subsystem ID
86
87 $ echo 109e 0878 $subvendor $subdevice > \
88 /sys/bus/pci/drivers/bt878/new_id
89
90109e: PCI_VENDOR_ID_BROOKTREE
910878: PCI_DEVICE_ID_BROOKTREE_878
92
81Authors: Richard Walker, 93Authors: Richard Walker,
82 Jamie Honan, 94 Jamie Honan,
83 Michael Hunold, 95 Michael Hunold,
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885
index 00cb646a4bde..0924e6e142c4 100644
--- a/Documentation/video4linux/CARDLIST.cx23885
+++ b/Documentation/video4linux/CARDLIST.cx23885
@@ -1,5 +1,7 @@
1 0 -> UNKNOWN/GENERIC [0070:3400] 1 0 -> UNKNOWN/GENERIC [0070:3400]
2 1 -> Hauppauge WinTV-HVR1800lp [0070:7600] 2 1 -> Hauppauge WinTV-HVR1800lp [0070:7600]
3 2 -> Hauppauge WinTV-HVR1800 [0070:7800,0070:7801] 3 2 -> Hauppauge WinTV-HVR1800 [0070:7800,0070:7801,0070:7809]
4 3 -> Hauppauge WinTV-HVR1250 [0070:7911] 4 3 -> Hauppauge WinTV-HVR1250 [0070:7911]
5 4 -> DViCO FusionHDTV5 Express [18ac:d500] 5 4 -> DViCO FusionHDTV5 Express [18ac:d500]
6 5 -> Hauppauge WinTV-HVR1500Q [0070:7790,0070:7797]
7 6 -> Hauppauge WinTV-HVR1500 [0070:7710,0070:7717]
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 82ac8250e978..bc5593bd9704 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -56,3 +56,4 @@
56 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980] 56 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
57 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602] 57 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
58 57 -> ADS Tech Instant Video PCI [1421:0390] 58 57 -> ADS Tech Instant Video PCI [1421:0390]
59 58 -> Pinnacle PCTV HD 800i [11bd:0051]
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx
index 37f0e3cedf43..6a8469f2bcae 100644
--- a/Documentation/video4linux/CARDLIST.em28xx
+++ b/Documentation/video4linux/CARDLIST.em28xx
@@ -1,14 +1,17 @@
1 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800] 1 0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800]
2 1 -> Unknown EM2820/2840 video grabber (em2820/em2840) 2 1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2750,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
3 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036] 3 2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036]
4 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208] 4 3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208]
5 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200] 5 4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201]
6 5 -> MSI VOX USB 2.0 (em2820/em2840) [eb1a:2820] 6 5 -> MSI VOX USB 2.0 (em2820/em2840)
7 6 -> Terratec Cinergy 200 USB (em2800) 7 6 -> Terratec Cinergy 200 USB (em2800)
8 7 -> Leadtek Winfast USB II (em2800) 8 7 -> Leadtek Winfast USB II (em2800)
9 8 -> Kworld USB2800 (em2800) 9 8 -> Kworld USB2800 (em2800)
10 9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207] 10 9 -> Pinnacle Dazzle DVC 90/DVC 100 (em2820/em2840) [2304:0207,2304:021a]
11 10 -> Hauppauge WinTV HVR 900 (em2880) 11 10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500]
12 11 -> Terratec Hybrid XS (em2880) 12 11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
13 12 -> Kworld PVR TV 2800 RF (em2820/em2840) 13 12 -> Kworld PVR TV 2800 RF (em2820/em2840)
14 13 -> Terratec Prodigy XS (em2880) 14 13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
15 14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840)
16 15 -> V-Gear PocketTV (em2800)
17 16 -> Hauppauge WinTV HVR 950 (em2880) [2040:6513]
diff --git a/Documentation/video4linux/CARDLIST.ivtv b/Documentation/video4linux/CARDLIST.ivtv
index ddd76a0eb100..a019e27e42b3 100644
--- a/Documentation/video4linux/CARDLIST.ivtv
+++ b/Documentation/video4linux/CARDLIST.ivtv
@@ -16,3 +16,9 @@
1616 -> GOTVIEW PCI DVD2 Deluxe [ffac:0600] 1616 -> GOTVIEW PCI DVD2 Deluxe [ffac:0600]
1717 -> Yuan MPC622 [ff01:d998] 1717 -> Yuan MPC622 [ff01:d998]
1818 -> Digital Cowboy DCT-MTVP1 [1461:bfff] 1818 -> Digital Cowboy DCT-MTVP1 [1461:bfff]
1919 -> Yuan PG600V2/GotView PCI DVD Lite [ffab:0600,ffad:0600]
2020 -> Club3D ZAP-TV1x01 [ffab:0600]
2121 -> AverTV MCE 116 Plus [1461:c439]
2222 -> ASUS Falcon2 [1043:4b66,1043:462e,1043:4b2e]
2323 -> AverMedia PVR-150 Plus [1461:c035]
2424 -> AverMedia EZMaker PCI Deluxe [1461:c03f]
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index a14545300e4c..5d3b6b4d2515 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -80,7 +80,7 @@
80 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) 80 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
81 80 -> ASUS Digimatrix TV [1043:0210] 81 80 -> ASUS Digimatrix TV [1043:0210]
82 81 -> Philips Tiger reference design [1131:2018] 82 81 -> Philips Tiger reference design [1131:2018]
83 82 -> MSI TV@Anywhere plus [1462:6231] 83 82 -> MSI TV@Anywhere plus [1462:6231,1462:8624]
84 83 -> Terratec Cinergy 250 PCI TV [153b:1160] 84 83 -> Terratec Cinergy 250 PCI TV [153b:1160]
85 84 -> LifeView FlyDVB Trio [5168:0319] 85 84 -> LifeView FlyDVB Trio [5168:0319]
86 85 -> AverTV DVB-T 777 [1461:2c05,1461:2c05] 86 85 -> AverTV DVB-T 777 [1461:2c05,1461:2c05]
@@ -102,7 +102,7 @@
102101 -> Pinnacle PCTV 310i [11bd:002f] 102101 -> Pinnacle PCTV 310i [11bd:002f]
103102 -> Avermedia AVerTV Studio 507 [1461:9715] 103102 -> Avermedia AVerTV Studio 507 [1461:9715]
104103 -> Compro Videomate DVB-T200A 104103 -> Compro Videomate DVB-T200A
105104 -> Hauppauge WinTV-HVR1110 DVB-T/Hybrid [0070:6701] 105104 -> Hauppauge WinTV-HVR1110 DVB-T/Hybrid [0070:6700,0070:6701,0070:6702,0070:6703,0070:6704,0070:6705]
106105 -> Terratec Cinergy HT PCMCIA [153b:1172] 106105 -> Terratec Cinergy HT PCMCIA [153b:1172]
107106 -> Encore ENLTV [1131:2342,1131:2341,3016:2344] 107106 -> Encore ENLTV [1131:2342,1131:2341,3016:2344]
108107 -> Encore ENLTV-FM [1131:230f] 108107 -> Encore ENLTV-FM [1131:230f]
@@ -116,3 +116,16 @@
116115 -> Sabrent PCMCIA TV-PCB05 [0919:2003] 116115 -> Sabrent PCMCIA TV-PCB05 [0919:2003]
117116 -> 10MOONS TM300 TV Card [1131:2304] 117116 -> 10MOONS TM300 TV Card [1131:2304]
118117 -> Avermedia Super 007 [1461:f01d] 118117 -> Avermedia Super 007 [1461:f01d]
119118 -> Beholder BeholdTV 401 [0000:4016]
120119 -> Beholder BeholdTV 403 [0000:4036]
121120 -> Beholder BeholdTV 403 FM [0000:4037]
122121 -> Beholder BeholdTV 405 [0000:4050]
123122 -> Beholder BeholdTV 405 FM [0000:4051]
124123 -> Beholder BeholdTV 407 [0000:4070]
125124 -> Beholder BeholdTV 407 FM [0000:4071]
126125 -> Beholder BeholdTV 409 [0000:4090]
127126 -> Beholder BeholdTV 505 FM/RDS [0000:5051,0000:505B,5ace:5050]
128127 -> Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM [0000:5071,0000:507B,5ace:5070,5ace:5090]
129128 -> Beholder BeholdTV Columbus TVFM [0000:5201]
130129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093]
131130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193]
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner
index a88c02d23805..0e2394695bb8 100644
--- a/Documentation/video4linux/CARDLIST.tuner
+++ b/Documentation/video4linux/CARDLIST.tuner
@@ -52,7 +52,7 @@ tuner=50 - TCL 2002N
52tuner=51 - Philips PAL/SECAM_D (FM 1256 I-H3) 52tuner=51 - Philips PAL/SECAM_D (FM 1256 I-H3)
53tuner=52 - Thomson DTT 7610 (ATSC/NTSC) 53tuner=52 - Thomson DTT 7610 (ATSC/NTSC)
54tuner=53 - Philips FQ1286 54tuner=53 - Philips FQ1286
55tuner=54 - tda8290+75 55tuner=54 - Philips/NXP TDA 8290/8295 + 8275/8275A/18271
56tuner=55 - TCL 2002MB 56tuner=55 - TCL 2002MB
57tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4) 57tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
58tuner=57 - Philips FQ1236A MK4 58tuner=57 - Philips FQ1236A MK4
@@ -69,7 +69,8 @@ tuner=67 - Philips TD1316 Hybrid Tuner
69tuner=68 - Philips TUV1236D ATSC/NTSC dual in 69tuner=68 - Philips TUV1236D ATSC/NTSC dual in
70tuner=69 - Tena TNF 5335 and similar models 70tuner=69 - Tena TNF 5335 and similar models
71tuner=70 - Samsung TCPN 2121P30A 71tuner=70 - Samsung TCPN 2121P30A
72tuner=71 - Xceive xc3028 72tuner=71 - Xceive xc2028/xc3028 tuner
73tuner=72 - Thomson FE6600 73tuner=72 - Thomson FE6600
74tuner=73 - Samsung TCPG 6121P30A 74tuner=73 - Samsung TCPG 6121P30A
75tuner=75 - Philips TEA5761 FM Radio 75tuner=75 - Philips TEA5761 FM Radio
76tuner=76 - Xceive 5000 tuner
diff --git a/Documentation/video4linux/CARDLIST.usbvision b/Documentation/video4linux/CARDLIST.usbvision
index 3d6850ef0245..0b72d3fee17e 100644
--- a/Documentation/video4linux/CARDLIST.usbvision
+++ b/Documentation/video4linux/CARDLIST.usbvision
@@ -62,3 +62,4 @@
62 61 -> Pinnacle Studio Linx Video input cable (PAL) [2304:0301] 62 61 -> Pinnacle Studio Linx Video input cable (PAL) [2304:0301]
63 62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419] 63 62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419]
64 63 -> Hauppauge WinTv-USB [2400:4200] 64 63 -> Hauppauge WinTv-USB [2400:4200]
65 64 -> Pinnacle Studio PCTV USB (NTSC) FM V3 [2304:0113]
diff --git a/Documentation/video4linux/extract_xc3028.pl b/Documentation/video4linux/extract_xc3028.pl
new file mode 100644
index 000000000000..cced8ac5c543
--- /dev/null
+++ b/Documentation/video4linux/extract_xc3028.pl
@@ -0,0 +1,926 @@
1#!/usr/bin/perl
2
3# Copyright (c) Mauro Carvalho Chehab <mchehab@infradead.org>
4# Released under GPLv2
5#
6# In order to use, you need to:
7# 1) Download the windows driver with something like:
8# wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
9# 2) Extract the file hcw85bda.sys from the zip into the current dir:
10# unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
11# 3) run the script:
12# ./extract_xc3028.pl
13# 4) copy the generated file:
14# cp xc3028-v27.fw /lib/firmware
15
16#use strict;
17use IO::Handle;
18
19my $debug=0;
20
21sub verify ($$)
22{
23 my ($filename, $hash) = @_;
24 my ($testhash);
25
26 if (system("which md5sum > /dev/null 2>&1")) {
27 die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
28 }
29
30 open(CMD, "md5sum ".$filename."|");
31 $testhash = <CMD>;
32 $testhash =~ /([a-zA-Z0-9]*)/;
33 $testhash = $1;
34 close CMD;
35 die "Hash of extracted file does not match (found $testhash, expected $hash!\n" if ($testhash ne $hash);
36}
37
38sub get_hunk ($$)
39{
40 my ($offset, $length) = @_;
41 my ($chunklength, $buf, $rcount, $out);
42
43 sysseek(INFILE, $offset, SEEK_SET);
44 while ($length > 0) {
45 # Calc chunk size
46 $chunklength = 2048;
47 $chunklength = $length if ($chunklength > $length);
48
49 $rcount = sysread(INFILE, $buf, $chunklength);
50 die "Ran out of data\n" if ($rcount != $chunklength);
51 $out .= $buf;
52 $length -= $rcount;
53 }
54 return $out;
55}
56
57sub write_le16($)
58{
59 my $val = shift;
60 my $msb = ($val >> 8) &0xff;
61 my $lsb = $val & 0xff;
62
63 syswrite(OUTFILE, chr($lsb).chr($msb));
64}
65
66sub write_le32($)
67{
68 my $val = shift;
69 my $l3 = ($val >> 24) & 0xff;
70 my $l2 = ($val >> 16) & 0xff;
71 my $l1 = ($val >> 8) & 0xff;
72 my $l0 = $val & 0xff;
73
74 syswrite(OUTFILE, chr($l0).chr($l1).chr($l2).chr($l3));
75}
76
77sub write_le64($$)
78{
79 my $msb_val = shift;
80 my $lsb_val = shift;
81 my $l7 = ($msb_val >> 24) & 0xff;
82 my $l6 = ($msb_val >> 16) & 0xff;
83 my $l5 = ($msb_val >> 8) & 0xff;
84 my $l4 = $msb_val & 0xff;
85
86 my $l3 = ($lsb_val >> 24) & 0xff;
87 my $l2 = ($lsb_val >> 16) & 0xff;
88 my $l1 = ($lsb_val >> 8) & 0xff;
89 my $l0 = $lsb_val & 0xff;
90
91 syswrite(OUTFILE,
92 chr($l0).chr($l1).chr($l2).chr($l3).
93 chr($l4).chr($l5).chr($l6).chr($l7));
94}
95
96sub write_hunk($$)
97{
98 my ($offset, $length) = @_;
99 my $out = get_hunk($offset, $length);
100
101 printf "(len %d) ",$length if ($debug);
102
103 for (my $i=0;$i<$length;$i++) {
104 printf "%02x ",ord(substr($out,$i,1)) if ($debug);
105 }
106 printf "\n" if ($debug);
107
108 syswrite(OUTFILE, $out);
109}
110
111sub write_hunk_fix_endian($$)
112{
113 my ($offset, $length) = @_;
114 my $out = get_hunk($offset, $length);
115
116 printf "(len_fix %d) ",$length if ($debug);
117
118 for (my $i=0;$i<$length;$i++) {
119 printf "%02x ",ord(substr($out,$i,1)) if ($debug);
120 }
121 printf "\n" if ($debug);
122
123 my $i=0;
124 while ($i<$length) {
125 my $size = ord(substr($out,$i,1))*256+ord(substr($out,$i+1,1));
126 syswrite(OUTFILE, substr($out,$i+1,1));
127 syswrite(OUTFILE, substr($out,$i,1));
128 $i+=2;
129 if ($size>0 && $size <0x8000) {
130 for (my $j=0;$j<$size;$j++) {
131 syswrite(OUTFILE, substr($out,$j+$i,1));
132 }
133 $i+=$size;
134 }
135 }
136}
137
138sub main_firmware($$$$)
139{
140 my $out;
141 my $j=0;
142 my $outfile = shift;
143 my $name = shift;
144 my $version = shift;
145 my $nr_desc = shift;
146
147 for ($j = length($name); $j <32; $j++) {
148 $name = $name.chr(0);
149}
150
151 open OUTFILE, ">$outfile";
152 syswrite(OUTFILE, $name);
153 write_le16($version);
154 write_le16($nr_desc);
155
156 #
157 # Firmware 0, type: BASE FW F8MHZ (0x00000003), id: (0000000000000000), size: 8718
158 #
159
160 write_le32(0x00000003); # Type
161 write_le64(0x00000000, 0x00000000); # ID
162 write_le32(8718); # Size
163 write_hunk_fix_endian(813432, 8718);
164
165 #
166 # Firmware 1, type: BASE FW F8MHZ MTS (0x00000007), id: (0000000000000000), size: 8712
167 #
168
169 write_le32(0x00000007); # Type
170 write_le64(0x00000000, 0x00000000); # ID
171 write_le32(8712); # Size
172 write_hunk_fix_endian(822152, 8712);
173
174 #
175 # Firmware 2, type: BASE FW FM (0x00000401), id: (0000000000000000), size: 8562
176 #
177
178 write_le32(0x00000401); # Type
179 write_le64(0x00000000, 0x00000000); # ID
180 write_le32(8562); # Size
181 write_hunk_fix_endian(830872, 8562);
182
183 #
184 # Firmware 3, type: BASE FW FM INPUT1 (0x00000c01), id: (0000000000000000), size: 8576
185 #
186
187 write_le32(0x00000c01); # Type
188 write_le64(0x00000000, 0x00000000); # ID
189 write_le32(8576); # Size
190 write_hunk_fix_endian(839440, 8576);
191
192 #
193 # Firmware 4, type: BASE FW (0x00000001), id: (0000000000000000), size: 8706
194 #
195
196 write_le32(0x00000001); # Type
197 write_le64(0x00000000, 0x00000000); # ID
198 write_le32(8706); # Size
199 write_hunk_fix_endian(848024, 8706);
200
201 #
202 # Firmware 5, type: BASE FW MTS (0x00000005), id: (0000000000000000), size: 8682
203 #
204
205 write_le32(0x00000005); # Type
206 write_le64(0x00000000, 0x00000000); # ID
207 write_le32(8682); # Size
208 write_hunk_fix_endian(856736, 8682);
209
210 #
211 # Firmware 6, type: STD FW (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161
212 #
213
214 write_le32(0x00000000); # Type
215 write_le64(0x00000001, 0x00000007); # ID
216 write_le32(161); # Size
217 write_hunk_fix_endian(865424, 161);
218
219 #
220 # Firmware 7, type: STD FW MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169
221 #
222
223 write_le32(0x00000004); # Type
224 write_le64(0x00000001, 0x00000007); # ID
225 write_le32(169); # Size
226 write_hunk_fix_endian(865592, 169);
227
228 #
229 # Firmware 8, type: STD FW (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161
230 #
231
232 write_le32(0x00000000); # Type
233 write_le64(0x00000002, 0x00000007); # ID
234 write_le32(161); # Size
235 write_hunk_fix_endian(865424, 161);
236
237 #
238 # Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169
239 #
240
241 write_le32(0x00000004); # Type
242 write_le64(0x00000002, 0x00000007); # ID
243 write_le32(169); # Size
244 write_hunk_fix_endian(865592, 169);
245
246 #
247 # Firmware 10, type: STD FW (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161
248 #
249
250 write_le32(0x00000000); # Type
251 write_le64(0x00000004, 0x00000007); # ID
252 write_le32(161); # Size
253 write_hunk_fix_endian(866112, 161);
254
255 #
256 # Firmware 11, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169
257 #
258
259 write_le32(0x00000004); # Type
260 write_le64(0x00000004, 0x00000007); # ID
261 write_le32(169); # Size
262 write_hunk_fix_endian(866280, 169);
263
264 #
265 # Firmware 12, type: STD FW (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161
266 #
267
268 write_le32(0x00000000); # Type
269 write_le64(0x00000008, 0x00000007); # ID
270 write_le32(161); # Size
271 write_hunk_fix_endian(866112, 161);
272
273 #
274 # Firmware 13, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169
275 #
276
277 write_le32(0x00000004); # Type
278 write_le64(0x00000008, 0x00000007); # ID
279 write_le32(169); # Size
280 write_hunk_fix_endian(866280, 169);
281
282 #
283 # Firmware 14, type: STD FW (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161
284 #
285
286 write_le32(0x00000000); # Type
287 write_le64(0x00000003, 0x000000e0); # ID
288 write_le32(161); # Size
289 write_hunk_fix_endian(866800, 161);
290
291 #
292 # Firmware 15, type: STD FW MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169
293 #
294
295 write_le32(0x00000004); # Type
296 write_le64(0x00000003, 0x000000e0); # ID
297 write_le32(169); # Size
298 write_hunk_fix_endian(866968, 169);
299
300 #
301 # Firmware 16, type: STD FW (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161
302 #
303
304 write_le32(0x00000000); # Type
305 write_le64(0x0000000c, 0x000000e0); # ID
306 write_le32(161); # Size
307 write_hunk_fix_endian(867144, 161);
308
309 #
310 # Firmware 17, type: STD FW MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169
311 #
312
313 write_le32(0x00000004); # Type
314 write_le64(0x0000000c, 0x000000e0); # ID
315 write_le32(169); # Size
316 write_hunk_fix_endian(867312, 169);
317
318 #
319 # Firmware 18, type: STD FW (0x00000000), id: SECAM/K1 (0000000000200000), size: 161
320 #
321
322 write_le32(0x00000000); # Type
323 write_le64(0x00000000, 0x00200000); # ID
324 write_le32(161); # Size
325 write_hunk_fix_endian(867488, 161);
326
327 #
328 # Firmware 19, type: STD FW MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169
329 #
330
331 write_le32(0x00000004); # Type
332 write_le64(0x00000000, 0x00200000); # ID
333 write_le32(169); # Size
334 write_hunk_fix_endian(867656, 169);
335
336 #
337 # Firmware 20, type: STD FW (0x00000000), id: SECAM/K3 (0000000004000000), size: 161
338 #
339
340 write_le32(0x00000000); # Type
341 write_le64(0x00000000, 0x04000000); # ID
342 write_le32(161); # Size
343 write_hunk_fix_endian(867832, 161);
344
345 #
346 # Firmware 21, type: STD FW MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169
347 #
348
349 write_le32(0x00000004); # Type
350 write_le64(0x00000000, 0x04000000); # ID
351 write_le32(169); # Size
352 write_hunk_fix_endian(868000, 169);
353
354 #
355 # Firmware 22, type: STD FW D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149
356 #
357
358 write_le32(0x00010030); # Type
359 write_le64(0x00000000, 0x00000000); # ID
360 write_le32(149); # Size
361 write_hunk_fix_endian(868176, 149);
362
363 #
364 # Firmware 23, type: STD FW D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149
365 #
366
367 write_le32(0x00000068); # Type
368 write_le64(0x00000000, 0x00000000); # ID
369 write_le32(149); # Size
370 write_hunk_fix_endian(868336, 149);
371
372 #
373 # Firmware 24, type: STD FW D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149
374 #
375
376 write_le32(0x00000070); # Type
377 write_le64(0x00000000, 0x00000000); # ID
378 write_le32(149); # Size
379 write_hunk_fix_endian(868488, 149);
380
381 #
382 # Firmware 25, type: STD FW D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149
383 #
384
385 write_le32(0x00000088); # Type
386 write_le64(0x00000000, 0x00000000); # ID
387 write_le32(149); # Size
388 write_hunk_fix_endian(868648, 149);
389
390 #
391 # Firmware 26, type: STD FW D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149
392 #
393
394 write_le32(0x00000090); # Type
395 write_le64(0x00000000, 0x00000000); # ID
396 write_le32(149); # Size
397 write_hunk_fix_endian(868800, 149);
398
399 #
400 # Firmware 27, type: STD FW D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149
401 #
402
403 write_le32(0x00000108); # Type
404 write_le64(0x00000000, 0x00000000); # ID
405 write_le32(149); # Size
406 write_hunk_fix_endian(868960, 149);
407
408 #
409 # Firmware 28, type: STD FW D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149
410 #
411
412 write_le32(0x00000110); # Type
413 write_le64(0x00000000, 0x00000000); # ID
414 write_le32(149); # Size
415 write_hunk_fix_endian(869112, 149);
416
417 #
418 # Firmware 29, type: STD FW D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149
419 #
420
421 write_le32(0x00000208); # Type
422 write_le64(0x00000000, 0x00000000); # ID
423 write_le32(149); # Size
424 write_hunk_fix_endian(868648, 149);
425
426 #
427 # Firmware 30, type: STD FW D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149
428 #
429
430 write_le32(0x00000210); # Type
431 write_le64(0x00000000, 0x00000000); # ID
432 write_le32(149); # Size
433 write_hunk_fix_endian(868800, 149);
434
435 #
436 # Firmware 31, type: STD FW FM (0x00000400), id: (0000000000000000), size: 135
437 #
438
439 write_le32(0x00000400); # Type
440 write_le64(0x00000000, 0x00000000); # ID
441 write_le32(135); # Size
442 write_hunk_fix_endian(869584, 135);
443
444 #
445 # Firmware 32, type: STD FW (0x00000000), id: PAL/I (0000000000000010), size: 161
446 #
447
448 write_le32(0x00000000); # Type
449 write_le64(0x00000000, 0x00000010); # ID
450 write_le32(161); # Size
451 write_hunk_fix_endian(869728, 161);
452
453 #
454 # Firmware 33, type: STD FW MTS (0x00000004), id: PAL/I (0000000000000010), size: 169
455 #
456
457 write_le32(0x00000004); # Type
458 write_le64(0x00000000, 0x00000010); # ID
459 write_le32(169); # Size
460 write_hunk_fix_endian(869896, 169);
461
462 #
463 # Firmware 34, type: STD FW (0x00000000), id: SECAM/L AM (0000001000400000), size: 169
464 #
465
466 write_le32(0x00000000); # Type
467 write_le64(0x00000010, 0x00400000); # ID
468 write_le32(169); # Size
469 write_hunk_fix_endian(870072, 169);
470
471 #
472 # Firmware 35, type: STD FW (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161
473 #
474
475 write_le32(0x00000000); # Type
476 write_le64(0x0000000c, 0x00400000); # ID
477 write_le32(161); # Size
478 write_hunk_fix_endian(870248, 161);
479
480 #
481 # Firmware 36, type: STD FW (0x00000000), id: SECAM/Lc (0000000000800000), size: 161
482 #
483
484 write_le32(0x00000000); # Type
485 write_le64(0x00000000, 0x00800000); # ID
486 write_le32(161); # Size
487 write_hunk_fix_endian(870416, 161);
488
489 #
490 # Firmware 37, type: STD FW (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161
491 #
492
493 write_le32(0x00000000); # Type
494 write_le64(0x00000000, 0x00008000); # ID
495 write_le32(161); # Size
496 write_hunk_fix_endian(870584, 161);
497
498 #
499 # Firmware 38, type: STD FW LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161
500 #
501
502 write_le32(0x00001000); # Type
503 write_le64(0x00000000, 0x00008000); # ID
504 write_le32(161); # Size
505 write_hunk_fix_endian(870752, 161);
506
507 #
508 # Firmware 39, type: STD FW LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161
509 #
510
511 write_le32(0x00003000); # Type
512 write_le64(0x00000000, 0x00008000); # ID
513 write_le32(161); # Size
514 write_hunk_fix_endian(870920, 161);
515
516 #
517 # Firmware 40, type: STD FW MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169
518 #
519
520 write_le32(0x00000004); # Type
521 write_le64(0x00000000, 0x00008000); # ID
522 write_le32(169); # Size
523 write_hunk_fix_endian(871088, 169);
524
525 #
526 # Firmware 41, type: STD FW (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
527 #
528
529 write_le32(0x00000000); # Type
530 write_le64(0x00000000, 0x0000b700); # ID
531 write_le32(161); # Size
532 write_hunk_fix_endian(871264, 161);
533
534 #
535 # Firmware 42, type: STD FW LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
536 #
537
538 write_le32(0x00001000); # Type
539 write_le64(0x00000000, 0x0000b700); # ID
540 write_le32(161); # Size
541 write_hunk_fix_endian(871432, 161);
542
543 #
544 # Firmware 43, type: STD FW LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
545 #
546
547 write_le32(0x00003000); # Type
548 write_le64(0x00000000, 0x0000b700); # ID
549 write_le32(161); # Size
550 write_hunk_fix_endian(871600, 161);
551
552 #
553 # Firmware 44, type: STD FW (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161
554 #
555
556 write_le32(0x00000000); # Type
557 write_le64(0x00000000, 0x00002000); # ID
558 write_le32(161); # Size
559 write_hunk_fix_endian(871264, 161);
560
561 #
562 # Firmware 45, type: STD FW MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
563 #
564
565 write_le32(0x00000004); # Type
566 write_le64(0x00000000, 0x0000b700); # ID
567 write_le32(169); # Size
568 write_hunk_fix_endian(871936, 169);
569
570 #
571 # Firmware 46, type: STD FW MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
572 #
573
574 write_le32(0x00001004); # Type
575 write_le64(0x00000000, 0x0000b700); # ID
576 write_le32(169); # Size
577 write_hunk_fix_endian(872112, 169);
578
579 #
580 # Firmware 47, type: STD FW MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
581 #
582
583 write_le32(0x00003004); # Type
584 write_le64(0x00000000, 0x0000b700); # ID
585 write_le32(169); # Size
586 write_hunk_fix_endian(872288, 169);
587
588 #
589 # Firmware 48, type: SCODE FW HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192
590 #
591
592 write_le32(0x60000000); # Type
593 write_le64(0x00000000, 0x00000000); # ID
594 write_le16(3280); # IF
595 write_le32(192); # Size
596 write_hunk(811896, 192);
597
598 #
599 # Firmware 49, type: SCODE FW HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192
600 #
601
602 write_le32(0x60000000); # Type
603 write_le64(0x00000000, 0x00000000); # ID
604 write_le16(3300); # IF
605 write_le32(192); # Size
606 write_hunk(813048, 192);
607
608 #
609 # Firmware 50, type: SCODE FW HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192
610 #
611
612 write_le32(0x60000000); # Type
613 write_le64(0x00000000, 0x00000000); # ID
614 write_le16(3440); # IF
615 write_le32(192); # Size
616 write_hunk(812280, 192);
617
618 #
619 # Firmware 51, type: SCODE FW HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192
620 #
621
622 write_le32(0x60000000); # Type
623 write_le64(0x00000000, 0x00000000); # ID
624 write_le16(3460); # IF
625 write_le32(192); # Size
626 write_hunk(812472, 192);
627
628 #
629 # Firmware 52, type: SCODE FW DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192
630 #
631
632 write_le32(0x60210020); # Type
633 write_le64(0x00000000, 0x00000000); # ID
634 write_le16(3800); # IF
635 write_le32(192); # Size
636 write_hunk(809784, 192);
637
638 #
639 # Firmware 53, type: SCODE FW HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192
640 #
641
642 write_le32(0x60000000); # Type
643 write_le64(0x00000000, 0x00000000); # ID
644 write_le16(4000); # IF
645 write_le32(192); # Size
646 write_hunk(812088, 192);
647
648 #
649 # Firmware 54, type: SCODE FW DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192
650 #
651
652 write_le32(0x60410020); # Type
653 write_le64(0x00000000, 0x00000000); # ID
654 write_le16(4080); # IF
655 write_le32(192); # Size
656 write_hunk(809976, 192);
657
658 #
659 # Firmware 55, type: SCODE FW HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192
660 #
661
662 write_le32(0x60000000); # Type
663 write_le64(0x00000000, 0x00000000); # ID
664 write_le16(4200); # IF
665 write_le32(192); # Size
666 write_hunk(811704, 192);
667
668 #
669 # Firmware 56, type: SCODE FW MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192
670 #
671
672 write_le32(0x60008000); # Type
673 write_le64(0x00000000, 0x00008000); # ID
674 write_le16(4320); # IF
675 write_le32(192); # Size
676 write_hunk(808056, 192);
677
678 #
679 # Firmware 57, type: SCODE FW HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192
680 #
681
682 write_le32(0x60000000); # Type
683 write_le64(0x00000000, 0x00000000); # ID
684 write_le16(4450); # IF
685 write_le32(192); # Size
686 write_hunk(812664, 192);
687
688 #
689 # Firmware 58, type: SCODE FW HAS IF (0x60000000), IF = 4.50 MHz id: NTSC/M Jp (0000000000002000), size: 192
690 #
691
692 write_le32(0x60000000); # Type
693 write_le64(0x00000000, 0x00002000); # ID
694 write_le16(4500); # IF
695 write_le32(192); # Size
696 write_hunk(807672, 192);
697
698 #
699 # Firmware 59, type: SCODE FW LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192
700 #
701
702 write_le32(0x60023000); # Type
703 write_le64(0x00000000, 0x00008000); # ID
704 write_le16(4600); # IF
705 write_le32(192); # Size
706 write_hunk(807864, 192);
707
708 #
709 # Firmware 60, type: SCODE FW DTV78 ZARLINK456 HAS IF (0x62000100), IF = 4.76 MHz id: (0000000000000000), size: 192
710 #
711
712 write_le32(0x62000100); # Type
713 write_le64(0x00000000, 0x00000000); # ID
714 write_le16(4760); # IF
715 write_le32(192); # Size
716 write_hunk(807288, 192);
717
718 #
719 # Firmware 61, type: SCODE FW HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192
720 #
721
722 write_le32(0x60000000); # Type
723 write_le64(0x00000000, 0x00000000); # ID
724 write_le16(4940); # IF
725 write_le32(192); # Size
726 write_hunk(811512, 192);
727
728 #
729 # Firmware 62, type: SCODE FW DTV7 ZARLINK456 HAS IF (0x62000080), IF = 5.26 MHz id: (0000000000000000), size: 192
730 #
731
732 write_le32(0x62000080); # Type
733 write_le64(0x00000000, 0x00000000); # ID
734 write_le16(5260); # IF
735 write_le32(192); # Size
736 write_hunk(810552, 192);
737
738 #
739 # Firmware 63, type: SCODE FW MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG NICAM/B (0000000800000007), size: 192
740 #
741
742 write_le32(0x60008000); # Type
743 write_le64(0x00000008, 0x00000007); # ID
744 write_le16(5320); # IF
745 write_le32(192); # Size
746 write_hunk(810744, 192);
747
748 #
749 # Firmware 64, type: SCODE FW DTV8 CHINA HAS IF (0x64000200), IF = 5.40 MHz id: (0000000000000000), size: 192
750 #
751
752 write_le32(0x64000200); # Type
753 write_le64(0x00000000, 0x00000000); # ID
754 write_le16(5400); # IF
755 write_le32(192); # Size
756 write_hunk(807096, 192);
757
758 #
759 # Firmware 65, type: SCODE FW DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192
760 #
761
762 write_le32(0x60110020); # Type
763 write_le64(0x00000000, 0x00000000); # ID
764 write_le16(5580); # IF
765 write_le32(192); # Size
766 write_hunk(809592, 192);
767
768 #
769 # Firmware 66, type: SCODE FW HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2/B (0000000200000007), size: 192
770 #
771
772 write_le32(0x60000000); # Type
773 write_le64(0x00000002, 0x00000007); # ID
774 write_le16(5640); # IF
775 write_le32(192); # Size
776 write_hunk(808440, 192);
777
778 #
779 # Firmware 67, type: SCODE FW HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM/B (0000000800000007), size: 192
780 #
781
782 write_le32(0x60000000); # Type
783 write_le64(0x00000008, 0x00000007); # ID
784 write_le16(5740); # IF
785 write_le32(192); # Size
786 write_hunk(808632, 192);
787
788 #
789 # Firmware 68, type: SCODE FW DTV7 DIBCOM52 HAS IF (0x61000080), IF = 5.90 MHz id: (0000000000000000), size: 192
790 #
791
792 write_le32(0x61000080); # Type
793 write_le64(0x00000000, 0x00000000); # ID
794 write_le16(5900); # IF
795 write_le32(192); # Size
796 write_hunk(810360, 192);
797
798 #
799 # Firmware 69, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/I (0000000000000010), size: 192
800 #
801
802 write_le32(0x60008000); # Type
803 write_le64(0x00000000, 0x00000010); # ID
804 write_le16(6000); # IF
805 write_le32(192); # Size
806 write_hunk(808824, 192);
807
808 #
809 # Firmware 70, type: SCODE FW DTV6 QAM F6MHZ HAS IF (0x68000060), IF = 6.20 MHz id: (0000000000000000), size: 192
810 #
811
812 write_le32(0x68000060); # Type
813 write_le64(0x00000000, 0x00000000); # ID
814 write_le16(6200); # IF
815 write_le32(192); # Size
816 write_hunk(809400, 192);
817
818 #
819 # Firmware 71, type: SCODE FW HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192
820 #
821
822 write_le32(0x60000000); # Type
823 write_le64(0x00000000, 0x00000010); # ID
824 write_le16(6240); # IF
825 write_le32(192); # Size
826 write_hunk(808248, 192);
827
828 #
829 # Firmware 72, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192
830 #
831
832 write_le32(0x60008000); # Type
833 write_le64(0x00000000, 0x00200000); # ID
834 write_le16(6320); # IF
835 write_le32(192); # Size
836 write_hunk(811320, 192);
837
838 #
839 # Firmware 73, type: SCODE FW HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192
840 #
841
842 write_le32(0x60000000); # Type
843 write_le64(0x00000000, 0x00200000); # ID
844 write_le16(6340); # IF
845 write_le32(192); # Size
846 write_hunk(809208, 192);
847
848 #
849 # Firmware 74, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.50 MHz id: SECAM/K3 (0000000004000000), size: 192
850 #
851
852 write_le32(0x60008000); # Type
853 write_le64(0x00000000, 0x04000000); # ID
854 write_le16(6500); # IF
855 write_le32(192); # Size
856 write_hunk(811128, 192);
857
858 #
859 # Firmware 75, type: SCODE FW DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192
860 #
861
862 write_le32(0x60090020); # Type
863 write_le64(0x00000000, 0x00000000); # ID
864 write_le16(6580); # IF
865 write_le32(192); # Size
866 write_hunk(807480, 192);
867
868 #
869 # Firmware 76, type: SCODE FW HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192
870 #
871
872 write_le32(0x60000000); # Type
873 write_le64(0x00000003, 0x000000e0); # ID
874 write_le16(6600); # IF
875 write_le32(192); # Size
876 write_hunk(809016, 192);
877
878 #
879 # Firmware 77, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192
880 #
881
882 write_le32(0x60008000); # Type
883 write_le64(0x00000003, 0x000000e0); # ID
884 write_le16(6680); # IF
885 write_le32(192); # Size
886 write_hunk(810936, 192);
887
888 #
889 # Firmware 78, type: SCODE FW DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192
890 #
891
892 write_le32(0x60810020); # Type
893 write_le64(0x00000000, 0x00000000); # ID
894 write_le16(8140); # IF
895 write_le32(192); # Size
896 write_hunk(810168, 192);
897
898 #
899 # Firmware 79, type: SCODE FW HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192
900 #
901
902 write_le32(0x60000000); # Type
903 write_le64(0x00000000, 0x00000000); # ID
904 write_le16(8200); # IF
905 write_le32(192); # Size
906 write_hunk(812856, 192);
907}
908
909sub extract_firmware {
910 my $sourcefile = "hcw85bda.sys";
911 my $hash = "0e44dbf63bb0169d57446aec21881ff2";
912 my $outfile = "xc3028-v27.fw";
913 my $name = "xc2028 firmware";
914 my $version = 519;
915 my $nr_desc = 80;
916 my $out;
917
918 verify($sourcefile, $hash);
919
920 open INFILE, "<$sourcefile";
921 main_firmware($outfile, $name, $version, $nr_desc);
922 close INFILE;
923}
924
925extract_firmware;
926printf "Firmwares generated.\n";
diff --git a/Documentation/video4linux/sn9c102.txt b/Documentation/video4linux/sn9c102.txt
index 1ffad19ce891..b26f5195af51 100644
--- a/Documentation/video4linux/sn9c102.txt
+++ b/Documentation/video4linux/sn9c102.txt
@@ -568,6 +568,7 @@ the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'.
568Many thanks to following persons for their contribute (listed in alphabetical 568Many thanks to following persons for their contribute (listed in alphabetical
569order): 569order):
570 570
571- David Anderson for the donation of a webcam;
571- Luca Capello for the donation of a webcam; 572- Luca Capello for the donation of a webcam;
572- Philippe Coval for having helped testing the PAS202BCA image sensor; 573- Philippe Coval for having helped testing the PAS202BCA image sensor;
573- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the 574- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the