X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Ffirmware%2Ffirmware.sh;h=9d4659a34d789b621c89d7b7b6e74969df76652e;hp=89b985ef3b59042b0e839b933f6edffd855fd158;hb=1230d021bd75de9b1503bbaa807d6a59789963db;hpb=f566b05b572492e4e7a684a5b04231412d71d0bd;ds=sidebyside diff --git a/extras/firmware/firmware.sh b/extras/firmware/firmware.sh index 89b985ef3..9d4659a34 100755 --- a/extras/firmware/firmware.sh +++ b/extras/firmware/firmware.sh @@ -1,27 +1,29 @@ #!/bin/sh -e -FIRMWARE_DIRS="/lib/firmware /usr/local/lib/firmware" +FIRMWARE_DIRS="/lib/firmware/updates/$(uname -r) /lib/firmware/updates \ + /lib/firmware/$(uname -r) /lib/firmware" err() { - echo "$@" >&2 - if [ -x /bin/logger ]; then - /bin/logger -t "${0##*/}[$$]" "$@" - fi + echo "$@" >&2 + logger -t "${0##*/}[$$]" "$@" 2>/dev/null || true } if [ ! -e /sys$DEVPATH/loading ]; then - err "udev firmware loader misses sysfs directory" - exit 1 + err "udev firmware loader misses sysfs directory" + exit 1 fi for DIR in $FIRMWARE_DIRS; do - [ -e "$DIR/$FIRMWARE" ] || continue - echo 1 > /sys$DEVPATH/loading - cat "$DIR/$FIRMWARE" > /sys$DEVPATH/data - echo 0 > /sys$DEVPATH/loading - exit 0 + [ -e "$DIR/$FIRMWARE" ] || continue + echo 1 > /sys$DEVPATH/loading + cat "$DIR/$FIRMWARE" > /sys$DEVPATH/data + echo 0 > /sys$DEVPATH/loading + exit 0 done echo -1 > /sys$DEVPATH/loading err "Cannot find firmware file '$FIRMWARE'" +mkdir -p /dev/.udev/firmware-missing +file=$(echo "$FIRMWARE" | sed 's:/:\\x2f:g') +ln -s -f "$DEVPATH" /dev/.udev/firmware-missing/$file exit 1