#!/bin/sh DESC="WL1251 MAC80211 Wireless LAN driver" NAME="wl1251" sysfs_path="/sys/bus/mmc/devices/mmc2:0001/mmc2:0001:1" ps_rate_threshold=30000 use_fw_ps=Y if [ -f /etc/pandora/conf/wl1251 ]; then . /etc/pandora/conf/wl1251 fi d_stop() { if `grep -q wl1251 /proc/modules` ; then ifconfig wlan0 down rmmod board_omap3pandora_wifi wl1251_sdio wl1251 2> /dev/null fi } d_start() { wl1251_args="" if modinfo wl1251 2> /dev/null | grep -q '\'; then wl1251_args="use_fw_ps=$use_fw_ps" fi modprobe wl1251 $wl1251_args modprobe wl1251_sdio # this does not exist on newer kernels modprobe board-omap3pandora-wifi 2> /dev/null # find our phy index, they change every time driver module is reinserted # assume our interface is wlan0 phy_idx=0 for a in `seq 20` ; do if [ -e /sys/class/net/wlan0 ] ; then phy_idx=$(cat /sys/class/net/wlan0/phy80211/index) break else sleep 0.2 fi done # restore phy related LED triggers (they come from mac80211.ko) if [ -e /sys/class/leds/ ] ; then for led in /sys/class/leds/* ; do trigger=$(grep "$(basename $led)" /etc/default/leds | grep phy | \ awk '{print $2}' | sed -e 's/.*phy[0-9]*\(.*\)/\1/') if [ "x$trigger" != "x" ] ; then echo "phy${phy_idx}$trigger" > "$led/trigger" fi done fi # some driver configuration if [ -d "$sysfs_path" ]; then test -n "$ps_rate_threshold" && echo "$ps_rate_threshold" > $sysfs_path/ps_rate_threshold test -n "$long_doze_mode" && echo "$long_doze_mode" > $sysfs_path/long_doze_mode fi } case "$1" in start) echo -n "Starting $DESC: $NAME" d_start & echo "." ;; stop) echo -n "Stopping $DESC: $NAME" d_stop echo "." ;; restart|force-reload) echo -n "Restarting $DESC: $NAME" d_stop sleep 1 d_start echo "." ;; *) echo "Usage: $0 {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0