]> git.proxmox.com Git - pve-firmware.git/blobdiff - assemble-firmware.pl
assemble: move check+copy FW into own sub for reuse
[pve-firmware.git] / assemble-firmware.pl
index 07ec09fed4f312e7d3989923a3f4959aa3761c88..dc518b1fb756e06c3e44708835abfe87f6052d48 100755 (executable)
@@ -25,6 +25,7 @@ FW13
 RTL8192U/boot.img
 RTL8192U/data.img
 RTL8192U/main.img
+amdgpu/aldebaran_cap.bin
 amdgpu/cyan_skillfish_ce.bin
 amdgpu/cyan_skillfish_me.bin
 amdgpu/cyan_skillfish_mec.bin
@@ -33,9 +34,45 @@ amdgpu/cyan_skillfish_pfp.bin
 amdgpu/cyan_skillfish_rlc.bin
 amdgpu/cyan_skillfish_sdma.bin
 amdgpu/cyan_skillfish_sdma1.bin
+amdgpu/gc_11_0_0_imu.bin
+amdgpu/gc_11_0_0_me.bin
+amdgpu/gc_11_0_0_mec.bin
+amdgpu/gc_11_0_0_mes.bin
+amdgpu/gc_11_0_0_mes1.bin
+amdgpu/gc_11_0_0_pfp.bin
+amdgpu/gc_11_0_0_rlc.bin
+amdgpu/gc_11_0_0_toc.bin
+amdgpu/gc_11_0_1_imu.bin
+amdgpu/gc_11_0_1_me.bin
+amdgpu/gc_11_0_1_mec.bin
+amdgpu/gc_11_0_1_mes.bin
+amdgpu/gc_11_0_1_mes1.bin
+amdgpu/gc_11_0_1_pfp.bin
+amdgpu/gc_11_0_1_rlc.bin
+amdgpu/gc_11_0_2_imu.bin
+amdgpu/gc_11_0_2_me.bin
+amdgpu/gc_11_0_2_mec.bin
+amdgpu/gc_11_0_2_mes.bin
+amdgpu/gc_11_0_2_mes1.bin
+amdgpu/gc_11_0_2_pfp.bin
+amdgpu/gc_11_0_2_rlc.bin
+amdgpu/ip_discovery.bin
 amdgpu/navi10_mes.bin
+amdgpu/navi12_cap.bin
+amdgpu/psp_13_0_0_sos.bin
+amdgpu/psp_13_0_7_sos.bin
+amdgpu/sdma_6_0_0.bin
+amdgpu/sdma_6_0_1.bin
+amdgpu/sdma_6_0_2.bin
+amdgpu/sienna_cichlid_cap.bin
 amdgpu/sienna_cichlid_mes.bin
+amdgpu/sienna_cichlid_mes1.bin
+amdgpu/smu_13_0_0.bin
+amdgpu/smu_13_0_7.bin
 amdgpu/vangogh_gpu_info.bin
+amdgpu/vcn_4_0_0.bin
+amdgpu/vcn_4_0_4.bin
+amdgpu/vega10_cap.bin
 amdgpu/yellow_carp_gpu_info.bin
 ar9170.fw
 ast_dp501_fw.bin
@@ -77,13 +114,8 @@ b43/ucode9.fw
 b43legacy/ucode2.fw
 b43legacy/ucode4.fw
 bfubase.frm
-brcm/brcm/brcmfmac*-pcie.*.txt
-brcm/brcm/brcmfmac*-sdio.*.txt
-brcm/brcmfmac*-pcie.*.bin
-brcm/brcmfmac*-pcie.*.txt
 brcm/brcmfmac*-pcie.txt
 brcm/brcmfmac*-sdio.*.bin
-brcm/brcmfmac*-sdio.*.txt
 brcm/brcmfmac-sdio.bin
 brcm/brcmfmac-sdio.txt
 brcm/brcmfmac43143-sdio.txt
@@ -132,6 +164,16 @@ ctfw.bin
 cxgb4/t4fw-1.3.10.0.bin
 cyzfirm.bin
 daqboard2000_firmware.bin
+dvb_driver_si2141_rom60.fw
+dvb_driver_si2141_rom61.fw
+dvb_driver_si2146_rom11.fw
+dvb_driver_si2147_rom50.fw
+dvb_driver_si2148_rom32.fw
+dvb_driver_si2148_rom33.fw
+dvb_driver_si2157_rom50.fw
+dvb_driver_si2158_rom51.fw
+dvb_driver_si2177_rom50.fw
+dvb_driver_si2178_rom50.fw
 fw.ram.bin
 i1480-phy-0.0.bin
 i1480-pre-phy-0.0.bin
