summaryrefslogtreecommitdiff
path: root/recipes-kernel/rs9113
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/rs9113')
-rwxr-xr-xrecipes-kernel/rs9113/files/rs9113/rs9113.init96
-rwxr-xr-xrecipes-kernel/rs9113/files/rs9113/rs9113.reset25
-rw-r--r--recipes-kernel/rs9113/rs9113-from-src_1.6.5.bb5
-rw-r--r--recipes-kernel/rs9113/rs9113.inc13
-rw-r--r--recipes-kernel/rs9113/rs9113_1.6.5.bb8
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}"