Initial commit
This commit is contained in:
+94
@@ -0,0 +1,94 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Helper script to support enable/disable Scandump Mode
|
||||
# Author : Hieu Huynh (hieu.huynh@amperecomputing.com)
|
||||
#
|
||||
# To enable Scandump mode:
|
||||
# ampere_scandump_mode.sh enable
|
||||
#
|
||||
# To disable Scandump mode:
|
||||
# ampere_scandump_mode.sh disable
|
||||
#
|
||||
# To get Scandump mode status:
|
||||
# ampere_scandump_mode.sh getstatus
|
||||
|
||||
enable_scandump_mode() {
|
||||
echo "Enable Scandump mode"
|
||||
# Disable Mpro hang detection
|
||||
systemctl stop ampere-sysfw-hang-handler.service
|
||||
|
||||
# Disable PLDM service
|
||||
systemctl stop pldmd.service
|
||||
|
||||
# Enable scandump mode in CPLD
|
||||
# Get Port0 value
|
||||
p0_val=$(i2cget -f -y 15 0x22 0x02)
|
||||
p0_val=$(("$p0_val" | (1 << 4)))
|
||||
# Set Port0[4] value to "1" to mask all CPU’s GPIOs, set Port0[4].
|
||||
i2cset -f -y 15 0x22 0x02 $p0_val
|
||||
|
||||
p0_IOexp_val=$(i2cget -f -y 15 0x22 0x06)
|
||||
p0_IOexp_val=$(("$p0_IOexp_val" & ~(1 << 4)))
|
||||
# Config CPLD's IOepx Port0[4] from input to output, clear IOepx Port0[4].
|
||||
i2cset -f -y 15 0x22 0x06 $p0_IOexp_val
|
||||
}
|
||||
|
||||
diable_scandump_mode() {
|
||||
echo "Disable Scandump mode"
|
||||
|
||||
# Disable scandump mode in CPLD
|
||||
# Get Port0 value
|
||||
p0_val=$(i2cget -f -y 15 0x22 0x02)
|
||||
p0_val=$(("$p0_val" & ~(1 << 4)))
|
||||
# Set Port0[4] value to "0" to unmask all CPU’s GPIOs, clear Port0[4].
|
||||
i2cset -f -y 15 0x22 0x02 $p0_val
|
||||
|
||||
p0_IOexp_val=$(i2cget -f -y 15 0x22 0x06)
|
||||
p0_IOexp_val=$(("$p0_IOexp_val" | (1 << 4)))
|
||||
# Config CPLD's IOepx Port0[4] from output to input, set IOepx Port0[4].
|
||||
i2cset -f -y 15 0x22 0x06 $p0_IOexp_val
|
||||
|
||||
# Enable Mpro hang detection
|
||||
systemctl start ampere-sysfw-hang-handler.service
|
||||
|
||||
# Enable PLDM service
|
||||
systemctl start pldmd.service
|
||||
}
|
||||
|
||||
getstatus() {
|
||||
# Get CPLD's IOepx Port0[4], if this bit is "0" scandump mode is enabled.
|
||||
p0_IOexp_val=$(i2cget -f -y 15 0x22 0x06)
|
||||
p0_IOexp_val=$(("$p0_IOexp_val" & (1 << 4)))
|
||||
if [[ "$p0_IOexp_val" == "0" ]]; then
|
||||
echo "Scandump mode is enabled"
|
||||
exit 1
|
||||
else
|
||||
echo "Scandump mode is disabled"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Usage of this utility
|
||||
usage() {
|
||||
echo "Usage:"
|
||||
echo " - To enable Scandump mode"
|
||||
echo " $(basename "$0") enable"
|
||||
echo " - To disable Scandump mode"
|
||||
echo " $(basename "$0") disable"
|
||||
echo " - To get Scandump mode status"
|
||||
echo " $(basename "$0") getstatus"
|
||||
exit 0
|
||||
}
|
||||
|
||||
if [[ $1 == "enable" ]]; then
|
||||
enable_scandump_mode
|
||||
elif [[ $1 == "disable" ]]; then
|
||||
diable_scandump_mode
|
||||
elif [[ $1 == "getstatus" ]]; then
|
||||
getstatus
|
||||
else
|
||||
echo "Invalid mode"
|
||||
usage
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user