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
  ...
This commit is contained in:
Linus Torvalds
2008-01-25 13:59:51 -08:00
269 changed files with 29994 additions and 12100 deletions

View File

@@ -96,7 +96,6 @@ static struct video_device my_radio
{
"My radio",
VID_TYPE_TUNER,
VID_HARDWARE_MYRADIO,
radio_open.
radio_close,
NULL, /* no read */
@@ -118,13 +117,6 @@ static struct video_device my_radio
indicates that the device can be tuned. Clearly our radio is going to have some
way to change channel so it is tuneable.
</para>
<para>
The VID_HARDWARE_ types are unique to each device. Numbers are assigned by
<email>alan@redhat.com</email> when device drivers are going to be released. Until then you
can pull a suitably large number out of your hat and use it. 10000 should be
safe for a very long time even allowing for the huge number of vendors
making new and different radio cards at the moment.
</para>
<para>
We declare an open and close routine, but we do not need read or write,
which are used to read and write video data to or from the card itself. As
@@ -844,7 +836,6 @@ static struct video_device my_camera
"My Camera",
VID_TYPE_OVERLAY|VID_TYPE_SCALES|\
VID_TYPE_CAPTURE|VID_TYPE_CHROMAKEY,
VID_HARDWARE_MYCAMERA,
camera_open.
camera_close,
camera_read, /* no read */

View File

@@ -78,6 +78,18 @@ Example:
For a full list of card ID's please see Documentation/video4linux/CARDLIST.bttv.
In case of further problems please subscribe and send questions to the mailing list: linux-dvb@linuxtv.org.
2c) Probing the cards with broken PCI subsystem ID
--------------------------------------------------
There are some TwinHan cards that the EEPROM has become corrupted for some
reason. The cards do not have correct PCI subsystem ID. But we can force
probing the cards with broken PCI subsystem ID
$ echo 109e 0878 $subvendor $subdevice > \
/sys/bus/pci/drivers/bt878/new_id
109e: PCI_VENDOR_ID_BROOKTREE
0878: PCI_DEVICE_ID_BROOKTREE_878
Authors: Richard Walker,
Jamie Honan,
Michael Hunold,

View File

@@ -1,5 +1,7 @@
0 -> UNKNOWN/GENERIC [0070:3400]
1 -> Hauppauge WinTV-HVR1800lp [0070:7600]
2 -> Hauppauge WinTV-HVR1800 [0070:7800,0070:7801]
2 -> Hauppauge WinTV-HVR1800 [0070:7800,0070:7801,0070:7809]
3 -> Hauppauge WinTV-HVR1250 [0070:7911]
4 -> DViCO FusionHDTV5 Express [18ac:d500]
5 -> Hauppauge WinTV-HVR1500Q [0070:7790,0070:7797]
6 -> Hauppauge WinTV-HVR1500 [0070:7710,0070:7717]

View File

@@ -56,3 +56,4 @@
55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
57 -> ADS Tech Instant Video PCI [1421:0390]
58 -> Pinnacle PCTV HD 800i [11bd:0051]

View File

@@ -1,14 +1,17 @@
0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800]
1 -> Unknown EM2820/2840 video grabber (em2820/em2840)
1 -> Unknown EM2750/28xx video grabber (em2820/em2840) [eb1a:2750,eb1a:2820,eb1a:2821,eb1a:2860,eb1a:2861,eb1a:2870,eb1a:2881,eb1a:2883]
2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036]
3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208]
4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200]
5 -> MSI VOX USB 2.0 (em2820/em2840) [eb1a:2820]
4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200,2040:4201]
5 -> MSI VOX USB 2.0 (em2820/em2840)
6 -> Terratec Cinergy 200 USB (em2800)
7 -> Leadtek Winfast USB II (em2800)
8 -> Kworld USB2800 (em2800)
9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207]
10 -> Hauppauge WinTV HVR 900 (em2880)
11 -> Terratec Hybrid XS (em2880)
9 -> Pinnacle Dazzle DVC 90/DVC 100 (em2820/em2840) [2304:0207,2304:021a]
10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500]
11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
13 -> Terratec Prodigy XS (em2880)
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840)
15 -> V-Gear PocketTV (em2800)
16 -> Hauppauge WinTV HVR 950 (em2880) [2040:6513]