@@ -140,6 +182,10 @@ i2400m-fw-sdio-1.3.sbcf
 i2400m-fw-usb-1.5.sbcf
 i6050-fw-usb-1.5.sbcf
 idt82p33xxx.bin
+inside-secure/eip197b/ifpp.bin
+inside-secure/eip197b/ipue.bin
+inside-secure/eip197d/ifpp.bin
+inside-secure/eip197d/ipue.bin
 isi4608.bin
 isi4616.bin
 isi608.bin
@@ -178,6 +224,11 @@ iwlwifi-9260-th-a0-jf-a0--33.ucode
 iwlwifi-9260-th-a0-jf-a0-34.ucode
 iwlwifi-9260-th-a0-jf-a0-43.ucode
 iwlwifi-9260-th-b0-jf-b0--33.ucode
+iwlwifi-BzBnj-a0-fm-a0-72.ucode
+iwlwifi-BzBnj-a0-fm4-a0-72.ucode
+iwlwifi-BzBnj-a0-gf-a0-72.ucode
+iwlwifi-BzBnj-a0-gf4-a0-72.ucode
+iwlwifi-BzBnj-a0-hr-b0-72.ucode
 iwlwifi-Qu-a0-hr-a0--33.ucode
 iwlwifi-Qu-a0-hr-a0-34.ucode
 iwlwifi-Qu-a0-hr-a0-43.ucode
@@ -190,7 +241,10 @@ iwlwifi-Qu-a0-jf-b0-43.ucode
 iwlwifi-Qu-a0-jf-b0-48.ucode
 iwlwifi-Qu-a0-jf-b0-50.ucode
 iwlwifi-Qu-b0-hr-b0-43.ucode
+iwlwifi-Qu-b0-hr-b0-72.ucode
 iwlwifi-Qu-b0-jf-b0-43.ucode
+iwlwifi-Qu-b0-jf-b0-72.ucode
+iwlwifi-Qu-c0-hr-b0-72.ucode
 iwlwifi-QuQnj-a0-hr-a0-34.ucode
 iwlwifi-QuQnj-a0-hr-a0-43.ucode
 iwlwifi-QuQnj-a0-hr-a0-48.ucode
@@ -203,66 +257,91 @@ iwlwifi-QuQnj-b0-hr-b0-50.ucode
 iwlwifi-QuQnj-b0-hr-b0-59.ucode
 iwlwifi-QuQnj-b0-hr-b0-63.ucode
 iwlwifi-QuQnj-b0-hr-b0-66.ucode
+iwlwifi-QuQnj-b0-hr-b0-72.ucode
 iwlwifi-QuQnj-b0-jf-b0-48.ucode
 iwlwifi-QuQnj-b0-jf-b0-50.ucode
 iwlwifi-QuQnj-b0-jf-b0-59.ucode
 iwlwifi-QuQnj-b0-jf-b0-63.ucode
 iwlwifi-QuQnj-b0-jf-b0-66.ucode
+iwlwifi-QuQnj-b0-jf-b0-72.ucode
 iwlwifi-QuQnj-f0-hr-a0-34.ucode
 iwlwifi-QuQnj-f0-hr-a0-43.ucode
 iwlwifi-QuQnj-f0-hr-a0-48.ucode
 iwlwifi-QuQnj-f0-hr-a0-50.ucode
+iwlwifi-QuZ-a0-hr-b0-72.ucode
+iwlwifi-QuZ-a0-jf-b0-72.ucode
 iwlwifi-SoSnj-a0-gf-a0-59.ucode
 iwlwifi-SoSnj-a0-gf-a0-63.ucode
 iwlwifi-SoSnj-a0-gf-a0-66.ucode
+iwlwifi-SoSnj-a0-gf-a0-72.ucode
 iwlwifi-SoSnj-a0-gf4-a0-59.ucode
 iwlwifi-SoSnj-a0-gf4-a0-63.ucode
 iwlwifi-SoSnj-a0-gf4-a0-66.ucode
+iwlwifi-SoSnj-a0-gf4-a0-72.ucode
 iwlwifi-SoSnj-a0-hr-b0-59.ucode
 iwlwifi-SoSnj-a0-hr-b0-63.ucode
 iwlwifi-SoSnj-a0-hr-b0-66.ucode
+iwlwifi-SoSnj-a0-hr-b0-72.ucode
 iwlwifi-SoSnj-a0-jf-b0-63.ucode
 iwlwifi-SoSnj-a0-jf-b0-66.ucode
+iwlwifi-SoSnj-a0-jf-b0-72.ucode
 iwlwifi-SoSnj-a0-mr-a0-59.ucode
 iwlwifi-SoSnj-a0-mr-a0-63.ucode
 iwlwifi-SoSnj-a0-mr-a0-66.ucode
