summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/prism-firmware/prism-firmware
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-bsp/prism-firmware/prism-firmware')
-rw-r--r--meta/recipes-bsp/prism-firmware/prism-firmware/hostap.rules4
-rw-r--r--meta/recipes-bsp/prism-firmware/prism-firmware/prism-fw.sh32
2 files changed, 36 insertions, 0 deletions
diff --git a/meta/recipes-bsp/prism-firmware/prism-firmware/hostap.rules b/meta/recipes-bsp/prism-firmware/prism-firmware/hostap.rules
new file mode 100644
index 0000000..dece98a
--- /dev/null
+++ b/meta/recipes-bsp/prism-firmware/prism-firmware/hostap.rules
@@ -0,0 +1,4 @@
+#
+# update firmware on Prism cards (load it to RAM, not to Flash)
+#
+SUBSYSTEM=="net", KERNEL=="wlan*" RUN="/lib/udev/prism-fw.sh"
diff --git a/meta/recipes-bsp/prism-firmware/prism-firmware/prism-fw.sh b/meta/recipes-bsp/prism-firmware/prism-firmware/prism-fw.sh
new file mode 100644
index 0000000..619f612
--- /dev/null
+++ b/meta/recipes-bsp/prism-firmware/prism-firmware/prism-fw.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+CARD_ID=`/usr/sbin/hostap_diag $INTERFACE|grep NICID|awk '{print $2}'|sed -e 's/id=0x//'`
+
+# 801d cards lack even Primary firmware so we cannot use hostap_diag
+PRI=/lib/firmware/pm010102.hex
+STA=/lib/firmware/rf010704.hex
+
+if [ $CARD_ID = '800c' ] || [ $CARD_ID = '8013' ] || [ $CARD_ID = '8017' ] || \
+ [ $CARD_ID = '801b' ] || [ $CARD_ID = '8022' ] || [ $CARD_ID = '8023' ] ; then
+ PRI=/lib/firmware/ak010104.hex
+elif [ $CARD_ID = '800b' ] || [ $CARD_ID = '8012' ] || [ $CARD_ID = '8016' ] || \
+ [ $CARD_ID = '801a' ] ; then
+ PRI=/lib/firmware/af010104.hex
+elif [ $CARD_ID = '800e' ] || [ $CARD_ID = '8015' ] || [ $CARD_ID = '8019' ] || \
+ [ $CARD_ID = '801d' ] ; then
+ PRI=/lib/firmware/pm010102.hex
+fi
+
+DIR=/proc/net/hostap/wlan0
+
+if [ ! -d $DIR ]; then
+ exit 1
+fi
+
+if grep -q no_pri=1 $DIR/debug; then
+ /usr/sbin/prism2_srec -gs wlan0 $PRI
+ /usr/sbin/prism2_srec -gp wlan0 $PRI
+fi
+
+/usr/sbin/prism2_srec -rp wlan0 $STA
+
OpenPOWER on IntegriCloud