- Update to version 20241113 (git commit 1727aceef4d2):

* qcom: venus-5.4: add venus firmware file for qcs615
  * qcom: update venus firmware file for SC7280
  * QCA: Add 22 bluetooth firmware nvm files for QCA2066

- Update to version 20241112 (git commit c57a0a42468b):
  * mediatek MT7922: update bluetooth firmware to 20241106163512
  * mediatek MT7921: update bluetooth firmware to 20241106151414
  * linux-firmware: update firmware for MT7922 WiFi device
  * linux-firmware: update firmware for MT7921 WiFi device
  * qcom: Add QDU100 firmware image files.
  * qcom: Update aic100 firmware files
  * dedup-firmware.sh: fix infinite loop for --verbose
  * rtl_bt: Update RTL8852BT/RTL8852BE-VT BT USB FW to 0x04D7_63F7
  * cnm: update chips&media wave521c firmware.
  * mediatek MT7920: update bluetooth firmware to 20241104091246
  * linux-firmware: update firmware for MT7920 WiFi device
  * copy-firmware.sh: Run check_whence.py only if in a git repo
  * cirrus: cs35l56: Add firmware for Cirrus CS35L56 for various Dell laptops
  * amdgpu: update DMCUB to v9.0.10.0 for DCN351
  * rtw89: 8852a: update fw to v0.13.36.2
  * rtw88: Add firmware v52.14.0 for RTL8812AU
  * i915: Update Xe2LPD DMC to v2.23
  * linux-firmware: update firmware for mediatek bluetooth chip (MT7925)
  * linux-firmware: update firmware for MT7925 WiFi device
  * WHENCE: Add sof-tolg for mt8195
  *  linux-firmware: Update firmware file for Intel BlazarI core
  * qcom: Add link for QCS6490 GPU firmware
  * qcom: update gpu firmwares for qcs615 chipset
  * cirrus: cs35l56: Update firmware for Cirrus Amps for some HP laptops

OBS-URL: https://build.opensuse.org/package/show/Kernel:HEAD/kernel-firmware?expand=0&rev=508
This commit is contained in:
Takashi Iwai 2024-11-13 16:03:13 +00:00 committed by Git OBS Bridge
commit f4daba6a5b
59 changed files with 19752 additions and 0 deletions

42
.gitattributes vendored Normal file
View File

@ -0,0 +1,42 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
## Specific LFS patterns
ast_dp501_fw.bin filter=lfs diff=lfs merge=lfs -text
board-2.bin filter=lfs diff=lfs merge=lfs -text
board-2.bin.gfb04a7f filter=lfs diff=lfs merge=lfs -text
iwlwifi-Qu-b0-hr-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-Qu-b0-jf-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-Qu-c0-hr-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-Qu-c0-jf-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-QuZ-a0-hr-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-QuZ-a0-jf-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-cc-a0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-so-a0-gf-a0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-so-a0-gf4-a0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-so-a0-hr-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-so-a0-jf-b0-71.ucode filter=lfs diff=lfs merge=lfs -text
iwlwifi-ty-a0-gf-a0-71.ucode filter=lfs diff=lfs merge=lfs -text
ql2600_fw.bin filter=lfs diff=lfs merge=lfs -text
ql2700_fw.bin filter=lfs diff=lfs merge=lfs -text
ql8300_fw.bin filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

117
README.build Normal file
View File

@ -0,0 +1,117 @@
FILES
=====
topicdefs:
Definitions of each flavor (topic) and description;
the description is filled into spec file
topicprovs:
Additional Provides and Obsoletes of each topic
topics.list:
Mapping between WHENCE entries and topics.
Each line consists of two or more items. The first column is
the first word of the WHENCE "Driver:" entry line to match.
The second column is the topic/flavor, and the rest columns
are the module names. If no module name is provided, the same
word as the first column is used as the module name.
The validity with the latest kernel binary packages can be
checked with check-topic.py script below.
licenses.list:
List of license files for each WHENCE entry.
aliases.list:
List of module aliases for each module.
This is updated by update-alises.py script below.
extrawhence:
Additional WHENCE entries for the own firmware files.
kernel-firmware.spec.in:
The spec file template. Edit this and generate
kernel-firmware.spec dynamically via makespec.sh script.
makespec.sh:
A script to combine the spec template and other info into the
final kernel-firmware.spec.
check-topic.py:
A program to check the validity of topics.list. Pass the
latest WHENCE file and the kernel RPM files to verify.
update-aliases.py:
A program to update aliases.list from the latest kernel RPM
files. Pass kernel RPM files as arguments.
install-split.sh:
A helper script to copy the files based on WHENCE like the
above, but also to create a file list for each topic in
files-$TOPIC file. The installed files are compressed with
xz, as well as symlinks.
list-license.sh:
A helper script to add file list entries for the corresponding
license files for each topic. It parses licenses.list.
get_supplements.sh:
A helper script to create Supplements entries for each topic
from aliases.list above.
MAINTENANCE WORKS
=================
Upon the update of linux-firmware.git
-------------------------------------
update the kernel-firmware tarball as usual:
% cd linux-firmware
% git archive --format=tar --prefix=kernel-firmware-$version/ -v master ./ \
| xz -9 -M 4G --check=crc32 -T 4 > /tmp/kernel-firmware-$version.tar.xz
Run check-topic.py to verify whether new entries are added:
% python3 ./check-topic.py /somewhere/WHENCE /rpms/kernel-default-*.rpm
Update topics.list accordingly if new entry was added or updated in
WHENCE:
If new modules are added, update aliases.list as well:
% python3 ./update-aliases.py /rpms/kernel-default-*.rpm
After the update of these files, recreate kernel-firmware.spec by
makespec.sh script:
% sh ./makespec.sh 20190712 < kernel-firmware.spec.in > kernel-firmware.spec
where the argument is the version of the kernel firmware package.
And, don't forget to update kernel-firmware.changes accordingly.
Upon the update of kernel binary rpms
-------------------------------------
Again, run check-topic.py and update-aliases.py for the new kernel RPM
files, and rebuild kernel-firmware.spec.
Adding own firmware binaries
----------------------------
The new packaging relies purely on WHENCE file for counting the
installed files. You have to either patch WHENCE file or put your own
stuff into extrawhence file, at least with "Driver:" and "File"
entries. The extrawhence file is concatenated to WHENCE file at
building a package.
Creating a new kernel-firmware subpackage flavor
------------------------------------------------
Edit topicdefs file and add the new entry, and update topics.list and
licenses.list accordingly (these have to be updated manually).

8
_constraints Normal file
View File

@ -0,0 +1,8 @@
<constraints>
<hardware>
<disk>
<size unit="G">8</size>
</disk>
</hardware>
</constraints>

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>uncompressed</package>
</multibuild>

15
_service Normal file
View File

@ -0,0 +1,15 @@
<services>
<service mode="disabled" name="tar_scm">
<param name="url">https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
<param name="filename">kernel-firmware</param>
<param name="versionformat">%cd</param>
<param name="revision">main</param>
</service>
<service mode="disabled" name="recompress">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service mode="disabled" name="set_version"/>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git</param>
<param name="changesrevision">1727aceef4d2f8e520111e4d27eb5e3e6663caba</param></service></servicedata>

5953
aliases.list Normal file

File diff suppressed because it is too large Load Diff

3
ast_dp501_fw.bin Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d098b33f5bdd3a262e5ac57717ef97b29a9d6fc54db65e5b88bcd31afaa63f58
size 26808