+iwlwifi-SoSnj-a0-mr-a0-72.ucode
+iwlwifi-bz-a0-fm-a0-72.ucode
 iwlwifi-bz-a0-gf-a0-63.ucode
 iwlwifi-bz-a0-gf-a0-66.ucode
+iwlwifi-bz-a0-gf-a0-72.ucode
 iwlwifi-bz-a0-gf4-a0-63.ucode
 iwlwifi-bz-a0-gf4-a0-66.ucode
+iwlwifi-bz-a0-gf4-a0-72.ucode
 iwlwifi-bz-a0-hr-b0-63.ucode
 iwlwifi-bz-a0-hr-b0-66.ucode
+iwlwifi-bz-a0-hr-b0-72.ucode
 iwlwifi-bz-a0-mr-a0-63.ucode
 iwlwifi-bz-a0-mr-a0-66.ucode
+iwlwifi-bz-a0-mr-a0-72.ucode
+iwlwifi-cc-a0-72.ucode
+iwlwifi-gl-a0-fm-a0-72.ucode
 iwlwifi-ma-a0-fm-a0-66.ucode
+iwlwifi-ma-a0-fm-a0-72.ucode
 iwlwifi-ma-a0-gf-a0-59.ucode
 iwlwifi-ma-a0-gf-a0-63.ucode
 iwlwifi-ma-a0-gf-a0-66.ucode
+iwlwifi-ma-a0-gf-a0-72.ucode
 iwlwifi-ma-a0-gf4-a0-63.ucode
 iwlwifi-ma-a0-gf4-a0-66.ucode
+iwlwifi-ma-a0-gf4-a0-72.ucode
 iwlwifi-ma-a0-hr-b0-63.ucode
 iwlwifi-ma-a0-hr-b0-66.ucode
+iwlwifi-ma-a0-hr-b0-72.ucode
 iwlwifi-ma-a0-mr-a0-59.ucode
 iwlwifi-ma-a0-mr-a0-63.ucode
 iwlwifi-ma-a0-mr-a0-66.ucode
+iwlwifi-ma-a0-mr-a0-72.ucode
 iwlwifi-so-a0-gf-a0-48.ucode
 iwlwifi-so-a0-gf-a0-50.ucode
 iwlwifi-so-a0-gf-a0-59.ucode
 iwlwifi-so-a0-gf-a0-63.ucode
 iwlwifi-so-a0-gf-a0-66.ucode
+iwlwifi-so-a0-gf-a0-72.ucode
 iwlwifi-so-a0-hr-b0-48.ucode
 iwlwifi-so-a0-hr-b0-50.ucode
 iwlwifi-so-a0-hr-b0-59.ucode
 iwlwifi-so-a0-hr-b0-63.ucode
 iwlwifi-so-a0-hr-b0-66.ucode
+iwlwifi-so-a0-hr-b0-72.ucode
 iwlwifi-so-a0-jf-b0-48.ucode
 iwlwifi-so-a0-jf-b0-50.ucode
 iwlwifi-so-a0-jf-b0-59.ucode
 iwlwifi-so-a0-jf-b0-63.ucode
 iwlwifi-so-a0-jf-b0-66.ucode
+iwlwifi-so-a0-jf-b0-72.ucode
 iwlwifi-su-z0-43.ucode
 iwlwifi-ty-a0-gf-a0-48.ucode
 iwlwifi-ty-a0-gf-a0-50.ucode
+iwlwifi-ty-a0-gf-a0-72.ucode
 iwmc3200wifi-calib-sdio.bin
 iwmc3200wifi-lmac-sdio.bin
 iwmc3200wifi-umac-sdio.bin
@@ -293,6 +372,7 @@ mrvl/sd8786_uapsta.bin
 mrvl/sd8977_uapsta.bin
 mrvl/sd8987_uapsta.bin
 mrvl/sd8997_uapsta.bin
+mrvl/sdiouart8997_combo_v4.bin
 mrvl/usb8997_uapsta.bin
 mt7603_e1.bin
 mt7603_e2.bin
@@ -309,6 +389,7 @@ nxromimg.bin
 orinoco_ezusb_fw
 pca200e_ecd.bin2
 phanfw-4.0.579.bin
+plfxlc/lifi-x.bin
 prism2_ru.fw
 prism_ap_fw.bin
 prism_sta_fw.bin
@@ -364,44 +445,38 @@ sub copy_fw {
     my ($src, $dstfw) = @_;
 
     my $dest = "$target/$dstfw";
-
-    return if -f $dest;
+    return if -f $dest || -f "${dest}.xz";
 
     mkpath dirname($dest);
     system ("cp '$src' '$dest'") == 0 or die "copy '$src' to '$dest' failed!\n";
 }
 
-my $fwdone = {};
-my $fwbase_name = {};
+my ($fwdone, $fwbase_name, $error) = ({}, {}, 0);
 
