Merge remote-tracking branches 'asoc/fix/atmel', 'asoc/fix/fsl', 'asoc/fix/tegra...
[linux-drm-fsl-dcu.git] / Documentation / mic / mpssd / micctrl
1 #!/bin/bash
2 # Intel MIC Platform Software Stack (MPSS)
3 #
4 # Copyright(c) 2013 Intel Corporation.
5 #
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License, version 2, as
8 # published by the Free Software Foundation.
9 #
10 # This program is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
14 #
15 # The full GNU General Public License is included in this distribution in
16 # the file called "COPYING".
17 #
18 # Intel MIC User Space Tools.
19 #
20 # micctrl - Controls MIC boot/start/stop.
21 #
22 # chkconfig: 2345 95 05
23 # description: start MPSS stack processing.
24 #
25 ### BEGIN INIT INFO
26 # Provides: micctrl
27 ### END INIT INFO
28
29 # Source function library.
30 . /etc/init.d/functions
31
32 sysfs="/sys/class/mic"
33
34 _status()
35 {
36         f=$sysfs/$1
37         echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`"
38 }
39
40 status()
41 {
42         if [ "`echo $1 | head -c3`" == "mic" ]; then
43                 _status $1
44                 return $?
45         fi
46         for f in $sysfs/*
47         do
48                 _status `basename $f`
49                 RETVAL=$?
50                 [ $RETVAL -ne 0 ] && return $RETVAL
51         done
52         return 0
53 }
54
55 _reset()
56 {
57         f=$sysfs/$1
58         echo reset > $f/state
59 }
60
61 reset()
62 {
63         if [ "`echo $1 | head -c3`" == "mic" ]; then
64                 _reset $1
65                 return $?
66         fi
67         for f in $sysfs/*
68         do
69                 _reset `basename $f`
70                 RETVAL=$?
71                 [ $RETVAL -ne 0 ] && return $RETVAL
72         done
73         return 0
74 }
75
76 _boot()
77 {
78         f=$sysfs/$1
79         echo "linux" > $f/bootmode
80         echo "mic/uos.img" > $f/firmware
81         echo "mic/$1.image" > $f/ramdisk
82         echo "boot" > $f/state
83 }
84
85 boot()
86 {
87         if [ "`echo $1 | head -c3`" == "mic" ]; then
88                 _boot $1
89                 return $?
90         fi
91         for f in $sysfs/*
92         do
93                 _boot `basename $f`
94                 RETVAL=$?
95                 [ $RETVAL -ne 0 ] && return $RETVAL
96         done
97         return 0
98 }
99
100 _shutdown()
101 {
102         f=$sysfs/$1
103         echo shutdown > $f/state
104 }
105
106 shutdown()
107 {
108         if [ "`echo $1 | head -c3`" == "mic" ]; then
109                 _shutdown $1
110                 return $?
111         fi
112         for f in $sysfs/*
113         do
114                 _shutdown `basename $f`
115                 RETVAL=$?
116                 [ $RETVAL -ne 0 ] && return $RETVAL
117         done
118         return 0
119 }
120
121 _wait()
122 {
123         f=$sysfs/$1
124         while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ]
125         do
126                 sleep 1
127                 echo -e "Waiting for $1 to go offline"
128         done
129 }
130
131 wait()
132 {
133         if [ "`echo $1 | head -c3`" == "mic" ]; then
134                 _wait $1
135                 return $?
136         fi
137         # Wait for the cards to go offline
138         for f in $sysfs/*
139         do
140                 _wait `basename $f`
141                 RETVAL=$?
142                 [ $RETVAL -ne 0 ] && return $RETVAL
143         done
144         return 0
145 }
146
147 if [ ! -d "$sysfs" ]; then
148         echo -e $"Module unloaded "
149         exit 3
150 fi
151
152 case $1 in
153         -s)
154                 status $2
155                 ;;
156         -r)
157                 reset $2
158                 ;;
159         -b)
160                 boot $2
161                 ;;
162         -S)
163                 shutdown $2
164                 ;;
165         -w)
166                 wait $2
167                 ;;
168         *)
169                 echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}"
170                 exit 2
171 esac
172
173 exit $?