7f10b6bc35
Why I did it Support Intel Tofino based platforms Netberg Aurora 610 ASIC: Intel Tofino BFN-T10-032D-020 Pors: 48x 25G + 8x 100G How I did it Added specification to device/netberg directory Added platform/barefoot/sonic-platform-modules-netberg contains kernel modules, scripts and sonic_platform packages. Modified the platform/barefoot/one-image.mk and platform/barefoot/rule.mk to include Aurora 610 related ID and files. How to verify it Build SONiC Install the image on the device and verify the related components are installed and shown correctly.
213 lines
4.9 KiB
Bash
213 lines
4.9 KiB
Bash
#!/bin/bash
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: setup-board
|
|
# Required-Start:
|
|
# Required-Stop:
|
|
# Should-Start:
|
|
# Should-Stop:
|
|
# Default-Start: S
|
|
# Default-Stop: 0 6
|
|
# Short-Description: Setup Netberg Aurora 610 board.
|
|
### END INIT INFO
|
|
|
|
case "$1" in
|
|
start)
|
|
echo "Setting up board... " >> /dev/kmsg
|
|
INIT_ERROR="FALSE"
|
|
|
|
depmod -a
|
|
|
|
# Insert modules by order
|
|
rmmod lpc_ich
|
|
rmmod gpio_ich
|
|
|
|
modprobe gpio_ich gpiobase=0
|
|
modprobe lpc_ich
|
|
modprobe i2c-gpio
|
|
modprobe i2c-mux-pca954x
|
|
modprobe i2c-dev
|
|
modprobe net_platform
|
|
modprobe net_psoc
|
|
modprobe net_cpld
|
|
modprobe optoe
|
|
|
|
# wait net_platform init complete
|
|
# wait hwmon0 (coretemp) load complete to make sure psoc and cpld
|
|
PLATFORM_WAITING_COUNT=0
|
|
while [ $PLATFORM_WAITING_COUNT -le 10 ]
|
|
do
|
|
if [ -d /sys/bus/i2c/devices/i2c-0/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-2/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-3/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-4/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-5/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-6/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-7/ ] &&
|
|
[ -d /sys/bus/i2c/devices/i2c-8/ ] &&
|
|
[ -d /sys/class/hwmon/hwmon0/ ]
|
|
then
|
|
break
|
|
else
|
|
#200ms for each step
|
|
sleep 0.2
|
|
let "PLATFORM_WAITING_COUNT++"
|
|
fi
|
|
done
|
|
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-0/" ]
|
|
then
|
|
echo net_cpld 0x77 > /sys/bus/i2c/devices/i2c-0/new_device
|
|
else
|
|
echo "i2c-0 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
# IPMI support
|
|
modprobe ipmi_devintf
|
|
|
|
# Attach 48 instances of EEPROM driver SFP ports on IO module
|
|
#eeprom can dump data using below command
|
|
if [ -d "/sys/bus/i2c/devices/i2c-2/" ]
|
|
then
|
|
for ((i=10;i<=17;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-2/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-2 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-3/" ]
|
|
then
|
|
for ((i=18;i<=25;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-3/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-3 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-4/" ]
|
|
then
|
|
for ((i=26;i<=33;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-4/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-4 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-5/" ]
|
|
then
|
|
for ((i=34;i<=41;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-5/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-5 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-6/" ]
|
|
then
|
|
for ((i=42;i<=49;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-6/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-6 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
if [ -d "/sys/bus/i2c/devices/i2c-7/" ]
|
|
then
|
|
for ((i=50;i<=57;i++));
|
|
do
|
|
echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-7/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-7 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
|
|
# Attach 6 instances of EEPROM driver QSFP ports on IO module
|
|
#eeprom can dump data using below command
|
|
if [ -d "/sys/bus/i2c/devices/i2c-8/" ]
|
|
then
|
|
for ((i=58;i<=65;i++));
|
|
do
|
|
echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-8/i2c-$i/new_device
|
|
done
|
|
else
|
|
echo "i2c-8 error" >> /dev/kmsg
|
|
INIT_ERROR="TRUE"
|
|
fi
|
|
|
|
if [ $INIT_ERROR != "TRUE" ]
|
|
then
|
|
case "$(cat /proc/cmdline)" in
|
|
*fast-reboot*)
|
|
modprobe swps io_no_init=1
|
|
;;
|
|
# warm-reboot will be set to fastfast in barefoot
|
|
*fastfast*)
|
|
modprobe swps io_no_init=1
|
|
;;
|
|
*)
|
|
modprobe swps
|
|
;;
|
|
esac
|
|
modprobe at24
|
|
echo 24c64 0x53 > /sys/bus/i2c/devices/i2c-0/new_device
|
|
else
|
|
echo " AS: nba610 init fail" >> /dev/kmsg
|
|
fi
|
|
|
|
# Setting ARP garbage collection threshold values
|
|
echo "Setting IPv4 Neighbor GC threshold values."
|
|
sysctl -w net.ipv4.neigh.default.gc_thresh1=16384
|
|
sysctl -w net.ipv4.neigh.default.gc_thresh2=32768
|
|
sysctl -w net.ipv4.neigh.default.gc_thresh3=32768
|
|
|
|
echo "done."
|
|
;;
|
|
|
|
stop)
|
|
exit 0
|
|
# remove modules by order
|
|
rmmod at24
|
|
rmmod swps
|
|
# rmmod optoe
|
|
rmmod net_cpld
|
|
rmmod net_psoc
|
|
rmmod net_platform
|
|
rmmod i2c-dev
|
|
rmmod i2c-mux-pca954x
|
|
rmmod i2c-gpio
|
|
rmmod lpc_ich
|
|
rmmod gpio_ich
|
|
|
|
echo "done."
|
|
;;
|
|
|
|
|
|
force-reload|restart)
|
|
echo "Not supported"
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: /etc/init.d/sonic-platform-netberg-aurora-610.init {start|stop}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0
|
|
|