3
board-2.bin Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7ce00dc04735053c12c8268c3e82004175f0f108abd93c76bab95544e9e48bf8
size 1897968

3
board-2.bin.gfb04a7f Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:92357946083541fc3370a152df57cb5a74cd28adcdc78339e57d8c98e42526cd
size 382856

16
check-topic.py Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/python3
#
# A program to check the validity of topics.list
#
# usage: check-topic.py WHENCE KERNEL-RPMs...
#
from sys import argv
from fwtopics import FWTopics
if __name__ == '__main__':
fw = FWTopics()
argv.pop(0)
fw.parse_whence(argv.pop(0))
for arg in argv:
fw.scan_firmware(arg, fw.check_module())

View File

@ -0,0 +1,14 @@
diff --git a/copy-firmware.sh b/copy-firmware.sh
index dcb3b92c7229..e16424dc16f3 100755
--- a/copy-firmware.sh
+++ b/copy-firmware.sh
@@ -70,6 +70,9 @@ $verbose "Checking that WHENCE file is formatted properly"
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do
+ case "$f" in
+ */README) continue;;
+ esac
install -d "$destdir/$(dirname "$f")"
$verbose "copying/compressing file $f$compext"
if test "$compress" != "cat" && test "$k" = "RawFile"; then

View File

@ -0,0 +1,15 @@
diff --git a/copy-firmware.sh b/copy-firmware.sh
index dcb3b92c7229..fbadaf0b6027 100755
--- a/copy-firmware.sh
+++ b/copy-firmware.sh
@@ -65,8 +65,8 @@ if test -d "$destdir"; then
find "$destdir" -type d -empty >/dev/null || warn "destination folder is not empty."
fi
-$verbose "Checking that WHENCE file is formatted properly"
-./check_whence.py || err "check_whence.py has detected errors."
+# $verbose "Checking that WHENCE file is formatted properly"
+# ./check_whence.py || err "check_whence.py has detected errors."
# shellcheck disable=SC2162 # file/folder name can include escaped symbols
grep -E '^(RawFile|File):' WHENCE | sed -E -e 's/^(RawFile|File): */\1 /;s/"//g' | while read k f; do

View File

@ -0,0 +1,21 @@
diff --git a/copy-firmware.sh b/copy-firmware.sh
index 6757c6ce03a3..fc096dd6daf0 100755
--- a/copy-firmware.sh
+++ b/copy-firmware.sh
@@ -136,9 +136,15 @@ grep -E '^Link:' WHENCE | sed -e 's/^Link: *//g;s/-> //g' | while read f d; do
if test -d "$target"; then
$verbose "creating link $f -> $d"
ln -s "$d" "$destdir/$f"
- else
+ elif test -f "$target$compext"; then
$verbose "creating link $f$compext -> $d$compext"
ln -s "$d$compext" "$destdir/$f$compext"
+ elif test -f "$target"; then
+ $verbose "creating link $f -> $d"
+ ln -s "$d" "$destdir/$f"
+ else
+ $verbose "creating link (not yet existing) $f$compext -> $d$compext"
+ ln -s "$d$compext" "$destdir/$f$compext"
fi
fi
done

16
extrawhence Normal file
View File

@ -0,0 +1,16 @@
--------------------------------------------------------------------------
Driver: ast - A-Speed graphics driver
File: ast_dp501_fw.bin
Generated from header file of xf86-video-ast: MIT/X11 License
--------------------------------------------------------------------------
Driver: qla2xxx - QLogic firmware
File: ql2600_fw.bin
File: ql2700_fw.bin
File: ql8300_fw.bin

162
fwtopics.py Normal file
View File

@ -0,0 +1,162 @@
#!/usr/bin/python3
import sys, string, os, re, subprocess, tempfile, fnmatch
class FWTopics(object):
def __init__(self):
self.topics = {}
self.firmwares = {}
self.aliases = {}
self.modules = {}
self.modmap = {}
self.dirty = False
self.read_topics()
def kernel_binary_rpm(self, file):
file = os.path.basename(file)
if not fnmatch.fnmatch(file, 'kernel*.rpm'):
return False
blacklist = ( '*.noarch.rpm', '*.src.rpm', '*.nosrc.rpm',
'*-debuginfo*', '*-debugsource*',
'*-devel-*', '*-hmac-*',
'kernel-docs*', 'kernel-syms-*' )
for p in blacklist:
if fnmatch.fnmatch(file, p):
return False
return True
def modinfo(self, ko, attr):
return subprocess.check_output(['/usr/sbin/modinfo', '-F', attr, ko]).decode('utf-8').split('\n')
def canon_module(self, name):
return re.sub('-', '_', name)
def read_topics(self):
with open('topics.list', 'r') as f:
for t in f.read().split('\n'):
t.rstrip()
if t == '':
continue
if re.match('#', t):
continue
l = t.split()
first = re.sub(r':$', '', l.pop(0))
topic = l.pop(0)
self.topics[first] = topic
if l == []:
m = self.canon_module(first)
self.modules[first] = [ m ]
self.modmap[m] = topic
else:
self.modules[first] = []
for m in l:
m = self.canon_module(m)
self.modules[first].append(m)
self.modmap[m] = topic
# print(first, topic, self.modules[first])
def read_aliases(self):
with open('aliases.list', 'r') as f:
for t in f.read().split('\n'):
t.rstrip()
if t == '':
continue
l = t.split()
module = re.sub(r':$', '', l.pop(0))
if self.aliases.get(module) == None:
self.aliases[module] = []
self.aliases[module].append(l.pop(0))
def write_aliases(self):
if self.dirty:
print('updating aliases...')
with open('aliases.list', 'w') as f:
for t in sorted(self.aliases.keys()):
for m in sorted(self.aliases[t]):
f.write(t + ': ' + m + '\n')
self.dirty = False
def parse_whence(self, file):
with open(file, 'r') as f:
for t in f.read().split('\n'):
t.rstrip()
if t == '':
continue
if re.match('----', t):
first = None
elif re.match('Driver:', t):
t = re.sub(r'^Driver: *', '', t)
first = t.split()[0]
first = re.sub(r':.*$', '', first)
if self.topics.get(first) == None:
print('No matching topic entry for:', t)
first = None
elif re.match(r'File:', t):
if first == None:
continue
t = re.sub(r'^File: *', '', t)
t = re.sub('"', '', t)
self.firmwares[t] = first
elif re.match(r'Link:', t):
if first == None:
continue
t = re.sub(r'^Link: *', '', t)
t = re.sub(r' ->.*$', '', t)
t = re.sub('"', '', t)
self.firmwares[t] = first
def check_module(self):
def __check_module(ko, name):
for f in self.modinfo(ko, 'firmware'):
if f == '':
continue
first = self.firmwares.get(f)
if first != None:
if self.topics[first] == 'SKIP':
continue
if not name in self.modules[first]:
print('Module', name, 'is missing for', first)
print(' firmware:', f)
return __check_module
def update_alias(self):
def __update_alias(ko, name):
if self.modmap.get(name) != None and self.modmap[name] != 'SKIP':
for f in self.modinfo(ko, 'alias'):
if f == '':
continue
if re.match(r'^acpi', f):
f = re.sub(r'([^:]*):([^:]*)$', r'\1%3A\2', f)
if self.aliases.get(name) == None:
self.aliases[name] = []
if not f in self.aliases[name]:
self.aliases[name].append(f)
self.dirty = True
print('adding alias', name, f)
return __update_alias
def scan_firmware_dir(self, dir, proc):
for root, dirs, files in os.walk(dir):
for p in files:
ko = os.path.join(root, p)
name = re.sub(r'\.xz$', '', p)
name = re.sub(r'\.zst$', '', p)
if not fnmatch.fnmatch(name, '*.ko'):
continue
name = re.sub(r'\.ko$', '', name)
name = self.canon_module(name)
proc(ko, name)
def scan_firmware_rpm(self, rpm, proc):
if not self.kernel_binary_rpm(rpm):
return
with tempfile.TemporaryDirectory() as dir:
subprocess.call('rpm2cpio ' + rpm + ' | cpio -i --make-directories -D ' + dir,
shell=True)
self.scan_firmware_dir(dir, proc)
def scan_firmware(self, arg, proc):
if os.path.isdir(arg):
self.scan_firmware_dir(arg, proc)
else:
self.scan_firmware_rpm(arg, proc)

