1#!/bin/sh 2 3set_pdb_cpld_leak_config() 4{ 5 if ! GPIOCHIP_NUM="$(basename "$(ls -d /sys/bus/i2c/devices/14-0014/gpiochip*)")"; then 6 echo "can not find gpiochip number" 7 return 1 8 fi 9 10 GPIOPIN_NUM_LEAK_0="8" 11 GPIOPIN_NUM_LEAK_1="9" 12 GPIOPIN_NUM_LEAK_2="10" 13 GPIOPIN_NUM_LEAK_3="11" 14 15 case "$1" in 16 0) 17 gpioset "${GPIOCHIP_NUM}" "${GPIOPIN_NUM_LEAK_0}"=1 "${GPIOPIN_NUM_LEAK_1}"=0 "${GPIOPIN_NUM_LEAK_2}"=0 "${GPIOPIN_NUM_LEAK_3}"=0 18 ;; 19 1) 20 gpioset "${GPIOCHIP_NUM}" "${GPIOPIN_NUM_LEAK_0}"=0 "${GPIOPIN_NUM_LEAK_1}"=1 "${GPIOPIN_NUM_LEAK_2}"=0 "${GPIOPIN_NUM_LEAK_3}"=0 21 ;; 22 2) 23 gpioset "${GPIOCHIP_NUM}" "${GPIOPIN_NUM_LEAK_0}"=0 "${GPIOPIN_NUM_LEAK_1}"=0 "${GPIOPIN_NUM_LEAK_2}"=1 "${GPIOPIN_NUM_LEAK_3}"=0 24 ;; 25 3) 26 gpioset "${GPIOCHIP_NUM}" "${GPIOPIN_NUM_LEAK_0}"=0 "${GPIOPIN_NUM_LEAK_1}"=0 "${GPIOPIN_NUM_LEAK_2}"=0 "${GPIOPIN_NUM_LEAK_3}"=1 27 ;; 28 default) 29 echo "invalid pdb leak config: ${LEAK_CONFIG}" 30 ;; 31 esac 32} 33 34# Create /dev/mem 35if [ ! -c /dev/mem ]; then 36 /bin/mknod /dev/mem c 1 1 37fi 38 39# Disable FMC_WDT2 40FMC_WDT2_CTRL_VAL=$(printf "%d\n" "$(/sbin/devmem 0x1e620064)") 41SET_VAL=$((FMC_WDT2_CTRL_VAL & 0xFFFFFFFE)) 42/sbin/devmem 0x1e620064 32 "$SET_VAL" 43 44# Detect boot flash source 45SLOT_FILE="/run/media/slot" 46mkdir -p "$(dirname "${SLOT_FILE}")" 47if [ "$((FMC_WDT2_CTRL_VAL & 0x00000010))" != "0" ]; then 48 echo "1" > "$SLOT_FILE" 49else 50 echo "0" > "$SLOT_FILE" 51fi 52 53# Set PDB CPLD leak event config 54PLAT_CONFIG_FILE="/mnt/data/catalina-platform-config.json" 55if PDB_CPLD_VER=$(/usr/sbin/i2ctransfer -y -f 14 w4@0x40 0xc0 0x00 0x00 0x00 r4); then 56 PDB_CPLD_VER="$(echo "$PDB_CPLD_VER" | awk '{printf "%02x%02x%02x%02x\n", $1, $2, $3, $4}')" 57 echo "PDB CPLD version: $PDB_CPLD_VER" 58 PDB_CPLD_VER_DEC=$(printf "%d" "0x$PDB_CPLD_VER") 59 60 if [ "$PDB_CPLD_VER_DEC" -lt 65536 ]; then 61 echo "PDB CPLD version not support leak event configuration..." 62 echo "Skip leak event configuration" 63 else 64 PDB_LEAK_CONFIG="$(jq '.PDB_LEAK_CONFIG' ${PLAT_CONFIG_FILE})" 65 case "${PDB_LEAK_CONFIG}" in 66 0|1|2|3) 67 echo "Get PDB leak config setting = ${PDB_LEAK_CONFIG}" 68 ;; 69 *) 70 PDB_LEAK_CONFIG=0 71 echo "No PDB leak config available, use default config ${PDB_LEAK_CONFIG}" 72 ;; 73 esac 74 set_pdb_cpld_leak_config "${PDB_LEAK_CONFIG}" 75 fi 76else 77 echo "Unable to get PDB CPLD version..." 78 echo "Skip leak event configuration" 79fi 80 81exit 0 82