wl1251-modules: update the rc script to set driver params
[openpandora.oe.git] / recipes / pandora-system / wl1251-modules / rc.wl1251
index d1834e1..ab0f43f 100755 (executable)
@@ -2,32 +2,30 @@
 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
-               rmmod wl1251_sdio
-               rmmod wl1251
-               rmmod board-omap3pandora-wifi
+               ifconfig wlan0 down
+               rmmod board_omap3pandora_wifi wl1251_sdio wl1251 2> /dev/null
        fi
 }
 
 d_start() {
-       if ! lsmod | grep -q mac80211 ; then
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "rfkill_backport.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "compat.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "cfg80211.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "mac80211.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "compat_firmware_class.ko")
-               insmod $(busybox find /lib/modules/$(uname -r) -name "ecb.ko")
-               insmod $(busybox find /lib/modules/$(uname -r) -name "pcbc.ko")
-               insmod $(busybox find /lib/modules/$(uname -r) -name "arc4.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_tkip.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_wep.ko")
-               insmod $(busybox find /lib/modules/$(uname -r)/updates -name "lib80211_crypt_ccmp.ko")
+       wl1251_args=""
+       if modinfo wl1251 2> /dev/null | grep -q '\<use_fw_ps\>'; then
+               wl1251_args="use_fw_ps=$use_fw_ps"
        fi
-       insmod $(busybox find /lib/modules/$(uname -r)/updates -name "wl1251.ko")
-       insmod $(busybox find /lib/modules/$(uname -r)/updates -name "wl1251_sdio.ko")
-       insmod $(busybox find /lib/modules/$(uname -r) -name "board-omap3pandora-wifi.ko")
+       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
@@ -51,6 +49,12 @@ d_start() {
                        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