33
get_supplements.sh Normal file
View File

@ -0,0 +1,33 @@
#!/bin/sh
#
# Generate modalias Supplements lines for the given kernel-firmware topic
#
target=$1
modules=""
sorted_modules () {
for m in $*; do
m=$(echo $m | sed -e's/-/_/g')
echo $m
done | sort | uniq
}
while read first topic mods; do
if [ "$topic" = "$target" ]; then
first=${first%:}
if [ -z "$mods" ]; then
modules="$modules $first"
else
modules="$modules $mods"
fi
fi
done < topics.list
smodules=$(sorted_modules $modules)
for m in $smodules; do
grep '^'$m':' aliases.list | sed -e's/^.*: \(.*\)$/Supplements: modalias(\1)/g'
done | sort | uniq
exit 0

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f7ddabe9cc308de0f618ff208313e7180fdf7178d3ba70814664d6fc2f9c9324
size 1364312

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:696fff84535d276f1645a4510f06bbc1469a5d73b2ca9513b77d2602311a937e
size 1285192

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3522b528a52dafe68ffdcc9dc07593267a1a956d689c9e23d93110e3fc6599ce
size 1364328

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3cce1c557372d8177f6a3363604a59c205c52285448c2e624974d02eb0b75bdd
size 1285208

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:11fd8d891a6bea770dc9a2c1c7cc728745cfd470b8c0e5a57f0c5d50312a1743
size 1364308

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:995bf8c424472a86940014792b7c1c85b27f666742539ae36b3959bb53d445ce
size 1285188

47
iwlwifi-WHENCE-fix.patch Normal file
View File

@ -0,0 +1,47 @@
diff --git a/WHENCE b/WHENCE
index cf805e28f5a7..16a9f1d78d57 100644
--- a/WHENCE
+++ b/WHENCE
@@ -908,6 +908,42 @@ Version: 66.f1c864e0.0
File: iwlwifi-ty-a0-gf-a0-66.ucode
Version: 66.f1c864e0.0
+File: iwlwifi-cc-a0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-Qu-b0-hr-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-Qu-b0-jf-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-Qu-c0-hr-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-Qu-c0-jf-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-QuZ-a0-hr-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-QuZ-a0-jf-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-ty-a0-gf-a0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-so-a0-gf4-a0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-so-a0-gf-a0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-so-a0-hr-b0-71.ucode
+Version: 71.058653f6.0
+
+File: iwlwifi-so-a0-jf-b0-71.ucode
+Version: 71.058653f6.0
+
File: iwlwifi-cc-a0-72.ucode
Version: 72.daa05125.0

3
iwlwifi-cc-a0-71.ucode Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1561efa63710678be1392b0a572b9b5d021b529e71463346a7a05129294ddfa6
size 1322288

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a5d7cc6a6c7748e570e0094032045122d7a5a76f6fde2e7b2f1ad1048575896a
size 1550124

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b5b1f8c1d22ae4df4f44e5e81c5ed5a45591526c07f9e2a1b13ec7c8ee2d16dc
size 1566352

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c8f5feac1b1db256da2c6c0739ec6ea7bdbe8e78ed19944b4c9a39b7fc61a5aa
size 1456960

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:169de0f9f49d5dbcc59d7d1432890b7f153c3864d8d72ff5f47549f281b6b41e
size 1400056

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a4a0c77a84f9bb279c5b4e83a8949073f4a93f248fcfff90ff2147ac658eba95
size 1494024

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d430e0bc4cfaae2db9ed66f57649d95c7f9c25db80cb165483d4b328da8bf935
size 375793076

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:28eb97f27b100ed248fa54d674388b839b88f890914430dfe405afe0a08651a3
size 376682872

BIN
kernel-firmware-20240728.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4688866964ce2530791a6762d7c794c16e60d0c22a42718e7d7492a161d38f40
size 379367996

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df63983c076739922968d18f6b88b4d2b8f1efcfb05f0c6f515982c19ec61e0b
size 382533532

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8410868875206c48880a9ad3584a28fd53c587c4f229486159f0a22f1ec11371
size 383247464

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b7690f26dab802fc99dfd594e36d5e88b6c7b0a7650ffe60b53049faf0232cfc
size 386463016

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:461d743639b984ff850ebb1c96fd6cb799ce79e4bff8882e4f09451075822b59
size 386467428

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6769f451e59f303515b3dd4253992ffc070250ddfc3f3410ba0c25a9cd3db1f6
size 392748744

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce513fdd0e008be85deeb407e47a6eef1a8f8730f5a3ae6e3a4ce07308b0248d
size 405630404

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d184cdb670553bcc971fecd6b4954f15ca1d84f47f24bd94222c51b38bfb53c
size 406885384

View File

@ -0,0 +1 @@
addFilter("arch-independent-package-contains-binary-or-object")

4945
kernel-firmware.changes Normal file

File diff suppressed because it is too large Load Diff

7240
kernel-firmware.spec Normal file

File diff suppressed because it is too large Load Diff

206
kernel-firmware.spec.in Normal file
View File

