#!/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