bb352b29def863763d8959048c23472ab8055387
[openpandora.oe.git] / recipes / pandora-system / wl1251-modules / rc.wl1251
1 #!/bin/sh
2 DESC="WL1251 MAC80211 Wireless LAN driver"
3 NAME="wl1251"
4
5 d_stop() {
6         if `grep -q wl1251 /proc/modules` ; then
7                 ifconfig wlan0 down
8                 rmmod board_omap3pandora_wifi wl1251_sdio wl1251 2> /dev/null
9         fi
10 }
11
12 d_start() {
13         modprobe wl1251
14         modprobe wl1251_sdio
15         # this does not exist on newer kernels
16         modprobe board-omap3pandora-wifi 2> /dev/null
17
18         # find our phy index, they change every time driver module is reinserted
19         # assume our interface is wlan0
20         phy_idx=0
21         for a in `seq 20` ; do
22                 if [ -e /sys/class/net/wlan0 ] ; then
23                         phy_idx=$(cat /sys/class/net/wlan0/phy80211/index)
24                         break
25                 else
26                         sleep 0.2
27                 fi
28         done
29
30         # restore phy related LED triggers (they come from mac80211.ko)
31         if [ -e /sys/class/leds/ ] ; then
32                 for led in /sys/class/leds/* ; do
33                         trigger=$(grep "$(basename $led)" /etc/default/leds | grep phy | \
34                                         awk '{print $2}' | sed -e 's/.*phy[0-9]*\(.*\)/\1/')
35                         if [ "x$trigger" != "x" ] ; then
36                                 echo "phy${phy_idx}$trigger" > "$led/trigger"
37                         fi
38                 done
39         fi
40 }
41
42 case "$1" in
43   start)
44         echo -n "Starting $DESC: $NAME"
45         d_start &
46         echo "."
47         ;;
48   stop)
49         echo -n "Stopping $DESC: $NAME"
50         d_stop
51         echo "."
52         ;;
53   restart|force-reload)
54         echo -n "Restarting $DESC: $NAME"
55         d_stop
56         sleep 1
57         d_start
58         echo "."
59         ;;
60   *)
61         echo "Usage: $0 {start|stop|restart|force-reload}" >&2
62         exit 1
63         ;;
64 esac
65
66 exit 0