68 lines
1.1 KiB
Bash
Executable File
68 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
set -e
|
|
|
|
TESTNAME=set_pcie_speed
|
|
|
|
declare -a PCIELINKSPEED=(
|
|
"2.5 GT/s PCIe"
|
|
"5.0 GT/s PCIe"
|
|
"8.0 GT/s PCIe"
|
|
"16.0 GT/s PCIe"
|
|
"32.0 GT/s PCIe"
|
|
"64.0 GT/s PCIe"
|
|
)
|
|
|
|
# Kselftest framework requirement - SKIP code is 4.
|
|
ksft_skip=4
|
|
retval=0
|
|
|
|
coolingdev="$1"
|
|
statefile="$coolingdev/cur_state"
|
|
maxfile="$coolingdev/max_state"
|
|
linkspeedfile="$2"
|
|
|
|
oldstate=`cat $statefile`
|
|
maxstate=`cat $maxfile`
|
|
|
|
set_state()
|
|
{
|
|
local state=$1
|
|
local linkspeed
|
|
local expected_linkspeed
|
|
|
|
echo $state > $statefile
|
|
|
|
sleep 1
|
|
|
|
linkspeed="`cat $linkspeedfile`"
|
|
expected_linkspeed=$((maxstate-state))
|
|
expected_str="${PCIELINKSPEED[$expected_linkspeed]}"
|
|
if [ ! "${expected_str}" = "${linkspeed}" ]; then
|
|
echo "$TESTNAME failed: expected: ${expected_str}; got ${linkspeed}"
|
|
retval=1
|
|
fi
|
|
}
|
|
|
|
cleanup_skip ()
|
|
{
|
|
set_state $oldstate
|
|
exit $ksft_skip
|
|
}
|
|
|
|
trap cleanup_skip EXIT
|
|
|
|
echo "$TESTNAME: testing states $maxstate .. $oldstate with $coolingdev"
|
|
for i in $(seq $maxstate -1 $oldstate); do
|
|
set_state "$i"
|
|
done
|
|
|
|
trap EXIT
|
|
if [ $retval -eq 0 ]; then
|
|
echo "$TESTNAME [PASS]"
|
|
else
|
|
echo "$TESTNAME [FAIL]"
|
|
fi
|
|
exit $retval
|