From 10aa369afd9946da18ae51b07aeadc3314fba56d Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Thu, 11 May 2023 20:30:44 +0000 Subject: [PATCH] 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 --- usr.sbin/fwget/fwget.sh | 32 ++++++++++--- usr.sbin/fwget/pci/pci_video_amd | 72 +++++++++++++++--------------- usr.sbin/fwget/pci/pci_video_intel | 22 ++++----- 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"