b23078b52b
Why I did it [E1031] fix pca9548 initializes failed occasionally in stress test. When failure happened, ismt i2c bus hang up and need power cycle to recover it. How I did it Add 0.5s delay between setuping and configuring pca9548 i2c mux. How to verify it Reboot stress test at least 100 times without failure.
118 lines
3.3 KiB
Bash
118 lines
3.3 KiB
Bash
#!/bin/bash
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: setup-board
|
|
# Required-Start: $portmap
|
|
# Required-Stop:
|
|
# Should-Start:
|
|
# Should-Stop:
|
|
# Default-Start: S
|
|
# Default-Stop: 0 6
|
|
# Short-Description: Setup Haliburton board.
|
|
### END INIT INFO
|
|
|
|
setup_swap () {
|
|
SWAPFILE=/host/myswapfile
|
|
|
|
if [ ! -f $SWAPFILE ]; then
|
|
availspace=`df -h --output=avail /host | sed '1d;s/\s//g;s/[^0-9].*//g'`
|
|
diff=$(( availspace - 2*$1 ))
|
|
if [ $diff -gt 0 ]; then
|
|
fallocate -l ${1}G $SWAPFILE
|
|
chmod 600 $SWAPFILE
|
|
echo "swap file created successfully"
|
|
else
|
|
echo "not enough disk space to turn on swap."
|
|
return
|
|
fi
|
|
fi
|
|
mkswap $SWAPFILE
|
|
swapon $SWAPFILE
|
|
echo "swap on successfully"
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
echo -n "Setting up board... "
|
|
|
|
modprobe smc
|
|
modprobe hlx_gpio_ich
|
|
modprobe dps200
|
|
modprobe cp210x
|
|
|
|
found=0
|
|
for devnum in 0 1; do
|
|
devname=`cat /sys/bus/i2c/devices/i2c-${devnum}/name`
|
|
# iSMT adapter can be at either dffd0000 or dfff0000
|
|
if [[ $devname == 'SMBus iSMT adapter at '* ]]; then
|
|
found=1
|
|
break
|
|
fi
|
|
done
|
|
|
|
[ $found -eq 0 ] && echo "cannot find iSMT" && exit 1
|
|
|
|
i2cset -y ${devnum} 0x73 0x10 0x00 0x01 i
|
|
sleep 0.5
|
|
|
|
# Attach PCA9548 0x73 Channel Extender for CPU Board
|
|
echo pca9548 0x73 > /sys/bus/i2c/devices/i2c-${devnum}/new_device
|
|
sleep 1
|
|
|
|
# Attach PCA9541 Ox71 Master Selector
|
|
chmod 755 /sys/bus/i2c/devices/i2c-${devnum}/new_device
|
|
echo pca9548 0x71 > /sys/bus/i2c/devices/i2c-8/new_device
|
|
sleep 1
|
|
|
|
# Attach PCA9548 0x72 Channel Extender for Main Board
|
|
echo pca9548 0x72 > /sys/bus/i2c/devices/i2c-8/new_device
|
|
sleep 1
|
|
|
|
# Attach syseeprom
|
|
echo 24lc64t 0x50 > /sys/bus/i2c/devices/i2c-2/new_device
|
|
|
|
echo max6699 0x1a > /sys/bus/i2c/devices/i2c-3/new_device
|
|
echo max6699 0x1a > /sys/bus/i2c/devices/i2c-11/new_device
|
|
|
|
# Attach PSUs
|
|
echo dps200 0x5a > /sys/bus/i2c/devices/i2c-12/new_device
|
|
echo 24c02 0x52 > /sys/bus/i2c/devices/i2c-12/new_device
|
|
echo dps200 0x5b > /sys/bus/i2c/devices/i2c-13/new_device
|
|
echo 24c02 0x53 > /sys/bus/i2c/devices/i2c-13/new_device
|
|
|
|
# Attach fans
|
|
echo emc2305 0x4d > /sys/bus/i2c/devices/i2c-23/new_device
|
|
|
|
# Attach 4 SFP+ Uplink
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-14/new_device
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-15/new_device
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-16/new_device
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-17/new_device
|
|
|
|
# Enable SFP module presence interrupt
|
|
echo "both" > /sys/devices/platform/e1031.smc/SFP/modabs_trig
|
|
echo 0 > /sys/devices/platform/e1031.smc/SFP/modabs_mask
|
|
|
|
/bin/sh /usr/local/bin/platform_api_mgnt.sh init
|
|
|
|
setup_swap 2
|
|
|
|
echo "done."
|
|
;;
|
|
|
|
stop)
|
|
echo "done."
|
|
;;
|
|
|
|
force-reload|restart)
|
|
echo "Not supported"
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: /etc/init.d/platform-modules-haliburton.init {start|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|