diff options
Diffstat (limited to 'meta/recipes-bsp/prism-firmware')
3 files changed, 68 insertions, 0 deletions
diff --git a/meta/recipes-bsp/prism-firmware/prism-firmware.bb b/meta/recipes-bsp/prism-firmware/prism-firmware.bb new file mode 100644 index 000000000..903c55e15 --- /dev/null +++ b/meta/recipes-bsp/prism-firmware/prism-firmware.bb @@ -0,0 +1,32 @@ +DESCRIPTION = "Firmware for the Prism 2.x/3 cards" +SECTION = "base" +LICENSE = "closed" +RDEPENDS = "hostap-utils" +RREPLACES = "prism3-firmware prism3-support" +RCONFLICTS = "prism3-firmware prism3-support" +PACKAGE_ARCH = "all" +PR = "r3" + +SRC_URI = "http://www.red-bean.com/~proski/firmware/primary.tar.bz2 \ + http://www.red-bean.com/~proski/firmware/1.7.4.tar.bz2 \ + file://prism-fw.sh \ + file://hostap.rules" + +do_install() { + install -d ${D}${base_libdir}/firmware/ + install -d ${D}${base_libdir}/udev/ + install -d ${D}${sysconfdir}/pcmcia/ + install -d ${D}${sysconfdir}/udev/rules.d/ + + install -m 0644 ${WORKDIR}/primary/af010104.hex ${D}${base_libdir}/firmware/ + install -m 0644 ${WORKDIR}/primary/ak010104.hex ${D}${base_libdir}/firmware/ + install -m 0644 ${WORKDIR}/primary/pm010102.hex ${D}${base_libdir}/firmware/ + + install -m 0644 ${WORKDIR}/1.7.4/rf010704.hex ${D}${base_libdir}/firmware/ + + install -m 0755 ${WORKDIR}/prism-fw.sh ${D}${base_libdir}/udev/ + install -m 0644 ${WORKDIR}/hostap.rules ${D}${sysconfdir}/udev/rules.d/ +} + +PACKAGES = "${PN}" +FILES_${PN} += "${base_libdir}" 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 000000000..dece98ae9 --- /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 000000000..619f612be --- /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 + |