View File

@@ -16,3 +16,9 @@
16 -> GOTVIEW PCI DVD2 Deluxe [ffac:0600]
17 -> Yuan MPC622 [ff01:d998]
18 -> Digital Cowboy DCT-MTVP1 [1461:bfff]
19 -> Yuan PG600V2/GotView PCI DVD Lite [ffab:0600,ffad:0600]
20 -> Club3D ZAP-TV1x01 [ffab:0600]
21 -> AverTV MCE 116 Plus [1461:c439]
22 -> ASUS Falcon2 [1043:4b66,1043:462e,1043:4b2e]
23 -> AverMedia PVR-150 Plus [1461:c035]
24 -> AverMedia EZMaker PCI Deluxe [1461:c03f]

View File

@@ -80,7 +80,7 @@
79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
80 -> ASUS Digimatrix TV [1043:0210]
81 -> Philips Tiger reference design [1131:2018]
82 -> MSI TV@Anywhere plus [1462:6231]
82 -> MSI TV@Anywhere plus [1462:6231,1462:8624]
83 -> Terratec Cinergy 250 PCI TV [153b:1160]
84 -> LifeView FlyDVB Trio [5168:0319]
85 -> AverTV DVB-T 777 [1461:2c05,1461:2c05]
@@ -102,7 +102,7 @@
101 -> Pinnacle PCTV 310i [11bd:002f]
102 -> Avermedia AVerTV Studio 507 [1461:9715]
103 -> Compro Videomate DVB-T200A
104 -> Hauppauge WinTV-HVR1110 DVB-T/Hybrid [0070:6701]
104 -> Hauppauge WinTV-HVR1110 DVB-T/Hybrid [0070:6700,0070:6701,0070:6702,0070:6703,0070:6704,0070:6705]
105 -> Terratec Cinergy HT PCMCIA [153b:1172]
106 -> Encore ENLTV [1131:2342,1131:2341,3016:2344]
107 -> Encore ENLTV-FM [1131:230f]
@@ -116,3 +116,16 @@
115 -> Sabrent PCMCIA TV-PCB05 [0919:2003]
116 -> 10MOONS TM300 TV Card [1131:2304]
117 -> Avermedia Super 007 [1461:f01d]
118 -> Beholder BeholdTV 401 [0000:4016]
119 -> Beholder BeholdTV 403 [0000:4036]
120 -> Beholder BeholdTV 403 FM [0000:4037]
121 -> Beholder BeholdTV 405 [0000:4050]
122 -> Beholder BeholdTV 405 FM [0000:4051]
123 -> Beholder BeholdTV 407 [0000:4070]
124 -> Beholder BeholdTV 407 FM [0000:4071]
125 -> Beholder BeholdTV 409 [0000:4090]
126 -> Beholder BeholdTV 505 FM/RDS [0000:5051,0000:505B,5ace:5050]
127 -> Beholder BeholdTV 507 FM/RDS / BeholdTV 509 FM [0000:5071,0000:507B,5ace:5070,5ace:5090]
128 -> Beholder BeholdTV Columbus TVFM [0000:5201]
129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093]
130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193]

View File

@@ -52,7 +52,7 @@ tuner=50 - TCL 2002N
tuner=51 - Philips PAL/SECAM_D (FM 1256 I-H3)
tuner=52 - Thomson DTT 7610 (ATSC/NTSC)
tuner=53 - Philips FQ1286
tuner=54 - tda8290+75
tuner=54 - Philips/NXP TDA 8290/8295 + 8275/8275A/18271
tuner=55 - TCL 2002MB
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
tuner=57 - Philips FQ1236A MK4
@@ -69,7 +69,8 @@ tuner=67 - Philips TD1316 Hybrid Tuner
tuner=68 - Philips TUV1236D ATSC/NTSC dual in
tuner=69 - Tena TNF 5335 and similar models
tuner=70 - Samsung TCPN 2121P30A
tuner=71 - Xceive xc3028
tuner=71 - Xceive xc2028/xc3028 tuner
tuner=72 - Thomson FE6600
tuner=73 - Samsung TCPG 6121P30A
tuner=75 - Philips TEA5761 FM Radio
tuner=76 - Xceive 5000 tuner