@ -0,0 +1,206 @@
#
# spec file for package kernel-firmware
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if 0%{?suse_version} < 1550
%define _firmwaredir /lib/firmware
%endif
%define __ksyms_path ^%{_firmwaredir}
%define version_unconverted @@VERSION@@
# Force bzip2 instead of lzma compression (bsc#1176981)
%define _binary_payload w9.bzdio
Name: kernel-firmware
Version: @@VERSION@@
Release: 0
Summary: Linux kernel firmware files
License: GPL-2.0-only AND SUSE-Firmware AND GPL-2.0-or-later AND MIT
Group: System/Kernel
URL: https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
# Created via OSC service
Source0: kernel-firmware-%{version}.tar.xz
Source1: extrawhence
Source2: ast_dp501_fw.bin
Source8: ql2600_fw.bin
Source9: ql2700_fw.bin
Source10: ql8300_fw.bin
Source99: kernel-firmware-rpmlintrc
# for compatibility with SLE15-SP4 kernel (bsc#1209681)
Source200: iwlwifi-cc-a0-71.ucode
Source201: iwlwifi-Qu-b0-hr-b0-71.ucode
Source202: iwlwifi-Qu-b0-jf-b0-71.ucode
Source203: iwlwifi-Qu-c0-hr-b0-71.ucode
Source204: iwlwifi-Qu-c0-jf-b0-71.ucode
Source205: iwlwifi-QuZ-a0-hr-b0-71.ucode
Source206: iwlwifi-QuZ-a0-jf-b0-71.ucode
Source207: iwlwifi-so-a0-gf4-a0-71.ucode
Source208: iwlwifi-so-a0-gf-a0-71.ucode
Source209: iwlwifi-so-a0-hr-b0-71.ucode
Source210: iwlwifi-so-a0-jf-b0-71.ucode
Source211: iwlwifi-ty-a0-gf-a0-71.ucode
# install / build infrastructure
Source1001: make-files.sh
Source1002: list-license.sh
Source1003: get_supplements.sh
Source1004: topics.list
Source1005: licenses.list
Source1006: aliases.list
Source1007: topicdefs
Source1008: topicprovs
Source1009: kernel-firmware.spec.in
Source1010: makespec.sh
Source1011: fwtopics.py
Source1012: check-topic.py
Source1013: update-aliases.py
Source1014: README.build
# workarounds
Source1100: qcom-post
Source1101: uncompressed-post
# workarounds
Patch1: copy-file-ignore-README.patch
# for compatibility with SLE15-SP4 kernel (bsc#1209681)
Patch200: iwlwifi-WHENCE-fix.patch
BuildRequires: suse-module-tools
Requires(post): %{_bindir}/mkdir
Requires(post): %{_bindir}/touch
Requires(postun):%{_bindir}/mkdir
Requires(postun):%{_bindir}/touch
Provides: compat-wireless-firmware = 4.4
Obsoletes: compat-wireless-firmware < 4.4
BuildArch: noarch
@@ALLPROVS@@
%if 0%{?suse_version} >= 1550
# make sure we have post-usrmerge filesystem package on TW
Conflicts: filesystem < 84
%endif
%if "%{flavor}" == "uncompressed"
Provides: kernel-firmware-uncompressed = %{version}
%endif
%description
This package contains the raw uncompressed firmware files for Linux kernel
drivers. This package is provided only for compatibility with older kernels
that do not support the compressed format.
%package -n ucode-amd
Summary: Microcode updates for AMD CPUs
Group: System/Kernel
Requires(post): %{_bindir}/mkdir
Requires(post): %{_bindir}/touch
Requires(postun):%{_bindir}/mkdir
Requires(postun):%{_bindir}/touch
# new style (after 3.12 kernel somewhen)
Supplements: modalias(cpu:type%%3Ax86*ven0002*)
# old style (before 3.16 kernel)
Supplements: modalias(x86cpu:vendor%%3A0002%%3Afamily%%3A*%%3Amodel%%3A*%%3Afeature%%3A*)
%description -n ucode-amd
This package contains the microcode files used by AMD CPUs.
%package all
Summary: Compatibility metapackage for kernel firmware files
Group: System/Kernel
Requires(post): %{_bindir}/mkdir
Requires(post): %{_bindir}/touch
Requires(post): dracut >= 049
Requires(postun):%{_bindir}/mkdir
Requires(postun):%{_bindir}/touch
Conflicts: kernel < 5.3
Provides: kernel-firmware = %{version}
Obsoletes: kernel-firmware <= %{version}
Provides: compat-wireless-firmware = 4.4
Obsoletes: compat-wireless-firmware < 4.4
@@SUBPKGLIST@@
%if 0%{?suse_version} >= 1550
# make sure we have post-usrmerge filesystem package on TW
Conflicts: filesystem < 84
%endif
%description all
This package is a catch-all compatibility metapackage for providing
all files that have been provided by kernel-firmware package.
@@SUBPACKAGES@@
%prep
%setup -q -n kernel-firmware-%{version}
%patch -P 1 -p1
# additional firmwares
cat %{SOURCE1} >> WHENCE
cp %{SOURCE2} %{SOURCE8} %{SOURCE9} %{SOURCE10} .
%if 0%{?suse_version} < 1599
# revive old iwlwifi firmware for compatibility (bsc#1209681)
%patch -P 200 -p1
cp %{SOURCE200} .
cp %{SOURCE201} .
cp %{SOURCE202} .
cp %{SOURCE203} .
cp %{SOURCE204} .
cp %{SOURCE205} .
cp %{SOURCE206} .
cp %{SOURCE207} .
cp %{SOURCE208} .
cp %{SOURCE209} .
cp %{SOURCE210} .
cp %{SOURCE211} .
%endif
%build
# nothing to do
%install
mkdir -p %{buildroot}%{_firmwaredir}
%if "%{flavor}" == "uncompressed"
sh ./copy-firmware.sh %{buildroot}%{_firmwaredir}
%else
sh ./copy-firmware.sh -v --xz %{buildroot}%{_firmwaredir}
sh %{_sourcedir}/make-files.sh -v %{_sourcedir}/topics.list %{buildroot} %{_firmwaredir} < WHENCE
sh %{_sourcedir}/list-license.sh < %{_sourcedir}/licenses.list
%endif
%if "%{flavor}" == "uncompressed"
@@POST@@
%else
@@POST@@ all
@@POST@@ -n ucode-amd
@@SUBPKGPOSTS@@
%endif
%if "%{flavor}" == "uncompressed"
%files
%doc WHENCE README.md
%license GPL-2 GPL-3 LICEN[CS]E.*
%{_firmwaredir}
%exclude %{_firmwaredir}/amd-ucode
%exclude %{_firmwaredir}/amd-ucode/*
%else
%files all
%doc WHENCE README.md
%files -n ucode-amd
%doc amd-ucode/README
%license LICENSE.amd-ucode
%dir %{_firmwaredir}
%{_firmwaredir}/amd-ucode
@@SUBPKGFILES@@
%endif
%changelog

217
licenses.list Normal file
View File

@ -0,0 +1,217 @@
# FIRSTWORD: TOPIC LICENSES
BCM-0bb4-0306: brcm LICENCE.cypress
snd-korg1212: sound
snd-maestro3: sound
snd-ymfpci: sound
advansys: platform
qla1280: qlogic LICENCE.qla1280
kaweth: network LICENCE.kaweth
dvb-ttusb-budget: media
keyspan: serial GPL-2 GPL-3
keyspan_pda: serial GPL-2 GPL-3
emi26: sound
emi62: sound
ti_usb_3410_5052: serial
whiteheat: serial
cpia2: media
dabusb: media
vicam: media
io_edgeport: serial
io_ti: serial
dsp56k: platform GPL-2 GPL-3
snd-sb16-csp: sound
qla2xxx: qlogic LICENCE.qla2xxx
orinoco: network LICENCE.agere
ar9170: atheros LICENCE.atheros_firmware
ath9k_htc: atheros LICENCE.atheros_firmware LICENCE.open-ath9k-htc-firmware
cassini: platform
slicoss: network
sxg: network
cxgb3: chelsio
cxgb4: chelsio LICENCE.chelsio_firmware
e100: network LICENCE.e100
acenic: network
tg3: network
starfire: network
libertas: marvell LICENCE.Marvell LICENCE.OLPC
mwl8k: marvell LICENCE.Marvell
mwifiex: marvell LICENCE.Marvell
iwlwifi: iwlwifi LICENCE.iwlwifi_firmware
atomisp: intel LICENSE.ivsc
ipu3-imgu: intel LICENSE.ipu3_firmware
intel-ipu6-isys: intel LICENSE.ivsc
mei-vsc-hw: intel LICENSE.ivsc
cx231xx: media
ixp4xx-npe: platform LICENSE.ixp4xx
tehuti: network
typhoon: network
yam: platform
pcnet_cs: platform
3c589_cs: platform
3c574_cs: platform
serial_cs: platform GPL-3
smc91c92_cs: platform
cx23418: media
cx23885: media
cx23840: media
qlogicpti: qlogic
myri_sbus: network
bnx2x: bnx2
bnx2: bnx2
netxen_nic: network LICENCE.phanfw
dvb-ttpci: media GPL-2 GPL-3
snd-wavefront: sound
rt61pci: network LICENCE.ralink-firmware.txt
rt73usb: network LICENCE.ralink-firmware.txt
mt7601u: mediatek LICENCE.ralink_a_mediatek_company_firmware
rt2800pci: realtek LICENCE.ralink-firmware.txt
rt2860sta: realtek LICENCE.ralink-firmware.txt
rt2800usb: realtek LICENCE.ralink-firmware.txt
rt2870sta: realtek LICENCE.ralink-firmware.txt
usbdux/usbduxfast/usbduxsigma: platform GPL-2
xc4000: media LICENCE.xc4000
xc5000: media LICENCE.xc5000 LICENCE.xc5000c
dib0700: media LICENSE.dib0700
ath3k: atheros LICENCE.atheros_firmware
mga: platform
r128: platform
radeon: radeon LICENSE.radeon
en8811h: network LICENSE.airoha
amdgpu: amdgpu LICENSE.amdgpu
s2255drv: platform
rtl8192e: realtek
lgs8gxx: media
ib_qib: qlogic
qed: qlogic
ueagle-atm: ueagle LICENCE.ueagle-atm4-firmware
vxge: network
brcmsmac: brcm LICENCE.broadcom_bcm43xx
brcmfmac: brcm LICENCE.broadcom_bcm43xx LICENCE.cypress GPL-2
wl1251: ti LICENCE.wl1251
wl12xx: ti LICENCE.ti-connectivity
wl18xx: ti LICENCE.ti-connectivity
cc33xx: ti LICENCE.ti-connectivity
TI_ST: ti LICENCE.ti-connectivity
tlg2300: media
r8712u: realtek LICENCE.rtlwifi_firmware.txt
rtl8192ce: realtek LICENCE.rtlwifi_firmware.txt
rtl8192cu: realtek LICENCE.rtlwifi_firmware.txt
rtl8192se: realtek LICENCE.rtlwifi_firmware.txt
rtl8192de: realtek LICENCE.rtlwifi_firmware.txt
rtl8192du: realtek LICENCE.rtlwifi_firmware.txt
rtl8723e: realtek LICENCE.rtlwifi_firmware.txt
rtl8723be: realtek LICENCE.rtlwifi_firmware.txt
rtl8723de: realtek LICENCE.rtlwifi_firmware.txt
r8723au: realtek LICENCE.rtlwifi_firmware.txt
rtl8188ee: realtek LICENCE.rtlwifi_firmware.txt
rtl8188eu: realtek LICENCE.rtlwifi_firmware.txt
rtl8821ae: realtek LICENCE.rtlwifi_firmware.txt
rtl8822be: realtek LICENCE.rtlwifi_firmware.txt
rtw88: realtek LICENCE.rtlwifi_firmware.txt rtw88/README
rtl8192ee: realtek LICENCE.rtlwifi_firmware.txt
rtl8723bs: realtek LICENCE.rtlwifi_firmware.txt
rtl8xxxu: realtek LICENCE.rtlwifi_firmware.txt
r8169: realtek
rt1320: realtek
vt6656: network LICENCE.via_vt6656
DFU: atheros LICENCE.atheros_firmware LICENSE.QualcommAtheros_ar3k
Atheros: atheros LICENCE.atheros_firmware
ath6kl: atheros LICENCE.atheros_firmware
ath10k: ath10k ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt ath10k/QCA988X/hw2.0/notice_ath10k_firmware-5.txt ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt ath10k/QCA6174/hw3.0/notice_ath10k_firmware-sdio-6.txt ath10k/QCA9377/hw1.0/notice_ath10k_firmware-sdio-5.txt LICENSE.QualcommAtheros_ath10k
ath11k: ath11k ath11k/IPQ6018/hw1.0/Notice.txt LICENSE.QualcommAtheros_ath10k
ath12k: ath12k ath12k/WCN7850/hw2.0/Notice.txt LICENSE.QualcommAtheros_ath10k
myri10ge: network LICENCE.myri10ge_firmware
drxk: media
ene-ub6250: platform LICENCE.ene_firmware
isci: intel GPL-2
ar5523: atheros LICENCE.atheros_firmware
s5p-mfc: media
carl9170: atheros GPL-2
snd-hda-codec-ca0132: sound LICENCE.ca0132
btusb: bluetooth LICENCE.ibt_firmware LICENCE.rtlwifi_firmware.txt
btmtk_usb: mediatek LICENCE.ralink_a_mediatek_company_firmware
rp2: serial
go7007: platform LICENCE.go7007
ccp: platform LICENSE.amd-sev
microcode_amd: SKIP LICENSE.amd-ucode
mxu11x0: serial LICENCE.moxa
mxuport: serial LICENCE.moxa
cw1200: network LICENCE.cw1200
BFA/BNA: qlogic
qat: intel LICENCE.qat_firmware
rsi: platform
xhci-rcar: platform LICENCE.r8a779x_usb3
snd_soc_sst_acpi: sound LICENCE.IntcSST2
as102: media LICENCE.Abilis
it9135: media LICENCE.it913x
snd_soc_catpt: sound LICENCE.IntcSST2
snd_soc_avs: sound LICENCE.adsp_sst
snd_intel_sst_core: sound LICENCE.fw_sst_0f28
snd-soc-skl: sound LICENCE.adsp_sst
smsmdtv: media LICENCE.siano
xhci-tegra: nvidia LICENCE.nvidia
tegra-vic: nvidia LICENCE.nvidia
atusb: network GPL-2 GPL-3
qca: bluetooth LICENSE.QualcommAtheros_ath10k qca/NOTICE.txt
liquidio: liquidio LICENCE.cavium_liquidio
nitrox: platform LICENCE.cavium
i915: i915 LICENSE.i915
nouveau: nvidia LICENCE.nvidia
xe: i915 LICENSE.xe
wilc1000: network LICENSE.atmel
hfi1: intel LICENSE.hfi1_firmware
knav_qmss_queue: ti LICENCE.ti-keystone
mwlwifi: marvell LICENCE.Marvell
mtk-vpu: media LICENCE.mediatek
mtk_scp: mediatek LICENCE.mediatek
btmtk: mediatek LICENCE.mediatek
rk3399-dptx: platform LICENCE.rockchip
mt76x0: mediatek LICENCE.mediatek
mt76x2e: mediatek LICENCE.ralink_a_mediatek_company_firmware
mt76x2u: mediatek LICENCE.mediatek
mt7615e: mediatek LICENCE.mediatek
mt7920: mediatek LICENCE.mediatek
mt7921: mediatek LICENCE.mediatek
mt7922: mediatek LICENCE.mediatek
mt7925: mediatek LICENCE.mediatek
mt7988: mediatek LICENCE.mediatek
mt7996e: mediatek LICENCE.mediatek
mtk_wed: mediatek LICENCE.mediatek
nfp: nfp LICENCE.Netronome
wil6210: atheros LICENSE.QualcommAtheros_ath10k
venus: media LICENSE.qcom qcom/NOTICE.txt
iris: media LICENSE.qcom qcom/NOTICE.txt
imx-sdma: platform LICENSE.sdma_firmware
adreno: qcom LICENSE.qcom qcom/NOTICE.txt
qcom_q6v5_pas: qcom LICENSE.qcom qcom/NOTICE.txt
qcom_q6v5_mss: qcom LICENSE.qcom qcom/NOTICE.txt
mlxsw_spectrum: mellanox
cdns-mhdp: platform LICENCE.cadence
fsl-mc: dpaa2 LICENSE.nxp_mc_firmware
mscc-phy: platform LICENCE.microchip
meson-vdec: media LICENSE.amlogic_vdec
prestera: prestera LICENCE.Marvell
lt9611uxc: platform LICENSE.Lontium
wfx: platform wfx/LICENCE.wf200
wave5: platform LICENCE.cnm
rvu_cptpf: platform LICENCE.Marvell
amphion: platform LICENSE.amphion_vpu
cs35l41_hda: sound LICENSE.cirrus
cs35l56: sound LICENSE.cirrus
cs42l43: sound LICENSE.cirrus
mtk-sof: sound LICENCE.mediatek
nxp-sr1xx: platform LICENSE.nxp
btnxpuart: platform LICENSE.nxp
qcom-sc8280xp: sound LICENCE.linaro
amlogic: bluetooth LICENSE.amlogic
powervr: platform LICENSE.powervr
qcom-sm8550: sound LICENCE.linaro
qcom-sm8650: sound LICENCE.linaro
ti-tas2781: sound GPL-2 GPL-3
ti-tas2563: sound GPL-2 GPL-3
Mont-TSSE: platform LICENSE.montage
panthor: platform LICENCE.mali_csffw
isp: amdgpu LICENSE.amdisp
qaic: qcom LICENSE.qcom qcom/NOTICE.txt
ish: intel LICENCE.ish
qdu100: qcom LICENSE.qcom qcom/NOTICE.txt

22
list-license.sh Normal file
View File

@ -0,0 +1,22 @@
#!/bin/sh
#
# Generate license file lists for each kernel-firmware topic
#
# usage: list-license.sh < licenses.list
#
while read first topic licenses; do
case "$first" in
\#*) continue;;
esac
test -z "$licenses" && continue
for l in $licenses; do
echo $l >> files-$topic.license
done
done
for l in files-*.license; do
f=${l%.license}
sort $l | uniq | sed -e's/^\(.*\)$/%license \1/g' >> $f
rm -f $l
done

104
make-files.sh Normal file
View File

@ -0,0 +1,104 @@
#!/bin/sh
#
# Read WHENCE from stdin create files-xxx for each topic
#
# usage: make-files.sh [-v] topics.list DESTDIR < WHENCE
#
verbose=:
if [ x"$1" = x"-v" ]; then
verbose=echo
shift
fi
topics="$1"
DESTDIR="$2"
fwdir=${3:-/lib/firmware}
dest=$DESTDIR/$fwdir
do_compress=1
if [ -n "$do_compress" ]; then
cext=".xz"
else
cext=""
fi
make_dirs () {
local f="$1"
local d=$(dirname "$f")
if [ "$d" != "." ]; then
while true; do
if ! grep -q '%dir '"$fwdir/$d"'$' files-$topic; then
echo "%dir $fwdir/$d" >> files-$topic
fi
case "$d" in
*/*) d=${d%/*};;
*) break;;
esac
done
fi
}
add_file () {
local f="$1"
make_dirs "$f"
if [ -e "$dest/$f" ]; then
echo "\"$fwdir/$f\"" >> files-$topic
else
echo "\"$fwdir/$f$cext\"" >> files-$topic
fi
}
sub="xxx"
while read l; do
test -z "$l" && continue
case "$l" in
----*)
sub=""
topic=""
;;
Driver:*)
test -n "$sub" && continue
sub=$(echo "$l" | sed -e's/Driver: *//' -e's/[ :].*$//')
m=$(grep -m1 "^$sub": "$topics" | sed -e's/^.*:[[:space:]]*//')
test -z "$m" && continue
set -- $m
topic="$1"
if [ "$topic" = "SKIP" ]; then
continue
fi
$verbose "Switching to topic $topic"
if [ -n "$topic" ]; then
if [ ! -s files-$topic ]; then
echo "%dir $fwdir" > files-$topic
fi
fi
;;
File:*|RawFile:*)
test "$topic" = "SKIP" && continue
if [ -z "$topic" ]; then
echo "ERROR: no topic found for $l"
exit 1
fi
f=$(echo "$l" | sed -e's/^File: *//' -e's/^RawFile: *//' -e's/"//g' -e's/\\//g')
case "$f" in
*/README*)
continue;;
esac
add_file "$f"
;;
Link:*)
test "$topic" = "SKIP" && continue
if [ -z "$topic" ]; then
echo "ERROR: no topic found for $l"
exit 1
fi
f=$(echo "$l" | sed -e's/^Link: *//' -e's/ *->.*$//' -es'/\\//g')
add_file "$f"
;;
esac
done
exit 0

