meta-fii/meta-kudo: Add kudo-cmd a collection of kudo system utils
1. Add Kudo.sh, a script for display and controlling kudo system
2. Add kudo-ras.sh for debug Ampere system errors on kudo system
Signed-off-by: XP Chen <xiao-peng.chen@fii-na.com>
Change-Id: I5763e0de4be942b9b851b910448d15135ca9db16
Signed-off-by: Mohaimen Alsamarai <mohaimen.alsamarai@fii-na.com>
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
new file mode 100644
index 0000000..0c12fca
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
@@ -0,0 +1,276 @@
+#!/bin/bash
+# help information
+
+source /usr/sbin/kudo-lib.sh
+
+function usage_rst() {
+ echo " kudo rst [parameter]"
+ echo " hotswap --> reset the whole kudo node"
+ echo " system --> reset the host"
+ echo " btn --> trigger a power button event"
+ echo " shutdown --> send out shutdown signal to CPU"
+ echo " display --> "
+}
+
+function usage_led() {
+
+ echo " kudo led 'att'/'boot' [parameter]"
+ echo " on --> change to CPU console"
+ echo " off --> change to CPU 0 SCP console"
+ echo " status --> change to CPU 1 SCP console"
+}
+
+function usage_uart() {
+ echo " kudo uart [parameter]"
+ echo " host --> change to CPU console"
+ echo " scp1 --> change to CPU 0 SCP console"
+ echo " scp2 --> change to CPU 1 SCP console"
+ echo " hosthr --> change CPU console to header"
+ echo " scphr --> change SCP console to header"
+ echo " display --> "
+}
+
+function usage() {
+ echo " kudo BMC console system utilities"
+ echo " kudo [optional] [parameter]"
+ echo " rst --> reset traget device"
+ echo " fw --> get version"
+ echo " uart --> control the uart mux"
+ echo " led --> control the leds"
+}
+
+function reset() {
+ case $1 in
+ hotswap)
+ # Virtual reset #94
+ set_gpio_ctrl 94 out 1
+ ;;
+ system)
+ # S0 system reset #65
+ set_gpio_ctrl 65 out 0
+ sleep 1
+ set_gpio_ctrl 65 out 1
+ ;;
+ btn)
+ # power button #203
+ set_gpio_ctrl 203 out 1
+ sleep 1
+ set_gpio_ctrl 203 out 0
+ ;;
+ shutdown)
+ # BMC_CPU_SHD_REQ #70
+ set_gpio_ctrl 70 out 0
+ sleep 3
+ set_gpio_ctrl 70 out 1
+ ;;
+ forceOff)
+ # power button #203
+ set_gpio_ctrl 203 out 1
+ sleep 6
+ set_gpio_ctrl 203 out 0
+ ;;
+ display)
+ echo "Virtual reset #94" $(get set_gpio_ctrl 94)
+ echo "S0 System reset #65" $(get set_gpio_ctrl 65)
+ echo "Power Button #203" $(get set_gpio_ctrl 203)
+ echo "BMC_CPU SHD Req #70" $(get set_gpio_ctrl 70)
+ ;;
+ *)
+ usage_rst
+ ;;
+ esac
+}
+
+function fw_rev() {
+ BMC_CPLD_VER_FILE="/run/cpld0.version"
+ MB_CPLD_VER_FILE="/run/cpld1.version"
+
+ cmd=$(cat $BMC_CPLD_VER_FILE)
+ echo " BMC_CPLD: " $cmd
+ cmd=$(cat $MB_CPLD_VER_FILE)
+ echo " MB_CPLD: " $cmd
+
+ cmd=$(cat /etc/os-release | grep VERSION -w | cut -d '=' -f 2)
+ echo " BMC : " ${cmd}
+
+ #BMC PWR Sequencer
+ i2cset -y -f -a 14 0x59 0xfe 0x0000 w
+ cmd=$(i2cget -y -f -a 14 0x59 0xfe i 2 | awk '{print substr($0,3)}')
+ echo " BMC PowerSequencer : ${cmd}"
+ #only display with smbios exists
+ if [[ -e /var/lib/smbios/smbios2 ]]; then
+ cmd=$(busctl introspect xyz.openbmc_project.Smbios.MDR_V2 \
+ /xyz/openbmc_project/inventory/system/chassis/motherboard/bios | grep Version | awk '{print $4}')
+ echo " Bios: $cmd"
+ fi
+
+ cmd=$(i2cget -f -y 2 0x4f 0x1 w);
+ echo " SCP Firmware: ${cmd}"
+
+ adm1266_ver | grep REVISION
+
+}
+
+function uartmux() {
+ case $1 in
+ host)
+ set_gpio_ctrl 167 out 1
+ ;;
+ scp1)
+ set_gpio_ctrl 161 out 1
+ set_gpio_ctrl 177 out 1
+ set_gpio_ctrl 198 out 0
+ ;;
+ scp2)
+ set_gpio_ctrl 161 out 1
+ set_gpio_ctrl 177 out 1
+ set_gpio_ctrl 198 out 1
+ ;;
+ hosthr)
+ set_gpio_ctrl 167 out 0
+ ;;
+ scphr)
+ set_gpio_ctrl 161 out 0
+ set_gpio_ctrl 177 out 0
+ ;;
+ display)
+ if [ $(get_gpio_ctrl 167) -eq 1 ]; then
+ echo " CPU host to BMC console"
+ else
+ echo " CPU host to header"
+ fi
+ if [ $(get_gpio_ctrl 161) -eq 1 ] && [ $(get_gpio_ctrl 177) -eq 1 ]; then
+ if [ $(get_gpio_ctrl 198) -eq 1 ]; then
+ echo " SCP2 host to BMC console"
+ else
+ echo " SCP1 host to BMC console"
+ fi
+ elif [ $(get_gpio_ctrl 161) -eq 0 ] && [ $(get_gpio_ctrl 177) -eq 0 ]; then
+ if [ $(get_gpio_ctrl 198) -eq 1 ]; then
+ echo " SCP2 host to Header"
+ else
+ echo " SCP1 host to Header"
+ fi
+ else
+ echo "It's unknown status"
+ echo "167" $(get_gpio_ctrl 167)
+ echo "161" $(get_gpio_ctrl 161)
+ echo "177" $(get_gpio_ctrl 177)
+ echo "198" $(get_gpio_ctrl 198)
+ fi
+ ;;
+ *)
+ usage_uart
+ ;;
+ esac
+}
+
+function ledtoggle() {
+
+ CurrentLED=$( i2cget -y -f -a 34 0x76 0x05 i 1 | cut -d ' ' -f 2)
+ case $1 in
+ boot)
+ cmd=$((($CurrentLED & 0x40) != 0))
+ case $2 in
+ on)
+ #turn on LED
+ if [[ $cmd -eq 0 ]]; then
+ setValue=$(( 0x40 + $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ off)
+ #turn off led
+ if [[ $cmd -eq 1 ]]; then
+ setValue=$(( 0x80 & $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ toggle)
+ #turn on LED
+ setValue=$(( 0x40 ^ $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ ;;
+ status)
+ #displayLED status
+ if [[ $cmd -eq 1 ]]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+ ;;
+ att)
+ cmd=$((($CurrentLED & 0x80) != 0))
+ case $2 in
+ on)
+ #turn on LED
+ if [[ $cmd -eq 0 ]]; then
+ setValue=$(( 0x80 + $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ off)
+ #turn off led
+ if [[ $cmd -eq 1 ]]; then
+ setValue=$(( 0x40 & $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ toggle)
+ #turn on LED
+ setValue=$(( 0x80 ^ $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ ;;
+ status)
+ #displayLED status
+ if [[ $cmd -eq 1 ]]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+}
+
+function usblist() {
+ for i in {0..8}
+ do
+ cmd="devmem 0xf083"$i"154"
+ printf "udc%d : 0xF803%d154-" "$i" "$i"
+ $cmd
+ done
+}
+
+case $1 in
+ rst)
+ reset $2
+ ;;
+ fw)
+ fw_rev
+ ;;
+ uart)
+ uartmux $2
+ ;;
+ usb)
+ usblist
+ ;;
+ led)
+ ledtoggle $2 $3
+ ;;
+ *)
+ usage
+ ;;
+esac