diff --git a/usr.sbin/fwget/fwget.sh b/usr.sbin/fwget/fwget.sh --- 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 @@ 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 @@ 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 --- a/usr.sbin/fwget/pci/pci_video_amd +++ b/usr.sbin/fwget/pci/pci_video_amd @@ -28,112 +28,112 @@ { 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 --- a/usr.sbin/fwget/pci/pci_video_intel +++ b/usr.sbin/fwget/pci/pci_video_intel @@ -29,47 +29,47 @@ 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"