102
makespec.sh Normal file
View File

@ -0,0 +1,102 @@
#!/bin/sh
#
# makespec.sh VERSION < kernel-firmware.spec.in > kernel-firmware.spec
#
export LANG=C
version="$1"
topics=$(awk '{print $1}' topicdefs | sort)
define_subpackage () {
local topic="$1"
local desc=$(grep '^'"$topic"'[[:space:]]' topicdefs | sed -e's/^[a-zA-Z0-9-]*[[:space:]]*//')
echo "%package $topic"
echo "Summary: Kernel firmware files for $desc"
echo "Group: System/Kernel"
echo "Requires(post): /usr/bin/mkdir /usr/bin/touch"
echo "Requires(postun):/usr/bin/mkdir /usr/bin/touch"
echo "Requires(post): dracut >= 049"
echo "Conflicts: kernel < 5.3"
echo "Conflicts: kernel-firmware < %{version}"
echo "Conflicts: kernel-firmware-uncompressed"
echo "%if 0%{?suse_version} >= 1550"
echo "# make sure we have post-usrmerge filesystem package on TW"
echo "Conflicts: filesystem < 84"
echo "%endif"
grep "^${topic}:" topicprovs | sed -e's/^[^ \t]*:[[:space:]]*//g'
sh ./get_supplements.sh $topic
echo
echo "%description $topic"
echo "This package contains compressed kernel firmware files for"
echo "$desc."
echo
}
define_post () {
local l="$*"
if [ -z "$l" -a -f uncompressed-post ]; then
cat uncompressed-post
return 0
fi
if [ -n "$l" -a -f "$l"-post ]; then
cat "$l"-post
return 0
fi
test -n "$l" && l=" $l"
echo "%post$l"
echo "%{?regenerate_initrd_post}"
echo
echo "%postun$l"
echo "%{?regenerate_initrd_post}"
echo
echo "%posttrans$l"
echo "%{?regenerate_initrd_posttrans}"
}
sed -e"s/@@VERSION@@/$version/g" | while read line; do
if [ "$line" = "@@ALLPROVS@@" ]; then
sed -e's/^[^ \t]*:[[:space:]]*//g' topicprovs
continue
fi
if [ "$line" = "@@SUBPKGLIST@@" ]; then
for t in $topics; do
echo "Requires: %{name}-$t = %{version}"
done
continue
fi
if [ "$line" = "@@SUBPKGPROVS@@" ]; then
for t in $topics; do
echo "Provides: %{name}-$t = %{version}"
done
continue
fi
if [ "$line" = "@@SUBPACKAGES@@" ]; then
for t in $topics; do
define_subpackage $t
done
continue
fi
case "$line" in
@@POST@@*)
define_post $(echo "$line" | sed -e's/^@@POST@@ *//')
continue;;
esac
if [ "$line" = "@@SUBPKGPOSTS@@" ]; then
for t in $topics; do
echo
define_post $t
done
continue
fi
if [ "$line" = "@@SUBPKGFILES@@" ]; then
for t in $topics; do
echo "%files -f files-$t $t"
echo
done
continue
fi
echo "$line"
done
exit 0

