2018-03-10 22:14:42 +08:00
|
|
|
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
|
|
|
# Library of helpers for test scripts.
|
|
|
|
set -e
|
|
|
|
|
|
|
|
DIR=/sys/devices/virtual/misc/test_firmware
|
|
|
|
|
|
|
|
PROC_CONFIG="/proc/config.gz"
|
|
|
|
TEST_DIR=$(dirname $0)
|
|
|
|
|
|
|
|
print_reqs_exit()
|
|
|
|
{
|
|
|
|
echo "You must have the following enabled in your kernel:" >&2
|
|
|
|
cat $TEST_DIR/config >&2
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
test_modprobe()
|
|
|
|
{
|
|
|
|
if [ ! -d $DIR ]; then
|
|
|
|
print_reqs_exit
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
check_mods()
|
|
|
|
{
|
|
|
|
trap "test_modprobe" EXIT
|
|
|
|
if [ ! -d $DIR ]; then
|
|
|
|
modprobe test_firmware
|
|
|
|
fi
|
|
|
|
if [ ! -f $PROC_CONFIG ]; then
|
|
|
|
if modprobe configs 2>/dev/null; then
|
|
|
|
echo "Loaded configs module"
|
|
|
|
if [ ! -f $PROC_CONFIG ]; then
|
|
|
|
echo "You must have the following enabled in your kernel:" >&2
|
|
|
|
cat $TEST_DIR/config >&2
|
|
|
|
echo "Resorting to old heuristics" >&2
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Failed to load configs module, using old heuristics" >&2
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
2018-03-10 22:14:43 +08:00
|
|
|
|
|
|
|
kconfig_has()
|
|
|
|
{
|
|
|
|
if [ -f $PROC_CONFIG ]; then
|
|
|
|
if zgrep -q $1 $PROC_CONFIG 2>/dev/null; then
|
|
|
|
echo "yes"
|
|
|
|
else
|
|
|
|
echo "no"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
# We currently don't have easy heuristics to infer this
|
|
|
|
# so best we can do is just try to use the kernel assuming
|
|
|
|
# you had enabled it. This matches the old behaviour.
|
|
|
|
if [ "$1" = "CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y" ]; then
|
|
|
|
echo "yes"
|
|
|
|
elif [ "$1" = "CONFIG_FW_LOADER_USER_HELPER=y" ]; then
|
|
|
|
if [ -d /sys/class/firmware/ ]; then
|
|
|
|
echo yes
|
|
|
|
else
|
|
|
|
echo no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|