1*6c5cc06eSPeter Yin#!/bin/bash 2*6c5cc06eSPeter Yin 3*6c5cc06eSPeter Yin# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging-util 4*6c5cc06eSPeter Yinsource /usr/libexec/phosphor-gpio-monitor/logging-util 5*6c5cc06eSPeter Yin 6*6c5cc06eSPeter YinHELP=" 7*6c5cc06eSPeter YinUsage: smc-event-logger <event> <id_gpio-name> 8*6c5cc06eSPeter Yin<event> is the power rail event to log, 9*6c5cc06eSPeter Yine.g. assert / deassert. 10*6c5cc06eSPeter Yin 11*6c5cc06eSPeter Yin<id_gpio-name> is defined in json file, 12*6c5cc06eSPeter Yine.g. 5_health-mmc 13*6c5cc06eSPeter Yin" 14*6c5cc06eSPeter Yin 15*6c5cc06eSPeter Yin# get assert or deassert message 16*6c5cc06eSPeter Yinif [ "$1" == "assert" ]; then 17*6c5cc06eSPeter Yin action="SMCFailed" 18*6c5cc06eSPeter Yinelif [ "$1" == "deassert" ]; then 19*6c5cc06eSPeter Yin action="SMCRestored" 20*6c5cc06eSPeter Yinfi 21*6c5cc06eSPeter Yin 22*6c5cc06eSPeter Yin# get gpio chip ID 23*6c5cc06eSPeter YinMESSAGE=$2 24*6c5cc06eSPeter Yinnumber="${MESSAGE%%_*}" 25*6c5cc06eSPeter Yin 26*6c5cc06eSPeter Yin# remove prefix from 0_xxxxxx to xxxxxx 27*6c5cc06eSPeter YinGPIO_NAME="${MESSAGE#*_}" 28*6c5cc06eSPeter Yin 29*6c5cc06eSPeter YinMSG_ID="xyz.openbmc_project.State.SMC.$action" 30*6c5cc06eSPeter YinDEVICE_PATH="/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0" 31*6c5cc06eSPeter YinSTASH_FILE="/run/$GPIO_NAME.log_entry" 32*6c5cc06eSPeter Yin 33*6c5cc06eSPeter Yinif gpio_logging_valid "$number" "$1" ; then 34*6c5cc06eSPeter Yin case $1 in 35*6c5cc06eSPeter Yin "-h") 36*6c5cc06eSPeter Yin echo "$HELP" 37*6c5cc06eSPeter Yin ;; 38*6c5cc06eSPeter Yin 39*6c5cc06eSPeter Yin "assert") 40*6c5cc06eSPeter Yin if [ ! -s "$STASH_FILE" ]; then 41*6c5cc06eSPeter Yin /usr/bin/log-create "$MSG_ID" --json \ 42*6c5cc06eSPeter Yin "{ \"IDENTIFIER\": \"${DEVICE_PATH}\", \"FAILURE_TYPE\": \"${GPIO_NAME}\"}" \ 43*6c5cc06eSPeter Yin > "${STASH_FILE}" 44*6c5cc06eSPeter Yin fi 45*6c5cc06eSPeter Yin ;; 46*6c5cc06eSPeter Yin 47*6c5cc06eSPeter Yin "deassert") 48*6c5cc06eSPeter Yin if [ -s "${STASH_FILE}" ]; then 49*6c5cc06eSPeter Yin log-resolve -p "$(< "${STASH_FILE}")" 50*6c5cc06eSPeter Yin rm "${STASH_FILE}" 51*6c5cc06eSPeter Yin fi 52*6c5cc06eSPeter Yin /usr/bin/log-create "$MSG_ID" --json \ 53*6c5cc06eSPeter Yin "{ \"IDENTIFIER\": \"${DEVICE_PATH}\"}" 54*6c5cc06eSPeter Yin ;; 55*6c5cc06eSPeter Yin esac 56*6c5cc06eSPeter Yinfi 57*6c5cc06eSPeter Yin 58*6c5cc06eSPeter Yinexit 0 59