27
qcom-post Normal file
View File

@ -0,0 +1,27 @@
%pre qcom
# ugly workaround for changing qcom/LENOVO/21BX to a symlink (bsc#1204103)
if [ ! -L %{_firmwaredir}/qcom/LENOVO/21BX ]; then
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX ]; then
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxold
fi
fi
%post qcom
# ugly workaround (bsc#1204103)
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX.xxxold ]; then
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxold %{_firmwaredir}/qcom/LENOVO/21BX
else
%{?regenerate_initrd_post}
fi
%postun qcom
%{?regenerate_initrd_post}
%posttrans qcom
# ugly workaround (bsc#1204103)
if [ -L %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew ]; then
rm -rf %{_firmwaredir}/qcom/LENOVO/21BX
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew %{_firmwaredir}/qcom/LENOVO/21BX
fi
%{?regenerate_initrd_posttrans}

3
ql2600_fw.bin Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9e39cc129af5281ccd533b927be0a6d40c726a7bc3fe6f18ba188893d6ef4ddc
size 340116

3
ql2700_fw.bin Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:668c1de6c8b57be2a8a7ce5496bee1ac006a7138ade0349509ba34f061c2af11
size 378480

3
ql8300_fw.bin Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a8653c29f2fa379074367cd266e7a4887040d537aeb87c69110e26f53511139d
size 288096