-my $error = 0;
+sub add_fw :prototype($$) {
+    my ($fw, $mod) = @_;
 
-open(my $fd, '<', $fwlist);
-while(defined(my $line = <$fd>)) {
-    chomp $line;
-    my ($fw, $mod) = split(/\s+/, $line, 2);
-
-    next if $fw =~ m/\b(?:microcode_amd|amd_sev_)/; # contained in amd64-microcode
+    return if $fw =~ m/\b(?:microcode_amd|amd_sev_)/; # contained in amd64-microcode
 
     my $fw_name = basename($fw);
     $fwbase_name->{$fw_name} = 1;
 
-    next if $mod =~ m|^kernel/sound|;
-    next if $mod =~ m|^kernel/drivers/isdn|;
+    return if $mod =~ m|^kernel/sound|;
+    return if $mod =~ m|^kernel/drivers/isdn|;
 
     # skip ZyDas usb wireless, use package zd1211-firmware instead
-    next if $fw =~ m|^zd1211/|;
+    return if $fw =~ m|^zd1211/|;
 
     # skip atmel at76c50x wireless networking chips, use package atmel-firmware instead
-    next if $fw =~ m|^atmel_at76c50|;
+    return if $fw =~ m|^atmel_at76c50|;
 
     # skip Bluetooth dongles based on the Broadcom BCM203x, use package bluez-firmware instead
-    next if $fw =~ m|^BCM2033|;
+    return if $fw =~ m|^BCM2033|;
 
-    next if $fw =~ m|^xc3028-v27\.fw|; # found twice!
-    next if $fw =~ m|^ueagle-atm/|; # where are those files?
+    return if $fw =~ m|^xc3028-v27\.fw|; # found twice!
+    return if $fw =~ m|^ueagle-atm/|; # where are those files?
 
-    next if $fwdone->{$fw};
+    return if $fwdone->{$fw};
     $fwdone->{$fw} = 1;
 
     my $fwdest = $fw;
@@ -418,11 +493,11 @@ while(defined(my $line = <$fd>)) {
 
     if (-e "$target/$fw") {
        warn "WARN: allowed to skip existing '$fw'\n" if $ALLOW_MISSING->{$fw};
-       next;
+       return;
     }
     if (-f "$fwsrc3/$fw") {
        copy_fw("$fwsrc3/$fw", $fwdest);
-       next;
+       return;
     }
 
     my $module = basename($mod);
@@ -438,20 +513,20 @@ while(defined(my $line = <$fd>)) {
                $fwbase_name->{$f_name} = 1;
            }
            warn "WARN: allowed to skip existing '$fw'\n" if $ALLOW_MISSING->{$fw};
-           next;
+           return;
        } else {
-           next if $ALLOW_MISSING->{$fw};
+           return if $ALLOW_MISSING->{$fw};
            warn "ERROR: unable to find FW for GLOB ($module): $fw\n";
            $error++;
        }
     }
 
     if ($fw =~ m|/|) {
-       next if $ALLOW_MISSING->{$fw};
+       return if $ALLOW_MISSING->{$fw};
 
        warn "ERROR: unable to find firmware ($module): $fw\n";
        $error++;
-       next;
+       return;
     }
 
     my $sr = `find '$target' \\( -type f -o -type l \\) -name '$name'`;
@@ -464,7 +539,7 @@ while(defined(my $line = <$fd>)) {
                $found = 1;
            }
        }
-       next if $found;
+       return if $found;
     }
 
     $sr = `find '$fwsrc2' -type f -name '$name'`;
@@ -472,7 +547,7 @@ while(defined(my $line = <$fd>)) {
     if ($sr) {
        print "found $fw in $sr\n";
        copy_fw($sr, $fwdest);
-       next;
+       return;
     }
 
     $sr = `find '$fwsrc3' -type f -name '$name'`;
@@ -480,15 +555,23 @@ while(defined(my $line = <$fd>)) {
     if ($sr) {
        print "found $fw in $sr\n";
        copy_fw($sr, $fwdest);
-       next;
+       return;
     }
 
-    next if $ALLOW_MISSING->{$fw};
-    next if $fw =~ m|^dvb-| || $fw =~ m|\.inp$|;
+    return if $ALLOW_MISSING->{$fw};
+    return if $fw =~ m|^dvb-| || $fw =~ m|\.inp$|;
 
     warn "ERROR: unable to find firmware ($module): $fw\n";
     $error++;
-    next;
+    return;
+}
+
+open(my $fd, '<', $fwlist);
+while(defined(my $line = <$fd>)) {
+    chomp $line;
+    my ($fw, $mod) = split(/\s+/, $line, 2);
+
+    add_fw($fw, $mod);
 }
 close($fd);