Files
2026-04-23 17:07:55 +08:00

95 lines
2.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 CPUs 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 CPUs 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