33
topicdefs Normal file
View File

@ -0,0 +1,33 @@
amdgpu AMDGPU graphics driver
atheros Atheros wireless drivers
ath10k Atheros QCA988x WiFi drivers
ath11k Atheros Qualcomm WiFi drivers
ath12k Atheros Qualcomm WiFi 7 chipset drivers
bluetooth various Bluetooth drivers
bnx2 Broadcom network drivers
brcm Broadcom wireless drivers
chelsio Chelsio network drivers
dpaa2 NXP Management Complex bus driver
i915 Intel i915 graphics driver
intel Intel-platform device drivers
iwlwifi Intel wireless drivers
liquidio Cavium LiquidIO driver
marvell Marvell network drivers
media various Video4Linux drivers
mediatek Mediatek network drivers
mellanox Mellanox Spectrum switch driver
mwifiex Marvell WiFi fullmac drivers
network various network drivers
nfp Netronome Flow Processor driver
nvidia Nvidia Tegra and graphics drivers
platform various platform drivers
prestera Marvell Prestera ASIC driver
qcom Qualcomm device drivers
qlogic QLogic network drivers
radeon Radeon graphics driver
realtek Realtek wireless drivers
serial various serial drivers
sound various sound drivers
ti Texas Instruments wireless drivers
ueagle Eagle IV USB ADSL modem driver
usb-network various USB WiFi / Ethernet drivers

29
topicprovs Normal file
View File

@ -0,0 +1,29 @@
atheros: Provides: ath3k-firmware = %{version}
atheros: Obsoletes: ath3k-firmware < %{version}
brcm: Provides: bcm43xx-firmware:/lib/firmware/brcm/brcmfmac43430-sdio.bin
chelsio: Provides: cxgb3-firmware = %{version}
chelsio: Obsoletes: cxgb3-firmware < %{version}
iwlwifi: Provides: iwl1000-ucode = %{version}
iwlwifi: Obsoletes: iwl1000-ucode < %{version}
iwlwifi: Provides: iwl3945-ucode = %{version}
iwlwifi: Obsoletes: iwl3945-ucode < %{version}
iwlwifi: Provides: iwl4965-ucode = %{version}
iwlwifi: Obsoletes: iwl4965-ucode < %{version}
iwlwifi: Provides: iwl5000-ucode = %{version}
iwlwifi: Obsoletes: iwl5000-ucode < %{version}
iwlwifi: Provides: iwl5150-ucode = %{version}
iwlwifi: Obsoletes: iwl5150-ucode < %{version}
iwlwifi: Provides: iwl100-ucode = %{version}
iwlwifi: Obsoletes: iwl100-ucode < %{version}
iwlwifi: Provides: iwl6000-ucode = %{version}
iwlwifi: Obsoletes: iwl6000-ucode < %{version}
iwlwifi: Provides: iwl6050-ucode = %{version}
iwlwifi: Obsoletes: iwl6050-ucode < %{version}
iwlwifi: Provides: iwl6000g2-ucode = %{version}
iwlwifi: Obsoletes: iwl6000g2-ucode < %{version}
mediatek: Provides: ralink-firmware = %{version}
mediatek: Obsoletes: ralink-firmware < %{version}
qlogic: Provides: qlogic-firmware = %{version}
qlogic: Obsoletes: qlogic-firmware < %{version}
sound: Provides: avs-topology-firmware = %{version}
sound: Obsoletes: avs-topology-firmware <= 2024.02

228
topics.list Normal file
View File

