- Update to version 20240809 (git commit 36db650dae03):

* qcom: update path for video firmware for vpu-1/2/3.0
  * QCA: Update Bluetooth WCN685x 2.1 firmware to 2.1.0-00642
  * rtw89: 8852c: add fw format-1 v0.27.97.0
  * rtw89: 8852bt: add firmware 0.29.91.0
  * amdgpu: Update ISP FW for isp v4.1.1
  * mediatek: Update mt8195 SOF firmware
  * amdgpu: DMCUB updates for DCN314
  * xe: First GuC release v70.29.2 for BMG
  * xe: Add GuC v70.29.2 for LNL
  * i915: Add GuC v70.29.2 for ADL-P, DG1, DG2, MTL, and TGL
  * i915: Update MTL DMC v2.22
  * i915: update MTL GSC to v102.0.10.1878
  * xe: Add BMG HuC 8.2.10
  * xe: Add GSC 104.0.0.1161 for LNL
  * xe: Add LNL HuC 9.4.13
  * i915: update DG2 HuC to v7.10.16
  * amdgpu: Update ISP FW for isp v4.1.1
  * QCA: Update Bluetooth QCA2066 firmware to 2.1.0-00641

  (bsc#1229069, CVE-2023-31315)

OBS-URL: https://build.opensuse.org/package/show/Kernel:HEAD/kernel-firmware?expand=0&rev=494
This commit is contained in:
Takashi Iwai 2024-08-13 07:39:44 +00:00 committed by Git OBS Bridge
commit 8e8eb79471
48 changed files with 19341 additions and 0 deletions

40
.gitattributes vendored Normal file
View File

@ -0,0 +1,40 @@
## 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
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">36db650dae038be945fb04def591fc726255b09f</param></service></servicedata>

5922
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

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 1ae1e37c37e5..68fbf83ea650 100755
--- a/copy-firmware.sh
+++ b/copy-firmware.sh
@@ -66,6 +66,9 @@ done
# 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
test -f "$f" || continue
install -d "$destdir/$(dirname "$f")"
$verbose "copying/compressing file $f$compext"

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 @@
addFilter("arch-independent-package-contains-binary-or-object")

4670
kernel-firmware.changes Normal file

File diff suppressed because it is too large Load Diff

7210
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 --ignore-duplicates %{buildroot}%{_firmwaredir}
%else
sh ./copy-firmware.sh -v --ignore-duplicates --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

212
licenses.list Normal file
View File

@ -0,0 +1,212 @@
# 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
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
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
mt7921: mediatek LICENCE.mediatek
mt7922: mediatek LICENCE.mediatek
mt7925: mediatek LICENCE.mediatek
mt7988: mediatek LICENCE.mediatek
mt7996e: 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

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

223
topics.list Normal file
View File

@ -0,0 +1,223 @@
# 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
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
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
mt7921: mediatek mt7921e mt7921s mt7921u
mt7922: mediatek mt7921e mt7921s mt7921u
mt7925: mediatek mt7925e mt7925u
mt7988: mediatek
mt7996e: 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
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()