aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/fwget
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2023-05-11 20:30:44 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2023-05-20 11:13:12 +0000
commit10aa369afd9946da18ae51b07aeadc3314fba56d (patch)
treeaa39ecb90099cf41373ed939e4efb9ca94e07f16 /usr.sbin/fwget
parentae1e336e05171b80123bf6db7457f19c174accc4 (diff)
downloadsrc-10aa369afd9946da18ae51b07aeadc3314fba56d.tar.gz
src-10aa369afd9946da18ae51b07aeadc3314fba56d.zip
fwget: simplify adding firmware images to pkg to install
Rather than using echo to return the firmware package name, call a new function (addpkg) which will also deal with (i) no leading space and (ii) remove duplicates (as some devices have dual-wifi-cards). In addition we won't have a line break when having multiple packages. While here also do not call pkg(8) anymore if there is no package to install and use the correct variable to install all and not just the last found package. Reviewed by: manu, bapt Differential Revision: https://reviews.freebsd.org/D40071
Diffstat (limited to 'usr.sbin/fwget')
-rw-r--r--usr.sbin/fwget/fwget.sh32
-rw-r--r--usr.sbin/fwget/pci/pci_video_amd72
-rw-r--r--usr.sbin/fwget/pci/pci_video_intel22
3 files changed, 74 insertions, 52 deletions
diff --git a/usr.sbin/fwget/fwget.sh b/usr.sbin/fwget/fwget.sh
index 63ed020a437c..5e50569c3991 100644
--- a/usr.sbin/fwget/fwget.sh
+++ b/usr.sbin/fwget/fwget.sh
@@ -4,6 +4,7 @@
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright 2023 Beckhoff Automation GmbH & Co. KG
+# Copyright 2023 Bjoern A. Zeeb
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted providing that the following conditions
@@ -62,6 +63,22 @@ log_verbose()
echo $@ 1>&3
}
+addpkg()
+{
+ local _p
+
+ _p=$1
+
+ case "${packages}" in
+ "") packages="${_p}" ;;
+ *) # Avoid duplicates.
+ case " ${packages} " in
+ *\ ${_p}\ *) ;; # duplicate
+ *) packages="${packages} ${_p}" ;;
+ esac
+ esac
+}
+
DRY_RUN=n
VERBOSE=n
@@ -97,14 +114,19 @@ done
packages=""
for subsystem in ${subsystems}; do
- package=$(${subsystem}_search_packages)
-
- packages="${packages} ${package}"
+ ${subsystem}_search_packages
done
-echo "Needed packages: ${packages}"
+case "${packages}" in
+""|^[[:space:]]*$)
+ echo "No firmware packages to install."
+ exit 0
+ ;;
+esac
+
+echo "Needed firmware packages: '${packages}'"
if [ "${DRY_RUN}" = "y" ]; then
exit 0
fi
-pkg install -q ${package}
+pkg install -q ${packages}
diff --git a/usr.sbin/fwget/pci/pci_video_amd b/usr.sbin/fwget/pci/pci_video_amd
index 4afb44ed787e..b44eac1adf7b 100644
--- a/usr.sbin/fwget/pci/pci_video_amd
+++ b/usr.sbin/fwget/pci/pci_video_amd
@@ -28,112 +28,112 @@ pci_video_amd()
{
case "$1" in
0x678*|0x679*)
- echo "gpu-firmware-amd-kmod-tahiti"
+ addpkg "gpu-firmware-amd-kmod-tahiti"
;;
0x680*|0x681*)
- echo "gpu-firmware-amd-kmod-pitcairn"
+ addpkg "gpu-firmware-amd-kmod-pitcairn"
;;
0x660*|0x661*|0x662*|0x663*)
- echo "gpu-firmware-amd-kmod-oland"
+ addpkg "gpu-firmware-amd-kmod-oland"
;;
0x682*|0x683*)
- echo "gpu-firmware-amd-kmod-verde gpu-firmware-amd-kmod-si58"
+ addpkg "gpu-firmware-amd-kmod-verde gpu-firmware-amd-kmod-si58"
;;
0x666*)
- echo "gpu-firmware-amd-kmod-hainan"
+ addpkg "gpu-firmware-amd-kmod-hainan"
;;
0x13*)
- echo "gpu-firmware-amd-kmod-kaveri"
+ addpkg "gpu-firmware-amd-kmod-kaveri"
;;
0x664*|0x664*)
- echo "gpu-firmware-amd-kmod-bonaire"
+ addpkg "gpu-firmware-amd-kmod-bonaire"
;;
0x67a*|0x67b*)
- echo "gpu-firmware-amd-kmod-hawaii"
+ addpkg "gpu-firmware-amd-kmod-hawaii"
;;
0x983*)
- echo "gpu-firmware-amd-kmod-kabini"
+ addpkg "gpu-firmware-amd-kmod-kabini"
;;
0x985*)
- echo "gpu-firmware-amd-kmod-mullins"
+ addpkg "gpu-firmware-amd-kmod-mullins"
;;
0x690*)
- echo "gpu-firmware-amd-kmod-topaz"
+ addpkg "gpu-firmware-amd-kmod-topaz"
;;
0x692*|0x693*)
- echo "gpu-firmware-amd-kmod-tonga"
+ addpkg "gpu-firmware-amd-kmod-tonga"
;;
0x730*)
- echo "gpu-firmware-amd-kmod-fiji"
+ addpkg "gpu-firmware-amd-kmod-fiji"
;;
0x987*)
- echo "gpu-firmware-amd-kmod-carrizo"
+ addpkg "gpu-firmware-amd-kmod-carrizo"
;;
0x98e4*)
- echo "gpu-firmware-amd-kmod-stoney"
+ addpkg "gpu-firmware-amd-kmod-stoney"
;;
0x67e*|0x67ff)
- echo "gpu-firmware-amd-kmod-polaris11"
+ addpkg "gpu-firmware-amd-kmod-polaris11"
;;
0x67c*|0x67d*|0x6fdf)
- echo "gpu-firmware-amd-kmod-polaris10"
+ addpkg "gpu-firmware-amd-kmod-polaris10"
;;
0x698*|0x699*)
- echo "gpu-firmware-amd-kmod-polaris12"
+ addpkg "gpu-firmware-amd-kmod-polaris12"
;;
0x694*)
- echo "gpu-firmware-amd-kmod-vegam"
+ addpkg "gpu-firmware-amd-kmod-vegam"
;;
0x686*|0x687*)
- echo "gpu-firmware-amd-kmod-vega10"
+ addpkg "gpu-firmware-amd-kmod-vega10"
;;
0x69a*)
- echo "gpu-firmware-amd-kmod-vega12"
+ addpkg "gpu-firmware-amd-kmod-vega12"
;;
0x66a*)
- echo "gpu-firmware-amd-kmod-vega20"
+ addpkg "gpu-firmware-amd-kmod-vega20"
;;
0x15d*)
- echo "gpu-firmware-amd-kmod-raven"
+ addpkg "gpu-firmware-amd-kmod-raven"
;;
0x738*|0x739*)
- echo "gpu-firmware-amd-kmod-arcturus"
+ addpkg "gpu-firmware-amd-kmod-arcturus"
;;
0x731*)
- echo "gpu-firmware-amd-kmod-navi10"
+ addpkg "gpu-firmware-amd-kmod-navi10"
;;
0x734*)
- echo "gpu-firmware-amd-kmod-navi14"
+ addpkg "gpu-firmware-amd-kmod-navi14"
;;
0x15e7|0x1636|0x1638|0x164c)
- echo "gpu-firmware-amd-kmod-renoir"
+ addpkg "gpu-firmware-amd-kmod-renoir"
;;
0x736*)
- echo "gpu-firmware-amd-kmod-navi12"
+ addpkg "gpu-firmware-amd-kmod-navi12"
;;
0x73a*|0x73b*)
- echo "gpu-firmware-amd-kmod-sienna-cichlid"
+ addpkg "gpu-firmware-amd-kmod-sienna-cichlid"
;;
0x163f)
- echo "gpu-firmware-amd-kmod-vangogh"
+ addpkg "gpu-firmware-amd-kmod-vangogh"
;;
0x164d|0x1681)
- echo "gpu-firmware-amd-kmod-yellow-carp"
+ addpkg "gpu-firmware-amd-kmod-yellow-carp"
;;
0x73c*|0x73d*)
- echo "gpu-firmware-amd-kmod-navy-flounder"
+ addpkg "gpu-firmware-amd-kmod-navy-flounder"
;;
0x73e*|0x73f*)
- echo "gpu-firmware-amd-kmod-dimgrey-cavefish"
+ addpkg "gpu-firmware-amd-kmod-dimgrey-cavefish"
;;
0x740*|0x741*)
- echo "gpu-firmware-amd-kmod-aldebaran"
+ addpkg "gpu-firmware-amd-kmod-aldebaran"
;;
0x13fe)
- echo "gpu-firmware-amd-kmod-cyan-skillfish2"
+ addpkg "gpu-firmware-amd-kmod-cyan-skillfish2"
;;
0x742*|0x743*)
- echo "gpu-firmware-amd-kmod-beige-goby"
+ addpkg "gpu-firmware-amd-kmod-beige-goby"
;;
esac
}
diff --git a/usr.sbin/fwget/pci/pci_video_intel b/usr.sbin/fwget/pci/pci_video_intel
index 8dc8b9aee2bd..3824c4a49ffb 100644
--- a/usr.sbin/fwget/pci/pci_video_intel
+++ b/usr.sbin/fwget/pci/pci_video_intel
@@ -29,47 +29,47 @@ pci_video_intel()
case "$1" in
# Skylake
0x19*)
- echo "gpu-firmware-intel-kmod-skylake"
+ addpkg "gpu-firmware-intel-kmod-skylake"
;;
# Broxton
0x0a*|0x1a*|0x5a84|0x5a85)
- echo "gpu-firmware-intel-kmod-broxton"
+ addpkg "gpu-firmware-intel-kmod-broxton"
;;
# Geminilake
0x318*)
- echo "gpu-firmware-intel-kmod-geminilake"
+ addpkg "gpu-firmware-intel-kmod-geminilake"
;;
# Kabylake, Coffeelake and Cometlake
0x59*|0x87*|0x9b*|0x3e*)
- echo "gpu-firmware-intel-kmod-kabylake"
+ addpkg "gpu-firmware-intel-kmod-kabylake"
;;
# Cannonlake
0x5a*)
- echo "gpu-firmware-intel-kmod-cannonlake"
+ addpkg "gpu-firmware-intel-kmod-cannonlake"
;;
# Icelake
0x8a*)
- echo "gpu-firmware-intel-kmod-icelake"
+ addpkg "gpu-firmware-intel-kmod-icelake"
;;
# Elkhartlake/Jasperlake
0x45*|0x4e*)
- echo "gpu-firmware-intel-kmod-elkhartlake"
+ addpkg "gpu-firmware-intel-kmod-elkhartlake"
;;
# Tigerlake
0x9a*)
- echo "gpu-firmware-intel-kmod-tigerlake"
+ addpkg "gpu-firmware-intel-kmod-tigerlake"
;;
# Rocketlake (Uses tigerlake GuC/HuC firmware)
0x4c*)
- echo "gpu-firmware-intel-kmod-rocketlake gpu-firmware-intel-kmod-tigerlake"
+ addpkg "gpu-firmware-intel-kmod-rocketlake gpu-firmware-intel-kmod-tigerlake"
;;
# DG1
0x49*)
- echo "gpu-firmware-intel-kmod-dg1"
+ addpkg "gpu-firmware-intel-kmod-dg1"
;;
# Alderlake (Uses tigerlake GuC/HuC firmware)
0x46*)
- echo "gpu-firmware-intel-kmod-alderlake gpu-firmware-intel-kmod-tigerlake"
+ addpkg "gpu-firmware-intel-kmod-alderlake gpu-firmware-intel-kmod-tigerlake"
;;
*)
log "No package found for device $1"