blob: c1eece07d888459de698504c9236a63b72ffc363 [file] [log] [blame]
Shad Ansari2f7f9be2017-06-07 13:34:53 -07001#! /bin/bash
2cd /opt/bcm68620
3
4# These files are mounted using tmpfs, so they will be deleted upon reboot
5LOCK_DIR_INIT=/tmp/bcm68620_svk_init
6FILE_INIT_DONE="$LOCK_DIR_INIT/done"
7LOCK_DIR_KERNEL_LOG_OWNED=/tmp/bcm68620_kernel_log_owned
8
9USER_APPL_ARGS=""
10KT2_PORT=""
11SWKT2_PORT=""
12KERNEL_LOG="y"
13COOP_DBA="n"
14
15while (($#)); do
16 case "$1" in
17 --kt2)
18 shift
19 KT2_PORT="$1"
20 ;;
21 --swkt2)
22 shift
23 SWKT2_PORT="$1"
24 ;;
25 --proxy) # for backward compatibility (could just use '-proxy')
26 shift
27 USER_APPL_ARGS="$USER_APPL_ARGS -proxy $1"
28 ;;
29 -nl)
30 KERNEL_LOG="n"
31 USER_APPL_ARGS="$USER_APPL_ARGS $1"
32 ;;
33 -coop_dba)
34 COOP_DBA="y"
35 ;;
36 *)
37 USER_APPL_ARGS="$USER_APPL_ARGS $1"
38 ;;
39 esac
40 shift
41done
42
43# Check if the initialization steps (installing kernel modules, etc) have already been done.
44# If not, start the initialization process.
45if mkdir "$LOCK_DIR_INIT" 2>/dev/null; then
46 trap "rmdir \"$LOCK_DIR_INIT\"" EXIT
47 echo "Initializing BCM68620 SVK..."
48
49 insmod ll_pcie.ko
50 sleep 1
51
52 insmod os_linux.ko
53 sleep 1
54
55 source ./i2c_addrs.sh
56 insmod i2c_devs.ko
57 sleep 1
58
59 function probe_dev
60 {
61 2>/dev/null echo maple_i2c 0x$1 > /sys/bus/i2c/devices/i2c-0/new_device
62 }
63
64 # Suppress error warnings in case device cannot be probed because it is inexistent.
65 dmesg -n 1
66 probe_dev $I2C_SW0_I2C_ADDR
67 probe_dev $I2C_SW1_I2C_ADDR
68 probe_dev $I2C_SW2_I2C_ADDR
69 probe_dev $I2C_SW3_I2C_ADDR
70 probe_dev $I2C_SW4_I2C_ADDR
71 probe_dev $SFP_I2C_ADDR1
72 probe_dev $SFP_I2C_ADDR2
73 probe_dev $FPGA_I2C_ADDR
74 probe_dev $PON_DPLL_I2C_ADDR
75 probe_dev $PM_DPLL_I2C_ADDR
76 probe_dev $CXP_T_I2C_ADDR
77 probe_dev $CXP_R_I2C_ADDR
78 probe_dev $PCIE_SW_I2C_ADDR
79 dmesg -n 8
80
81 rm -f /dev/maple_i2c
82 mknod /dev/maple_i2c c `cat /sys/module/i2c_devs/parameters/maple_i2c_chrdev_major` 0
83
84 if [ "$KT2_PORT" != "" ]; then
85 echo k 1 > /proc/maple_i2c/i2c
86 insmod linux-kernel-bde.ko
87 sleep 1
88 cat /proc/linux-kernel-bde
89 sleep 1
90 insmod linux-uk-proxy.ko
91 sleep 1
92 mknod /dev/linux-uk-proxy c 125 0
93 sleep 1
94 insmod linux-bcm-diag-full.ko
95 sleep 1
96 echo "KT2 will wait on port $KT2_PORT"
97 ./bcm.user.proxy -d $KT2_PORT &
98 fi
99
100 if [ "$SWKT2_PORT" != "" ]; then
101 echo "SW KT2 init"
102 insmod linux-kernel-bde.ko
103 sleep 1
104 cat /proc/linux-kernel-bde
105 sleep 1
106 insmod linux-uk-proxy.ko
107 sleep 1
108 mknod /dev/linux-uk-proxy c 125 0
109 sleep 1
110 insmod linux-bcm-diag-full.ko
111 sleep 1
112 echo "KT2 will wait on port $SWKT2_PORT"
113 ./bcm.user.proxy -d $SWKT2_PORT &
114 fi
115
116 insmod bcm_dev_ctrl_linux.ko
117 sleep 1
118
119 if [ "$COOP_DBA" != "n" ]; then
120 insmod coop_dba_linux.ko
121 sleep 1
122 fi
123
124 rm -f /dev/bcm_log
125 mknod /dev/bcm_log c `cat /sys/module/bcm_dev_ctrl_linux/parameters/dev_log_chrdev_major` 0
126 mknod /dev/maple_dev_ctrl c `cat /sys/module/bcm_dev_ctrl_linux/parameters/maple_dev_ctrl_chrdev_major` 0
127
128 touch "$FILE_INIT_DONE"
129 trap - EXIT
130else
131 if [ -f "$FILE_INIT_DONE" ]; then
132 echo "Skipped BCM68620 SVK initialization since it has already been done"
133 else
134 echo "Waiting for SVK initialization to complete..."
135 while [ ! -f "$FILE_INIT_DONE" ]; do
136 sleep 1
137 done
138 fi
139fi
140
141# Only one application can have the kernel logger enabled at once.
142# If someone else already owns the kernel logger, run without it.
143if [ "$KERNEL_LOG" == "y" ]; then
144 if mkdir "$LOCK_DIR_KERNEL_LOG_OWNED" 2>/dev/null; then
145 trap "rmdir \"$LOCK_DIR_KERNEL_LOG_OWNED\"" EXIT
146 else
147 USER_APPL_ARGS="$USER_APPL_ARGS -nl"
148 echo "Running without kernel logger since someone else owns it"
149 fi
150fi
151
152#echo "In Band: Launching BCM68620 user space device control application "
153#./bcm_dev_ctrl_user > /dev/null 2>&1 &
154
155echo "Launching BCM68620 user application with options \"$USER_APPL_ARGS\""
156./bcm_user_appl $USER_APPL_ARGS