Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / samples / mic / mpssd / micctrl
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0-only
3 # Intel MIC Platform Software Stack (MPSS)
4 #
5 # Copyright(c) 2013 Intel Corporation.
6 #
7 # Intel MIC User Space Tools.
8 #
9 # micctrl - Controls MIC boot/start/stop.
10 #
11 # chkconfig: 2345 95 05
12 # description: start MPSS stack processing.
13 #
14 ### BEGIN INIT INFO
15 # Provides: micctrl
16 ### END INIT INFO
17
18 # Source function library.
19 . /etc/init.d/functions
20
21 sysfs="/sys/class/mic"
22
23 _status()
24 {
25         f=$sysfs/$1
26         echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`"
27 }
28
29 status()
30 {
31         if [ "`echo $1 | head -c3`" == "mic" ]; then
32                 _status $1
33                 return $?
34         fi
35         for f in $sysfs/*
36         do
37                 _status `basename $f`
38                 RETVAL=$?
39                 [ $RETVAL -ne 0 ] && return $RETVAL
40         done
41         return 0
42 }
43
44 _reset()
45 {
46         f=$sysfs/$1
47         echo reset > $f/state
48 }
49
50 reset()
51 {
52         if [ "`echo $1 | head -c3`" == "mic" ]; then
53                 _reset $1
54                 return $?
55         fi
56         for f in $sysfs/*
57         do
58                 _reset `basename $f`
59                 RETVAL=$?
60                 [ $RETVAL -ne 0 ] && return $RETVAL
61         done
62         return 0
63 }
64
65 _boot()
66 {
67         f=$sysfs/$1
68         echo "linux" > $f/bootmode
69         echo "mic/uos.img" > $f/firmware
70         echo "mic/$1.image" > $f/ramdisk
71         echo "boot" > $f/state
72 }
73
74 boot()
75 {
76         if [ "`echo $1 | head -c3`" == "mic" ]; then
77                 _boot $1
78                 return $?
79         fi
80         for f in $sysfs/*
81         do
82                 _boot `basename $f`
83                 RETVAL=$?
84                 [ $RETVAL -ne 0 ] && return $RETVAL
85         done
86         return 0
87 }
88
89 _shutdown()
90 {
91         f=$sysfs/$1
92         echo shutdown > $f/state
93 }
94
95 shutdown()
96 {
97         if [ "`echo $1 | head -c3`" == "mic" ]; then
98                 _shutdown $1
99                 return $?
100         fi
101         for f in $sysfs/*
102         do
103                 _shutdown `basename $f`
104                 RETVAL=$?
105                 [ $RETVAL -ne 0 ] && return $RETVAL
106         done
107         return 0
108 }
109
110 _wait()
111 {
112         f=$sysfs/$1
113         while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ]
114         do
115                 sleep 1
116                 echo -e "Waiting for $1 to go offline"
117         done
118 }
119
120 wait()
121 {
122         if [ "`echo $1 | head -c3`" == "mic" ]; then
123                 _wait $1
124                 return $?
125         fi
126         # Wait for the cards to go offline
127         for f in $sysfs/*
128         do
129                 _wait `basename $f`
130                 RETVAL=$?
131                 [ $RETVAL -ne 0 ] && return $RETVAL
132         done
133         return 0
134 }
135
136 if [ ! -d "$sysfs" ]; then
137         echo -e $"Module unloaded "
138         exit 3
139 fi
140
141 case $1 in
142         -s)
143                 status $2
144                 ;;
145         -r)
146                 reset $2
147                 ;;
148         -b)
149                 boot $2
150                 ;;
151         -S)
152                 shutdown $2
153                 ;;
154         -w)
155                 wait $2
156                 ;;
157         *)
158                 echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}"
159                 exit 2
160 esac
161
162 exit $?