diff options
Diffstat (limited to 'recipes-kernel/rs9113')
-rwxr-xr-x | recipes-kernel/rs9113/files/rs9113/rs9113.init | 96 | ||||
-rwxr-xr-x | recipes-kernel/rs9113/files/rs9113/rs9113.reset | 25 | ||||
-rw-r--r-- | recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb | 5 | ||||
-rw-r--r-- | recipes-kernel/rs9113/rs9113.inc | 13 | ||||
-rw-r--r-- | recipes-kernel/rs9113/rs9113_1.6.5.bb | 8 |
5 files changed, 105 insertions, 42 deletions
diff --git a/recipes-kernel/rs9113/files/rs9113/rs9113.init b/recipes-kernel/rs9113/files/rs9113/rs9113.init index 4ef6f4b..6adeb5a 100755 --- a/recipes-kernel/rs9113/files/rs9113/rs9113.init +++ b/recipes-kernel/rs9113/files/rs9113/rs9113.init @@ -21,41 +21,70 @@ RS9113_WKUP=${MTS_IODIR}/wifi-bt-lpwkup . $CONFIG +pid=$$ +LOG_ERR=3 +LOG_INFO=6 +name=rs9113 +format="%s[%d] %12.2fs: %s" + +function syslog { + pr=$1 + shift + [[ $(cat /proc/uptime) =~ ([^[:space:]]+) ]] + s=$(printf "${format}" $name $pid ${BASH_REMATCH[1]} "$@") + echo "<${pr}>${s}" >/dev/kmsg +} + +function logpipe { + OIFS="${IFS}" + IFS=$'\n' + while read ln ; do + syslog $1 $ln + done + IFS="${OIFS}" +} + +function rs9113_reset { + for i in {1..5} ; do + if [[ -f $RS9113_RESET ]] ; then + break + fi + done + + # Reset the RS9113 chip is ready, and + # wait for it to settle. + for i in {1..5} ; do + if [[ -f $RS9113_RESET ]] ; then + echo 0 >$RS9113_RESET + usleep $SLEEPTIME + echo 1 >$RS9113_RESET + else + # No WiFi BT, so exit quietly + exit 0 + fi + syslog $LOG_INFO "After reset $i complete" + for j in {0..250} ; do + if /usr/bin/lsusb -d 1618:9113 ; then + syslog $LOG_INFO "lsusb found 1618:9113 after reset $i" + break 2 + fi + usleep 100000 + done + if ((i > 1)) ; then + syslog $LOG_ERR "RS9113 not found after $i resets" + /usr/bin/lsusb | logpipe $LOG_ERR + fi + done +} + case "$1" in start) if ((RS9113_LOAD == 0)) ; then # We don't want the driver loaded. exit 0 fi - # Reset the RS9113 chip is ready, and - # wait for it to settle. - if [ -f "$RS9113_RESET" ] ; then - echo 1 >$RS9113_RESET - usleep $SLEEPTIME - echo 0 >$RS9113_RESET - usleep $SLEEPTIME - echo 1 >$RS9113_RESET - N=1 - while [ $N -lt 20 ] ; do - INT=$(cat $RS9113_INT) - WKUP=$(cat $RS9113_WKUP) - if [ $INT -ne 1 -o $WKUP -ne 1 ] ; then - usleep $INTSLEEPTIME - else - break - fi - done - if [ $INT -ne 1 ] ; then - logger -t rs9113 -p error -s "$RS9113_INT is $INT" - fi - if [ $WKUP -ne 1 ] ; then - logger -t rs9113 -p error -s "$RS9113_WKUP is $WKUP" - fi - else - # No WiFi BT, so exit quietly - exit 0 - fi - /usr/bin/logger -t "rs9113" -p info -s "Loading rs9113 modules with COEX=$COEX_MODE and Country=$SET_COUNTRY_CODE" + rs9113_reset + syslog $LOG_INFO "Loading rs9113 modules with COEX=$COEX_MODE and Country=$SET_COUNTRY_CODE" /usr/sbin/rs9113_load_modules.sh $CONFIG RETVAL=$? if [ $RETVAL -eq 0 ] ; then @@ -66,7 +95,7 @@ case "$1" in ;; stop) - /usr/bin/logger -t "rs9113" -p info -s "Unloading rs9113 modules" + syslog $LOG_INFO "Unloading rs9113 modules" /usr/sbin/rs9113_remove_modules.sh RETVAL=$? if [ $RETVAL -eq 0 ] ; then @@ -79,7 +108,7 @@ case "$1" in $0 stop sleep 1 $0 start - ;; + ;; status) for dir in /sys/class/net/rpine[0-9]* ; do if [[ -d ${dir} ]] ; then @@ -90,8 +119,11 @@ case "$1" in echo Driver is not loaded exit 3 ;; + reset) + rs9113_reset + ;; *) - "Usage: $0 {start|stop|status|restart}" + echo "Usage: $0 {start|stop|status|restart|reset}" exit 2 ;; esac diff --git a/recipes-kernel/rs9113/files/rs9113/rs9113.reset b/recipes-kernel/rs9113/files/rs9113/rs9113.reset new file mode 100755 index 0000000..7992f7d --- /dev/null +++ b/recipes-kernel/rs9113/files/rs9113/rs9113.reset @@ -0,0 +1,25 @@ +#!/bin/sh +# Reset rs9113 +# Must be done after /etc/init.d/mts-io executes, and +# before any code that probes the USB bus. +function do_reset { + if ! [[ -w /sys/devices/platform/mts-io/wifi-bt-reset ]] ; then + exit 0 + fi + /etc/init.d/rs9113 reset +} + +case $1 in + start) + do_reset + ;; + stop) + ;; + reload) + do_reset + ;; + *) + echo "Usage: $0 {start|stop|reload}" + exit 2 + ;; +esac diff --git a/recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb b/recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb index b9ddf80..8dac47e 100644 --- a/recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb +++ b/recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb @@ -2,14 +2,11 @@ DESCRIPTION = "USB Driver for Redpine RS9113" LICENSE = "Proprietary" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28" PROVIDES = "rs9113-from-src" -PR = "r10" -PKGR = "${PR}${KERNEL_MODULE_PACKAGE_SUFFIX}${EXTENDPRAUTO}" -do_fetch[depends] += "virtual/kernel:do_shared_workdir" +PR = "r12${KERNEL_MODULE_PACKAGE_SUFFIX}" INHIBIT_PACKAGE_STRIP = "1" BB_STRICT_CHECKSUM = "0" inherit module SRCREV = "${PV}" -ERROR_QA_remove = "debug-files" # AUTOREV breaks mLinux source tarballs in Thud # SRCREV = "${AUTOREV}" diff --git a/recipes-kernel/rs9113/rs9113.inc b/recipes-kernel/rs9113/rs9113.inc index 3f0eb66..9365a3e 100644 --- a/recipes-kernel/rs9113/rs9113.inc +++ b/recipes-kernel/rs9113/rs9113.inc @@ -17,6 +17,7 @@ PACKAGES = " \ ${PN}-dbg \ ${PN}-autostart \ ${PN}-btclonly \ + ${PN}-reset \ ${PN}-noarch \ " @@ -40,10 +41,15 @@ ALLOW_EMPTY_${PN}-btclonly = "1" DR = "${DL_DIR}/rs9113-ipk" FILESEXTRAPATHS_append := "${DR}:" -INITSCRIPT_PACKAGES = "${PN}-autostart ${PN}-rm" +INITSCRIPT_PACKAGES = "${PN}-autostart ${PN}-rm ${PN}-reset" INITSCRIPT_NAME_${PN}-autostart = "rs9113" INITSCRIPT_PARAMS_${PN}-autostart = "start 50 S ." + +INITSCRIPT_NAME_${PN}-reset = "rs9113-reset" +INITSCRIPT_PARAMS_${PN}-reset = "start 40 S ." + + # ${PN}-rm must start after mts-io driver is loaded. INITSCRIPT_NAME_${PN}-rm = "mts-rm-rs9113" INITSCRIPT_PARAMS_${PN}-rm = "start 39 S ." @@ -168,6 +174,10 @@ FILES_${PN}-misc = " \ CONFFILES_${PN}-noarch = "${sysconfdir}/default/" +FILES_${PN}-reset = " \ + ${sysconfdir}/init.d/rs9113-reset \ + " + # noarch gets what is left to package. FILES_${PN}-noarch = " \ /opt/ \ @@ -192,6 +202,7 @@ do_install () { install -d ${D}${sysconfdir}/default/ install -m 0755 ${MR}/wpa_supplicant ${D}/opt/rs9113/init.d install -m 0755 ${MR}/rs9113.init ${D}${sysconfdir}/init.d/rs9113 + install -m 0755 ${MR}/rs9113.reset ${D}${sysconfdir}/init.d/rs9113-reset install -m 0644 ${MR}/rs9113.default ${D}${sysconfdir}/default/rs9113 install -m 0755 ${MR}/mts-rm-rs9113 ${D}${sysconfdir}/init.d/mts-rm-rs9113 } diff --git a/recipes-kernel/rs9113/rs9113_1.6.5.bb b/recipes-kernel/rs9113/rs9113_1.6.5.bb index edab39c..46578c9 100644 --- a/recipes-kernel/rs9113/rs9113_1.6.5.bb +++ b/recipes-kernel/rs9113/rs9113_1.6.5.bb @@ -17,16 +17,14 @@ COMPATIBLE_MACHINE = "(mtcdt|mtrv1)" # To update this, manually copy ipk from Jenkin's job to # git://git@${MTS_INTERNAL_GIT}/mlinux/ipk.git;protocol=ssh;branch=${PV} # -PR = "r10" - -PKGR = "${PR}${KERNEL_MODULE_PACKAGE_SUFFIX}${EXTENDPRAUTO}" - +PR = "r10${KERNEL_MODULE_PACKAGE_SUFFIX}" SRC_URI = " \ file://rs9113/rs9113.init \ file://rs9113/rs9113.default \ + file://rs9113/rs9113.reset \ file://rs9113/mts-rm-rs9113 \ file://rs9113/wpa_supplicant \ - file://rs9113-ipk/rs9113-from-src_${PV}-${PR}${KERNEL_MODULE_PACKAGE_SUFFIX}.0_${MACHINE}.ipk;name=binaries \ + file://rs9113-ipk/rs9113-from-src_${PV}-${PR}.0_${MACHINE}.ipk;name=binaries \ " SRCREV = "${PV}" |