@ -0,0 +1,228 @@
# FIRSTWORD: TOPIC MODULES...
BCM-0bb4-0306: brcm btbcm
snd-korg1212: sound
snd-maestro3: sound
snd-ymfpci: sound
advansys: platform
qla1280: qlogic
kaweth: usb-network
dvb-ttusb-budget: media
keyspan: serial
keyspan_pda: serial
emi26: sound
emi62: sound
ti_usb_3410_5052: serial
whiteheat: serial
cpia2: media
dabusb: media
vicam: media gspca_vicam vicam
io_edgeport: serial
io_ti: serial
dsp56k: platform
snd-sb16-csp: sound
qla2xxx: qlogic
orinoco: network
ar9170: atheros
ath9k_htc: atheros
cassini: platform
slicoss: network
sxg: network
cxgb3: chelsio
cxgb4: chelsio cxgb4 csiostor
e100: network
acenic: network
tg3: network
starfire: network
libertas: marvell libertas_tf_usb libertas_sdio libertas_cs usb8xxx btmrvl_sdio
mwl8k: marvell
mwifiex: mwifiex mwifiex mwifiex_pcie mwifiex_usb mwifiex_sdio btmrvl_sdio
iwlwifi: iwlwifi iwlwifi iwl4965 iwl3945
atomisp: intel
ipu3-imgu: intel
intel-ipu6-isys: intel
mei-vsc-hw: intel
cx231xx: media cx25840
ixp4xx-npe: platform
tehuti: network
typhoon: network
yam: platform
pcnet_cs: platform pcnet_cs serial_cs
3c589_cs: platform serial_cs
3c574_cs: platform serial_cs
serial_cs: platform
smc91c92_cs: platform
cx23418: media cx18
cx23885: media cx25840
cx23840: media cx25840
qlogicpti: qlogic
myri_sbus: network
bnx2x: bnx2
bnx2: bnx2
netxen_nic: network netxen_nic qlcnic
dvb-ttpci: media
snd-wavefront: sound
rt61pci: network
rt73usb: usb-network
mt7601u: mediatek
rt2800pci: realtek
rt2860sta: realtek
rt2800usb: realtek
rt2870sta: realtek
usbdux/usbduxfast/usbduxsigma: platform usbdux usbduxfast usbduxsigma
xc4000: media
xc5000: media
dib0700: media dvb_usb_dib0700
ath3k: atheros
mga: platform
r128: platform
radeon: radeon radeon amdgpu
en8811h: network
amdgpu: amdgpu
amd_pmf: platform
s2255drv: platform
rtl8192e: realtek r8192e_pci
lgs8gxx: media
ib_qib: qlogic
qed: qlogic qede qedf qedi
ueagle-atm: ueagle
vxge: network
brcmsmac: brcm
brcmfmac: brcm
ti-vpe: media
wl1251: ti
wl12xx: ti wl12xx wl12xx_sdio wl12xx_spi
wl18xx: ti wl18xx wlcore
cc33xx: ti
TI_ST: ti
tlg2300: media poseidon
r8712u: realtek
rtl8192ce: realtek
rtl8192cu: realtek rtl8192cu rtl8xxxu
rtl8192se: realtek
rtl8192de: realtek
rtl8192du: realtek
rtl8723e: realtek
rtl8723be: realtek
rtl8723de: realtek
r8723au: realtek
rtl8188ee: realtek
rtl8188eu: realtek rtl8188eu r8188eu
rtl8821ae: realtek
rtl8822be: realtek rtl8822be r8822be
rtw88: realtek rtw88_pci
rtw89: realtek rtw89_pci
rtl8192ee: realtek
rtl8723bs: realtek
rtl8xxxu: realtek
r8169: realtek
r8152: realtek
rt1320: realtek snd-soc-rt1320-sdw
vt6656: usb-network vt6656_stage
DFU: atheros ar3k
Atheros: atheros ar3k
ath6kl: atheros ath6kl_sdio ath6kl_usb
ath10k: ath10k ath10k_pci ath10k_sdio ath10k_usb
ath11k: ath11k ath11k_pci
ath12k: ath12k ath12k_pci
myri10ge: network
drxk: media
ene-ub6250: platform ums_eneub6250
isci: intel
ar5523: atheros
s5p-mfc: media
carl9170: atheros
snd-hda-codec-ca0132: sound
btusb: bluetooth btusb btintel btrtl
btmtk_usb: mediatek
rp2: serial
go7007: platform go7007 saa7134-go7007 go7007-loader
ccp: platform
microcode_amd: ucode-amd
mxu11x0: serial ti_usb_3410_5052
mxuport: serial
cw1200: network
BFA/BNA: qlogic bfa bna
qat: intel qat_dh895xcc qat_c3xxx qat_c62x
rsi: usb-network rsi rsi_usb rsi_sdio
xhci-rcar: platform
snd_soc_sst_acpi: sound snd-soc-sst-acpi snd-intel-sst-acpi
as102: media
it9135: media dvb_usb_af9035
snd_soc_catpt: sound
snd_soc_avs: sound
snd_intel_sst_core: sound
snd-soc-skl: sound
smsmdtv: media
xhci-tegra: nvidia
tegra-vic: nvidia tegra_drm
atusb: usb-network
qca: bluetooth btqca
btqca: bluetooth
liquidio: liquidio
nitrox: platform n5pf
i915: i915
nouveau: nvidia nouveau
xe: i915
wilc1000: network
hfi1: intel
knav_qmss_queue: ti
mwlwifi: marvell
mtk-vpu: media
mtk_scp: mediatek
btmtk: mediatek btmtk btmtkuart btmtksdio
rk3399-dptx: platform
mt76x0: mediatek mt76x0u mt76x0e
mt76x2e: mediatek mt76x2e mt76x2u
mt76x2u: mediatek
mt7615e: mediatek
mt7622: mediatek mt7615e
mt7663: mediatek mt7615e
mt7915e: mediatek mt7915
mt7920: mediatek mt7921e
mt7921: mediatek mt7921e mt7921s mt7921u
mt7922: mediatek mt7921e mt7921s mt7921u
mt7925: mediatek mt7925e mt7925u
mt7988: mediatek
mt7996e: mediatek
mtk_wed: mediatek
nfp: nfp
wil6210: atheros
venus: media
iris: media
imx-sdma: platform
adreno: qcom msm
mlxsw_spectrum: mellanox
cdns-mhdp: platform
fsl-mc: dpaa2
mscc-phy: platform
meson-vdec: media
ice: network
inside-secure: platform crypto_safexcel
qcom_q6v5_pas: qcom
qcom_q6v5_mss: qcom
prestera: prestera
lt9611uxc: platform lontium-lt9611uxc
wfx: platform
wave5: platform
rvu_cptpf: platform
amphion: platform
cs35l41_hda: sound snd-hda-scodec-cs35l41-i2c snd-hda-scodec-cs35l41-spi
cs35l56: sound snd-hda-scodec-cs35l56-i2c snd-hda-scodec-cs35l56-spi
cs42l43: sound
mtk-sof: sound snd-sof-mt8186 snd-sof-mt8195
nxp-sr1xx: platform
btnxpuart: platform
qcom-sc8280xp: sound snd-soc-sc8280xp
amlogic: bluetooth
powervr: platform
qcom-sm8550: sound snd-soc-sc8280xp
qcom-sm8650: sound snd-soc-sc8280xp
ti-tas2781: sound snd-hda-scodec-tas2781-i2c
ti-tas2563: sound snd-hda-scodec-tas2781-i2c
Mont-TSSE: platform
panthor: platform
isp: amdgpu amdgpu
qaic: qcom
ish: intel intel-ish-ipc
qdu100: qcom
ast: platform

27
uncompressed-post Normal file
View File

@ -0,0 +1,27 @@
%pre
# ugly workaround for changing qcom/LENOVO/21BX to a symlink (bsc#1204103)
if [ ! -L %{_firmwaredir}/qcom/LENOVO/21BX ]; then
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX ]; then
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxold
fi
fi
%post
# ugly workaround (bsc#1204103)
if [ -d %{_firmwaredir}/qcom/LENOVO/21BX.xxxold ]; then
mv %{_firmwaredir}/qcom/LENOVO/21BX %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxold %{_firmwaredir}/qcom/LENOVO/21BX
else
%{?regenerate_initrd_post}
fi
%postun
%{?regenerate_initrd_post}
%posttrans
# ugly workaround (bsc#1204103)
if [ -L %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew ]; then
rm -rf %{_firmwaredir}/qcom/LENOVO/21BX
mv %{_firmwaredir}/qcom/LENOVO/21BX.xxxnew %{_firmwaredir}/qcom/LENOVO/21BX
fi
%{?regenerate_initrd_posttrans}

17
update-aliases.py Normal file
View File

@ -0,0 +1,17 @@
#!/usr/bin/python3
#
# A program to update aliases.list from the given kernel binary rpms
#
# usage: update-aliases.py KERNEL-RPMs...
#
from sys import argv
from fwtopics import FWTopics
if __name__ == '__main__':
fw = FWTopics()
fw.read_aliases()
argv.pop(0)
for arg in argv:
fw.scan_firmware(arg, fw.update_alias())
fw.write_aliases()