View File

@@ -62,3 +62,4 @@
61 -> Pinnacle Studio Linx Video input cable (PAL) [2304:0301]
62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419]
63 -> Hauppauge WinTv-USB [2400:4200]
64 -> Pinnacle Studio PCTV USB (NTSC) FM V3 [2304:0113]

View File

@@ -0,0 +1,926 @@
#!/usr/bin/perl
# Copyright (c) Mauro Carvalho Chehab <mchehab@infradead.org>
# Released under GPLv2
#
# In order to use, you need to:
# 1) Download the windows driver with something like:
# wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
# 2) Extract the file hcw85bda.sys from the zip into the current dir:
# unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
# 3) run the script:
# ./extract_xc3028.pl
# 4) copy the generated file:
# cp xc3028-v27.fw /lib/firmware
#use strict;
use IO::Handle;
my $debug=0;
sub verify ($$)
{
my ($filename, $hash) = @_;
my ($testhash);
if (system("which md5sum > /dev/null 2>&1")) {
die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
}
open(CMD, "md5sum ".$filename."|");
$testhash = <CMD>;
$testhash =~ /([a-zA-Z0-9]*)/;
$testhash = $1;
close CMD;
die "Hash of extracted file does not match (found $testhash, expected $hash!\n" if ($testhash ne $hash);
}
sub get_hunk ($$)
{
my ($offset, $length) = @_;
my ($chunklength, $buf, $rcount, $out);
sysseek(INFILE, $offset, SEEK_SET);
while ($length > 0) {
# Calc chunk size
$chunklength = 2048;
$chunklength = $length if ($chunklength > $length);
$rcount = sysread(INFILE, $buf, $chunklength);
die "Ran out of data\n" if ($rcount != $chunklength);
$out .= $buf;
$length -= $rcount;
}
return $out;
}
sub write_le16($)
{
my $val = shift;
my $msb = ($val >> 8) &0xff;
my $lsb = $val & 0xff;
syswrite(OUTFILE, chr($lsb).chr($msb));
}
sub write_le32($)
{
my $val = shift;
my $l3 = ($val >> 24) & 0xff;
my $l2 = ($val >> 16) & 0xff;
my $l1 = ($val >> 8) & 0xff;
my $l0 = $val & 0xff;
syswrite(OUTFILE, chr($l0).chr($l1).chr($l2).chr($l3));
}
sub write_le64($$)
{
my $msb_val = shift;
my $lsb_val = shift;
my $l7 = ($msb_val >> 24) & 0xff;
my $l6 = ($msb_val >> 16) & 0xff;
my $l5 = ($msb_val >> 8) & 0xff;
my $l4 = $msb_val & 0xff;
my $l3 = ($lsb_val >> 24) & 0xff;
my $l2 = ($lsb_val >> 16) & 0xff;
my $l1 = ($lsb_val >> 8) & 0xff;
my $l0 = $lsb_val & 0xff;
syswrite(OUTFILE,
chr($l0).chr($l1).chr($l2).chr($l3).
chr($l4).chr($l5).chr($l6).chr($l7));
}
sub write_hunk($$)
{
my ($offset, $length) = @_;
my $out = get_hunk($offset, $length);
printf "(len %d) ",$length if ($debug);
for (my $i=0;$i<$length;$i++) {
printf "%02x ",ord(substr($out,$i,1)) if ($debug);
}
printf "\n" if ($debug);
syswrite(OUTFILE, $out);
}
sub write_hunk_fix_endian($$)
{
my ($offset, $length) = @_;
my $out = get_hunk($offset, $length);
printf "(len_fix %d) ",$length if ($debug);
for (my $i=0;$i<$length;$i++) {
printf "%02x ",ord(substr($out,$i,1)) if ($debug);
}
printf "\n" if ($debug);
my $i=0;
while ($i<$length) {
my $size = ord(substr($out,$i,1))*256+ord(substr($out,$i+1,1));
syswrite(OUTFILE, substr($out,$i+1,1));
syswrite(OUTFILE, substr($out,$i,1));
$i+=2;
if ($size>0 && $size <0x8000) {
for (my $j=0;$j<$size;$j++) {
syswrite(OUTFILE, substr($out,$j+$i,1));
}
$i+=$size;
}
}
}
sub main_firmware($$$$)
{
my $out;
my $j=0;
my $outfile = shift;
my $name = shift;
my $version = shift;
my $nr_desc = shift;
for ($j = length($name); $j <32; $j++) {
$name = $name.chr(0);
}
open OUTFILE, ">$outfile";
syswrite(OUTFILE, $name);
write_le16($version);
write_le16($nr_desc);
#
# Firmware 0, type: BASE FW F8MHZ (0x00000003), id: (0000000000000000), size: 8718
#
write_le32(0x00000003); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8718); # Size
write_hunk_fix_endian(813432, 8718);
#
# Firmware 1, type: BASE FW F8MHZ MTS (0x00000007), id: (0000000000000000), size: 8712
#
write_le32(0x00000007); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8712); # Size
write_hunk_fix_endian(822152, 8712);
#
# Firmware 2, type: BASE FW FM (0x00000401), id: (0000000000000000), size: 8562
#
write_le32(0x00000401); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8562); # Size
write_hunk_fix_endian(830872, 8562);
#
# Firmware 3, type: BASE FW FM INPUT1 (0x00000c01), id: (0000000000000000), size: 8576
#
write_le32(0x00000c01); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8576); # Size
write_hunk_fix_endian(839440, 8576);
#
# Firmware 4, type: BASE FW (0x00000001), id: (0000000000000000), size: 8706
#
write_le32(0x00000001); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8706); # Size
write_hunk_fix_endian(848024, 8706);
#
# Firmware 5, type: BASE FW MTS (0x00000005), id: (0000000000000000), size: 8682
#
write_le32(0x00000005); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(8682); # Size
write_hunk_fix_endian(856736, 8682);
#
# Firmware 6, type: STD FW (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000001, 0x00000007); # ID
write_le32(161); # Size
write_hunk_fix_endian(865424, 161);
#
# Firmware 7, type: STD FW MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000001, 0x00000007); # ID
write_le32(169); # Size
write_hunk_fix_endian(865592, 169);
#
# Firmware 8, type: STD FW (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000002, 0x00000007); # ID
write_le32(161); # Size
write_hunk_fix_endian(865424, 161);
#
# Firmware 9, type: STD FW MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000002, 0x00000007); # ID
write_le32(169); # Size
write_hunk_fix_endian(865592, 169);
#
# Firmware 10, type: STD FW (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000004, 0x00000007); # ID
write_le32(161); # Size
write_hunk_fix_endian(866112, 161);
#
# Firmware 11, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000004, 0x00000007); # ID
write_le32(169); # Size
write_hunk_fix_endian(866280, 169);
#
# Firmware 12, type: STD FW (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000008, 0x00000007); # ID
write_le32(161); # Size
write_hunk_fix_endian(866112, 161);
#
# Firmware 13, type: STD FW MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000008, 0x00000007); # ID
write_le32(169); # Size
write_hunk_fix_endian(866280, 169);
#
# Firmware 14, type: STD FW (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000003, 0x000000e0); # ID
write_le32(161); # Size
write_hunk_fix_endian(866800, 161);
#
# Firmware 15, type: STD FW MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000003, 0x000000e0); # ID
write_le32(169); # Size
write_hunk_fix_endian(866968, 169);
#
# Firmware 16, type: STD FW (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x0000000c, 0x000000e0); # ID
write_le32(161); # Size
write_hunk_fix_endian(867144, 161);
#
# Firmware 17, type: STD FW MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x0000000c, 0x000000e0); # ID
write_le32(169); # Size
write_hunk_fix_endian(867312, 169);
#
# Firmware 18, type: STD FW (0x00000000), id: SECAM/K1 (0000000000200000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x00200000); # ID
write_le32(161); # Size
write_hunk_fix_endian(867488, 161);
#
# Firmware 19, type: STD FW MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000000, 0x00200000); # ID
write_le32(169); # Size
write_hunk_fix_endian(867656, 169);
#
# Firmware 20, type: STD FW (0x00000000), id: SECAM/K3 (0000000004000000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x04000000); # ID
write_le32(161); # Size
write_hunk_fix_endian(867832, 161);
#
# Firmware 21, type: STD FW MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000000, 0x04000000); # ID
write_le32(169); # Size
write_hunk_fix_endian(868000, 169);
#
# Firmware 22, type: STD FW D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149
#
write_le32(0x00010030); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868176, 149);
#
# Firmware 23, type: STD FW D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149
#
write_le32(0x00000068); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868336, 149);
#
# Firmware 24, type: STD FW D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149
#
write_le32(0x00000070); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868488, 149);
#
# Firmware 25, type: STD FW D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149
#
write_le32(0x00000088); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868648, 149);
#
# Firmware 26, type: STD FW D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149
#
write_le32(0x00000090); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868800, 149);
#
# Firmware 27, type: STD FW D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149
#
write_le32(0x00000108); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868960, 149);
#
# Firmware 28, type: STD FW D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149
#
write_le32(0x00000110); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(869112, 149);
#
# Firmware 29, type: STD FW D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149
#
write_le32(0x00000208); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868648, 149);
#
# Firmware 30, type: STD FW D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149
#
write_le32(0x00000210); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(149); # Size
write_hunk_fix_endian(868800, 149);
#
# Firmware 31, type: STD FW FM (0x00000400), id: (0000000000000000), size: 135
#
write_le32(0x00000400); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le32(135); # Size
write_hunk_fix_endian(869584, 135);
#
# Firmware 32, type: STD FW (0x00000000), id: PAL/I (0000000000000010), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x00000010); # ID
write_le32(161); # Size
write_hunk_fix_endian(869728, 161);
#
# Firmware 33, type: STD FW MTS (0x00000004), id: PAL/I (0000000000000010), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000000, 0x00000010); # ID
write_le32(169); # Size
write_hunk_fix_endian(869896, 169);
#
# Firmware 34, type: STD FW (0x00000000), id: SECAM/L AM (0000001000400000), size: 169
#
write_le32(0x00000000); # Type
write_le64(0x00000010, 0x00400000); # ID
write_le32(169); # Size
write_hunk_fix_endian(870072, 169);
#
# Firmware 35, type: STD FW (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x0000000c, 0x00400000); # ID
write_le32(161); # Size
write_hunk_fix_endian(870248, 161);
#
# Firmware 36, type: STD FW (0x00000000), id: SECAM/Lc (0000000000800000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x00800000); # ID
write_le32(161); # Size
write_hunk_fix_endian(870416, 161);
#
# Firmware 37, type: STD FW (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le32(161); # Size
write_hunk_fix_endian(870584, 161);
#
# Firmware 38, type: STD FW LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161
#
write_le32(0x00001000); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le32(161); # Size
write_hunk_fix_endian(870752, 161);
#
# Firmware 39, type: STD FW LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161
#
write_le32(0x00003000); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le32(161); # Size
write_hunk_fix_endian(870920, 161);
#
# Firmware 40, type: STD FW MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le32(169); # Size
write_hunk_fix_endian(871088, 169);
#
# Firmware 41, type: STD FW (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(161); # Size
write_hunk_fix_endian(871264, 161);
#
# Firmware 42, type: STD FW LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
#
write_le32(0x00001000); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(161); # Size
write_hunk_fix_endian(871432, 161);
#
# Firmware 43, type: STD FW LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
#
write_le32(0x00003000); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(161); # Size
write_hunk_fix_endian(871600, 161);
#
# Firmware 44, type: STD FW (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161
#
write_le32(0x00000000); # Type
write_le64(0x00000000, 0x00002000); # ID
write_le32(161); # Size
write_hunk_fix_endian(871264, 161);
#
# Firmware 45, type: STD FW MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
#
write_le32(0x00000004); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(169); # Size
write_hunk_fix_endian(871936, 169);
#
# Firmware 46, type: STD FW MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
#
write_le32(0x00001004); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(169); # Size
write_hunk_fix_endian(872112, 169);
#
# Firmware 47, type: STD FW MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
#
write_le32(0x00003004); # Type
write_le64(0x00000000, 0x0000b700); # ID
write_le32(169); # Size
write_hunk_fix_endian(872288, 169);
#
# Firmware 48, type: SCODE FW HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(3280); # IF
write_le32(192); # Size
write_hunk(811896, 192);
#
# Firmware 49, type: SCODE FW HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(3300); # IF
write_le32(192); # Size
write_hunk(813048, 192);
#
# Firmware 50, type: SCODE FW HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(3440); # IF
write_le32(192); # Size
write_hunk(812280, 192);
#
# Firmware 51, type: SCODE FW HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(3460); # IF
write_le32(192); # Size
write_hunk(812472, 192);
#
# Firmware 52, type: SCODE FW DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192
#
write_le32(0x60210020); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(3800); # IF
write_le32(192); # Size
write_hunk(809784, 192);
#
# Firmware 53, type: SCODE FW HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4000); # IF
write_le32(192); # Size
write_hunk(812088, 192);
#
# Firmware 54, type: SCODE FW DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192
#
write_le32(0x60410020); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4080); # IF
write_le32(192); # Size
write_hunk(809976, 192);
#
# Firmware 55, type: SCODE FW HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4200); # IF
write_le32(192); # Size
write_hunk(811704, 192);
#
# Firmware 56, type: SCODE FW MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le16(4320); # IF
write_le32(192); # Size
write_hunk(808056, 192);
#
# Firmware 57, type: SCODE FW HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4450); # IF
write_le32(192); # Size
write_hunk(812664, 192);
#
# Firmware 58, type: SCODE FW HAS IF (0x60000000), IF = 4.50 MHz id: NTSC/M Jp (0000000000002000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00002000); # ID
write_le16(4500); # IF
write_le32(192); # Size
write_hunk(807672, 192);
#
# Firmware 59, type: SCODE FW LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192
#
write_le32(0x60023000); # Type
write_le64(0x00000000, 0x00008000); # ID
write_le16(4600); # IF
write_le32(192); # Size
write_hunk(807864, 192);
#
# Firmware 60, type: SCODE FW DTV78 ZARLINK456 HAS IF (0x62000100), IF = 4.76 MHz id: (0000000000000000), size: 192
#
write_le32(0x62000100); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4760); # IF
write_le32(192); # Size
write_hunk(807288, 192);
#
# Firmware 61, type: SCODE FW HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(4940); # IF
write_le32(192); # Size
write_hunk(811512, 192);
#
# Firmware 62, type: SCODE FW DTV7 ZARLINK456 HAS IF (0x62000080), IF = 5.26 MHz id: (0000000000000000), size: 192
#
write_le32(0x62000080); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(5260); # IF
write_le32(192); # Size
write_hunk(810552, 192);
#
# Firmware 63, type: SCODE FW MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG NICAM/B (0000000800000007), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000008, 0x00000007); # ID
write_le16(5320); # IF
write_le32(192); # Size
write_hunk(810744, 192);
#
# Firmware 64, type: SCODE FW DTV8 CHINA HAS IF (0x64000200), IF = 5.40 MHz id: (0000000000000000), size: 192
#
write_le32(0x64000200); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(5400); # IF
write_le32(192); # Size
write_hunk(807096, 192);
#
# Firmware 65, type: SCODE FW DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192
#
write_le32(0x60110020); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(5580); # IF
write_le32(192); # Size
write_hunk(809592, 192);
#
# Firmware 66, type: SCODE FW HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2/B (0000000200000007), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000002, 0x00000007); # ID
write_le16(5640); # IF
write_le32(192); # Size
write_hunk(808440, 192);
#
# Firmware 67, type: SCODE FW HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM/B (0000000800000007), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000008, 0x00000007); # ID
write_le16(5740); # IF
write_le32(192); # Size
write_hunk(808632, 192);
#
# Firmware 68, type: SCODE FW DTV7 DIBCOM52 HAS IF (0x61000080), IF = 5.90 MHz id: (0000000000000000), size: 192
#
write_le32(0x61000080); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(5900); # IF
write_le32(192); # Size
write_hunk(810360, 192);
#
# Firmware 69, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/I (0000000000000010), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000000, 0x00000010); # ID
write_le16(6000); # IF
write_le32(192); # Size
write_hunk(808824, 192);
#
# Firmware 70, type: SCODE FW DTV6 QAM F6MHZ HAS IF (0x68000060), IF = 6.20 MHz id: (0000000000000000), size: 192
#
write_le32(0x68000060); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(6200); # IF
write_le32(192); # Size
write_hunk(809400, 192);
#
# Firmware 71, type: SCODE FW HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000010); # ID
write_le16(6240); # IF
write_le32(192); # Size
write_hunk(808248, 192);
#
# Firmware 72, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000000, 0x00200000); # ID
write_le16(6320); # IF
write_le32(192); # Size
write_hunk(811320, 192);
#
# Firmware 73, type: SCODE FW HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00200000); # ID
write_le16(6340); # IF
write_le32(192); # Size
write_hunk(809208, 192);
#
# Firmware 74, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.50 MHz id: SECAM/K3 (0000000004000000), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000000, 0x04000000); # ID
write_le16(6500); # IF
write_le32(192); # Size
write_hunk(811128, 192);
#
# Firmware 75, type: SCODE FW DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192
#
write_le32(0x60090020); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(6580); # IF
write_le32(192); # Size
write_hunk(807480, 192);
#
# Firmware 76, type: SCODE FW HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000003, 0x000000e0); # ID
write_le16(6600); # IF
write_le32(192); # Size
write_hunk(809016, 192);
#
# Firmware 77, type: SCODE FW MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192
#
write_le32(0x60008000); # Type
write_le64(0x00000003, 0x000000e0); # ID
write_le16(6680); # IF
write_le32(192); # Size
write_hunk(810936, 192);
#
# Firmware 78, type: SCODE FW DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192
#
write_le32(0x60810020); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(8140); # IF
write_le32(192); # Size
write_hunk(810168, 192);
#
# Firmware 79, type: SCODE FW HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192
#
write_le32(0x60000000); # Type
write_le64(0x00000000, 0x00000000); # ID
write_le16(8200); # IF
write_le32(192); # Size
write_hunk(812856, 192);
}
sub extract_firmware {
my $sourcefile = "hcw85bda.sys";
my $hash = "0e44dbf63bb0169d57446aec21881ff2";
my $outfile = "xc3028-v27.fw";
my $name = "xc2028 firmware";
my $version = 519;
my $nr_desc = 80;
my $out;
verify($sourcefile, $hash);
open INFILE, "<$sourcefile";
main_firmware($outfile, $name, $version, $nr_desc);
close INFILE;
}
extract_firmware;
printf "Firmwares generated.\n";

View File

@@ -568,6 +568,7 @@ the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'.
Many thanks to following persons for their contribute (listed in alphabetical
order):
- David Anderson for the donation of a webcam;
- Luca Capello for the donation of a webcam;
- Philippe Coval for having helped testing the PAS202BCA image sensor;
- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the