summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Klug <john.klug@multitech.com>2016-09-02 14:05:10 -0500
committerJohn Klug <john.klug@multitech.com>2016-09-02 14:05:10 -0500
commit6cd53f35ea7a13945510173af684914b707df3d0 (patch)
tree12527f691f7ad6eb3e45f07636c6b476a20ffa49
parent937e77c83e62c68a594e26a484c32dca5018b34e (diff)
downloadmeta-multitech-6cd53f35ea7a13945510173af684914b707df3d0.tar.gz
meta-multitech-6cd53f35ea7a13945510173af684914b707df3d0.tar.bz2
meta-multitech-6cd53f35ea7a13945510173af684914b707df3d0.zip
Add rs9113 bitbake layer
-rw-r--r--recipes-kernel/rs9113/rs9113-1.3.0/kthread.patch34
-rw-r--r--recipes-kernel/rs9113/rs9113-1.3.0/mtcdt/defconfig14
-rw-r--r--recipes-kernel/rs9113/rs9113-1.3.0/rs9113.default14
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.3.0/rs9113.init64
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.3.0/rs9113_load_modules.sh153
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.3.0/rs9113_remove_modules.sh29
-rw-r--r--recipes-kernel/rs9113/rs9113-1.4.3/mtcdt/defconfig12
-rw-r--r--recipes-kernel/rs9113/rs9113-1.4.3/rs9113.default48
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.4.3/rs9113.init93
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.4.3/rs9113_load_modules.sh178
-rwxr-xr-xrecipes-kernel/rs9113/rs9113-1.4.3/rs9113_remove_modules.sh29
-rw-r--r--recipes-kernel/rs9113/rs9113_1.3.0.bb59
-rw-r--r--recipes-kernel/rs9113/rs9113_1.4.3.bb61
13 files changed, 788 insertions, 0 deletions
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/kthread.patch b/recipes-kernel/rs9113/rs9113-1.3.0/kthread.patch
new file mode 100644
index 0000000..f802c38
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/kthread.patch
@@ -0,0 +1,34 @@
+diff -ruPN old/source/host/common_hal/osd/linux/onebox_thread.c new/source/host/common_hal/osd/linux/onebox_thread.c
+--- old/source/host/common_hal/osd/linux/onebox_thread.c 2016-08-03 10:15:47.000000000 -0500
++++ new/source/host/common_hal/osd/linux/onebox_thread.c 2016-08-03 12:10:00.000000000 -0500
+@@ -99,11 +99,12 @@
+ atomic_inc(&handle->thread_done);
+ ONEBOX_DEBUG(ONEBOX_ZONE_INFO,(TEXT("In %s Before setting event\n"),__func__));
+ rsi_set_event(&handle->thread_event);
+- wait_for_completion(&handle->thread_complete);
++ //wait_for_completion(&handle->thread_complete);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
+ //handle->thread_id = NULL;
+ kthread_stop(handle->thread_id);
+ #else
++ wait_for_completion(&handle->thread_complete);
+ handle->thread_id = 0;
+ #endif
+ #endif
+diff -ruPN old/source/host/wlan/wlan_hal/osd_wlan/linux/onebox_wlan_osd_ops.c new/source/host/wlan/wlan_hal/osd_wlan/linux/onebox_wlan_osd_ops.c
+--- old/source/host/wlan/wlan_hal/osd_wlan/linux/onebox_wlan_osd_ops.c 2016-08-03 10:15:48.000000000 -0500
++++ new/source/host/wlan/wlan_hal/osd_wlan/linux/onebox_wlan_osd_ops.c 2016-08-03 12:10:00.000000000 -0500
+@@ -244,11 +244,12 @@
+ atomic_inc(&w_adapter->txThreadDone);
+ ONEBOX_DEBUG(ONEBOX_ZONE_INFO,(TEXT("In %s Before setting event\n"),__func__));
+ os_intf_ops->onebox_set_event(&(w_adapter->sdio_scheduler_event));
+- wait_for_completion(&w_adapter->txThreadComplete);
++ //wait_for_completion(&w_adapter->txThreadComplete);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39)
+ //handle->thread_id = NULL;
+ kthread_stop(handle->thread_id);
+ #else
++ wait_for_completion(&w_adapter->txThreadComplete);
+ handle->thread_id = 0;
+ #endif
+ return ONEBOX_STATUS_SUCCESS;
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/mtcdt/defconfig b/recipes-kernel/rs9113/rs9113-1.3.0/mtcdt/defconfig
new file mode 100644
index 0000000..e8dd6a7
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/mtcdt/defconfig
@@ -0,0 +1,14 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+# CONFIG_SDIO is not set
+CONFIG_USB=y
+CONFIG_LINUX=y
+# CONFIG_ANDROID is not set
+ONEBOX_CONFIG_NL80211=y
+# HOSTAPD_SUPPORT is not set
+ENABLE_WLAN=y
+ENABLE_BT=y
+# ENABLE_ZIGB is not set
+ONEBOX_DEBUG_ENABLE=y
+# RSI_SDIO_MULTI_BLOCK_SUPPORT is not set
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.default b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.default
new file mode 100644
index 0000000..4b4a62b
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.default
@@ -0,0 +1,14 @@
+# COEX_MODE options:
+# 1 WLAN STATION /WIFI-Direct/WLAN PER
+# 2 WLAN ACCESS POINT(including muliple APs on different vaps)
+# 3 WLAN ACCESS POINT + STATION MODE(on multiple vaps)
+# 4 BT CLASSIC MODE/BT CLASSIC PER MODE
+# 5 WLAN STATION + BT CLASSIC MODE
+# 6 WLAN ACCESS POINT + BT CLASSIC MODE
+# 8 BT LE MODE /BT LE PER MODE
+# 9 WLAN STATION + BT LE MODE
+# 12 BT CLASSIC + BT LE MODE
+# 14 WLAN ACCESS POINT + BT CLASSIC MODE+ BT LE MODE
+#
+COEXISTENCE=6
+
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.init b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.init
new file mode 100755
index 0000000..91ea057
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113.init
@@ -0,0 +1,64 @@
+#!/bin/bash
+# Note that none of the INIT stuff below works in the current open-embedded.
+### BEGIN INIT INFO
+# Provides: rs9113
+# Required-Start: mts-io
+# Default-Start: S
+# Default-Stop: 0 6
+# X-Start-Before: networking
+# Short-Description: load the rs9113 drivers
+# Description: rs9113 drivers are used to provide access to Bluetooth
+# and WiFi.
+### END INIT INFO
+
+CONFIG=/etc/default/rs9113
+
+[ -f $CONFIG ] || exit 1
+
+. $CONFIG
+
+case "$1" in
+ start)
+ /usr/bin/logger -t "rs9113" -p info -s "Loading rs9113 modules"
+ /usr/sbin/rs9113_load_modules.sh $COEXISTENCE
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ] ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ ;;
+
+ stop)
+ /usr/bin/logger -t "rs9113" -p info -s "Unloading rs9113 modules"
+ /usr/sbin/rs9113_remove_modules.sh
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ] ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ for dir in /sys/class/net/rpine[0-9]* ; do
+ if [[ -d ${dir} ]] ; then
+ echo Driver is loaded
+ exit 0
+ fi
+ done
+ echo Driver is not loaded
+ exit 3
+ ;;
+ *)
+ "Usage: $0 {start|stop|status|restart}"
+ exit 2
+ ;;
+esac
+
+exit 0
+
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_load_modules.sh b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_load_modules.sh
new file mode 100755
index 0000000..0a16db0
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_load_modules.sh
@@ -0,0 +1,153 @@
+#!/bin/bash
+
+if [ $# -ne 1 ]; then
+ echo "Usage: $(basename $0) COEX_MODE"
+ echo ""
+ echo "COEX_MODE options:
+ 1 WLAN STATION /WIFI-Direct/WLAN PER
+ 2 WLAN ACCESS POINT(including muliple APs on different vaps)
+ 3 WLAN ACCESS POINT + STATION MODE(on multiple vaps)
+
+ 4 BT CLASSIC MODE/BT CLASSIC PER MODE
+ 5 WLAN STATION + BT CLASSIC MODE
+ 6 WLAN ACCESS POINT + BT CLASSIC MODE
+ 8 BT LE MODE /BT LE PER MODE
+ 9 WLAN STATION + BT LE MODE
+ 12 BT CLASSIC + BT LE MODE
+ 14 WLAN ACCESS POINT + BT CLASSIC MODE+ BT LE MODE
+ "
+ exit 1
+fi
+
+COEX_MODE=$1
+
+cd /opt/rs9113
+
+modprobe mac80211
+modprobe bluetooth
+
+insmod onebox_common_gpl.ko
+
+insmod wlan.ko
+insmod wlan_wep.ko
+insmod wlan_tkip.ko
+insmod wlan_ccmp.ko
+insmod wlan_acl.ko
+insmod wlan_xauth.ko
+insmod wlan_scan_sta.ko
+insmod onebox_wlan_nongpl.ko
+insmod onebox_wlan_gpl.ko
+
+#Power_mode type
+# 0 - HIGH POWER MODE
+# 1 - MEDIUM POWER MODE
+# 2 - LOW POWER MODE
+BT_RF_TX_POWER_MODE=0
+BT_RF_RX_POWER_MODE=0
+
+PARAMS=$PARAMS" bt_rf_tx_power_mode=$BT_RF_TX_POWER_MODE"
+PARAMS=$PARAMS" bt_rf_rx_power_mode=$BT_RF_RX_POWER_MODE"
+
+insmod onebox_bt_nongpl.ko $PARAMS
+insmod onebox_bt_gpl.ko
+
+#Driver Mode 1 END-TO-END mode,
+# 2 RF Evaluation Mode
+
+DRIVER_MODE=1
+
+# COEX MODE:
+# 1 WLAN STATION /WIFI-Direct/WLAN PER
+# 2 WLAN ACCESS POINT(including muliple APs on different vaps)
+# 3 WLAN ACCESS POINT + STATION MODE(on multiple vaps)
+
+# 4 BT CLASSIC MODE/BT CLASSIC PER MODE
+# 5 WLAN STATION + BT CLASSIC MODE
+# 6 WLAN ACCESS POINT + BT CLASSIC MODE
+# 8 BT LE MODE /BT LE PER MODE
+# 9 WLAN STATION + BT LE MODE
+# 12 BT CLASSIC + BT LE MODE
+# 14 WLAN ACCESS POINT + BT CLASSIC MODE+ BT LE MODE
+
+# 16 ZIGBEE MODE/ ZIGBEE PER MODE
+# 17 WLAN STATION + ZIGBEE
+
+#COEX_MODE=3
+
+#To enable TA-level SDIO aggregation set 1 else set 0 to disable it.
+TA_AGGR=4
+
+#Disable Firmware load set 1 to skip FW loading through Driver else set to 0.
+SKIP_FW_LOAD=0
+
+#FW Download Mode
+# 1 - Full Flash mode with Secondary Boot Loader
+# 2 - Full RAM mode with Secondary Boot Loader
+# 3 - Flash + RAM mode with Secondary Boot Loader
+# 4 - Firmware loading WITHOUT Secondary Boot Loader
+# Recommended to use the default mode 1
+FW_LOAD_MODE=1
+
+#ps_handshake_mode
+# 1 - No hand shake Mode
+# 2 - Packet hand shake Mode
+# 3 - GPIO Hand shake Mode
+###########Default is Packet handshake mode=2
+HANDSHAKE_MODE=2
+
+#SDIO Clock speed
+SDIO_CLOCK_SPEED=50000
+
+#Antenna diversity enable
+RSI_ANTENNA_DIVERSITY=0
+
+#Antenna Selection
+ANT_SEL_VAL=2 # 2 Internal Antenna Selection
+ # 3 External Antenna Selection
+
+####RF_POWER_MODE Selection
+
+# 0x00 For Both TX and RX High Power
+# 0x11 For Both TX and RX Medium Power
+# 0x22 For Both TX and RX LOW Power
+
+# 0x10 For High Power TX and Medium RX Power
+# 0x20 For High Power TX and LOW RX Power
+
+# 0x01 For Medium TX and RX High Power
+# 0x21 For Medium Power TX and LOW RX Power
+
+# 0x02 For Low Power TX and RX High Power
+# 0x12 For LOW Power TX and Medium RX Power
+
+
+WLAN_RF_PWR_MODE=0x00
+BT_RF_PWR_MODE=0x00
+ZIGB_RF_PWR_MODE=0x00
+
+#COUNTRY Selection
+# 0 World Domain
+# 840 US Domain Maps to US Region
+# 276 Germany Maps to EU Region
+# 392 Japan Maps to Japan Region
+SET_COUNTRY_CODE=0
+
+PARAMS=" driver_mode=$DRIVER_MODE"
+PARAMS=$PARAMS" firmware_path=/opt/rs9113/firmware/"
+PARAMS=$PARAMS" onebox_zone_enabled=0x1"
+PARAMS=$PARAMS" ta_aggr=$TA_AGGR"
+PARAMS=$PARAMS" skip_fw_load=$SKIP_FW_LOAD"
+PARAMS=$PARAMS" fw_load_mode=$FW_LOAD_MODE"
+PARAMS=$PARAMS" sdio_clock=$SDIO_CLOCK_SPEED"
+PARAMS=$PARAMS" enable_antenna_diversity=$RSI_ANTENNA_DIVERSITY"
+PARAMS=$PARAMS" coex_mode=$COEX_MODE"
+#PARAMS=$PARAMS" ps_handshake_mode=$HANDSHAKE_MODE"
+PARAMS=$PARAMS" obm_ant_sel_val=$ANT_SEL_VAL"
+PARAMS=$PARAMS" wlan_rf_power_mode=$WLAN_RF_PWR_MODE"
+PARAMS=$PARAMS" bt_rf_power_mode=$BT_RF_PWR_MODE"
+PARAMS=$PARAMS" zigb_rf_power_mode=$ZIGB_RF_PWR_MODE"
+PARAMS=$PARAMS" country_code=$SET_COUNTRY_CODE"
+
+insmod onebox_nongpl.ko $PARAMS
+insmod onebox_gpl.ko
+
diff --git a/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_remove_modules.sh b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_remove_modules.sh
new file mode 100755
index 0000000..bcd885a
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.3.0/rs9113_remove_modules.sh
@@ -0,0 +1,29 @@
+killall -9 wpa_supplicant
+killall -9 hostapd
+rm -rf /var/run/wpa_supplicant/
+sleep 2
+
+### COMMON HAL MODULES
+rmmod onebox_gpl.ko
+rmmod onebox_nongpl.ko
+
+###WLAN MODULES
+rmmod onebox_wlan_gpl.ko
+rmmod onebox_wlan_nongpl.ko
+rmmod wlan_scan_sta.ko
+rmmod wlan_xauth.ko
+rmmod wlan_acl.ko
+rmmod wlan_tkip.ko
+rmmod wlan_ccmp.ko
+rmmod wlan_wep.ko
+rmmod wlan.ko
+
+###BT MODULES
+rmmod onebox_bt_gpl.ko
+rmmod onebox_bt_nongpl.ko
+
+###ZIGB MODULES
+#rmmod onebox_zigb_gpl.ko
+#rmmod onebox_zigb_nongpl.ko
+
+rmmod onebox_common_gpl.ko
diff --git a/recipes-kernel/rs9113/rs9113-1.4.3/mtcdt/defconfig b/recipes-kernel/rs9113/rs9113-1.4.3/mtcdt/defconfig
new file mode 100644
index 0000000..84437a6
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.4.3/mtcdt/defconfig
@@ -0,0 +1,12 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+ENABLE_USB=y
+# ENABLE_SDIO is not set
+CONFIG_LINUX=y
+# CONFIG_ANDROID is not set
+ONEBOX_CONFIG_NL80211=y
+# HOSTAPD_SUPPORT is not set
+ENABLE_WLAN=y
+ENABLE_BT=y
+# ENABLE_ZIGB is not set
diff --git a/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.default b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.default
new file mode 100644
index 0000000..c05357d
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.default
@@ -0,0 +1,48 @@
+# Parameters for rs9113 driver
+#
+# Enable Antenna Diversity (1)
+RSI_ANTENNA_DIVERSITY=0
+
+# COEX_MODE options:
+# 1 WLAN STATION /WIFI-Direct/WLAN PER
+# 2 WLAN ACCESS POINT(including muliple APs on different vaps)
+# 3 WLAN ACCESS POINT + STATION MODE(on multiple vaps)
+# 4 BT CLASSIC MODE/BT CLASSIC PER MODE
+# 6 WLAN ACCESS POINT + BT CLASSIC MODE
+# 8 BT LE MODE /BT LE PER MODE
+# 9 WLAN STATION + BT LE MODE
+# 12 BT CLASSIC + BT LE MODE
+# 14 WLAN ACCESS POINT + BT CLASSIC MODE+ BT LE MODE
+COEX_MODE=6
+
+# Power selection
+# 0x00 - For Both TX and RX High Power
+# 0x11 - For Both TX and RX Medium Power
+# 0x22 - For Both TX and RX LOW Power
+# 0x10 - For High Power TX and Medium RX Power
+# 0x20 - For High Power TX and LOW RX Power
+# 0x01 - For Medium TX and RX High Power
+# 0x21 - For Medium Power TX and LOW RX Power
+# 0x02 - For Low Power TX and RX High Power
+# 0x12 - For LOW Power TX and Medium RX Power
+WLAN_RF_PWR_MODE=0x00
+BT_RF_PWR_MODE=0x00
+
+#Power_mode type
+# 0 - HIGH POWER MODE
+# 1 - MEDIUM POWER MODE
+# 2 - LOW POWER MODE
+BT_RF_TX_POWER_MODE=0
+BT_RF_RX_POWER_MODE=0
+
+# Country Selection
+# 0 World Domain
+# 840 US Domain Maps to US Region
+# 276 Germany Maps to EU Region
+# 392 Japan Maps to Japan Region
+# from ISO 3166-1
+SET_COUNTRY_CODE=0
+
+# 2 – Select internal antenna
+# 3 – Select external antenna
+ANT_SEL_VAL=2
diff --git a/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.init b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.init
new file mode 100755
index 0000000..2351ae4
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113.init
@@ -0,0 +1,93 @@
+#!/bin/bash
+# Note that none of the INIT stuff below works in the current open-embedded.
+### BEGIN INIT INFO
+# Provides: rs9113
+# Required-Start: mts-io
+# Default-Start: S
+# Default-Stop: 0 6
+# X-Start-Before: networking
+# Short-Description: load the rs9113 drivers
+# Description: rs9113 drivers are used to provide access to Bluetooth
+# and WiFi.
+### END INIT INFO
+
+CONFIG=/etc/default/rs9113
+MTS_IODIR=/sys/devices/platform/mts-io
+RS9113_RESET=${MTS_IODIR}/wifi-bt-reset
+RS9113_INT=${MTS_IODIR}/wifi-bt-int
+RS9113_WKUP=${MTS_IODIR}/wifi-bt-lpwkup
+
+[ -f $CONFIG ] || exit 1
+
+. $CONFIG
+
+case "$1" in
+ start)
+ # Reset the RS9113 chip is ready, and
+ # wait for it to settle.
+ if [ -f "$RS9113_RESET" ] ; then
+ echo 1 >$RS9113_RESET
+ usleep 100
+ echo 0 >$RS9113_RESET
+ usleep 100
+ 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 100
+ 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
+ fi
+ /usr/bin/logger -t "rs9113" -p info -s "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
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ ;;
+
+ stop)
+ /usr/bin/logger -t "rs9113" -p info -s "Unloading rs9113 modules"
+ /usr/sbin/rs9113_remove_modules.sh
+ RETVAL=$?
+ if [ $RETVAL -eq 0 ] ; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ status)
+ for dir in /sys/class/net/rpine[0-9]* ; do
+ if [[ -d ${dir} ]] ; then
+ echo Driver is loaded
+ exit 0
+ fi
+ done
+ echo Driver is not loaded
+ exit 3
+ ;;
+ *)
+ "Usage: $0 {start|stop|status|restart}"
+ exit 2
+ ;;
+esac
+
+exit 0
+
diff --git a/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_load_modules.sh b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_load_modules.sh
new file mode 100755
index 0000000..4f293dd
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_load_modules.sh
@@ -0,0 +1,178 @@
+#!/bin/bash
+defaults=/etc/default/rs9113
+usage()
+{
+ echo "Configuration values:"
+ echo " COEX_MODE"
+ echo " RSI_ANTENNA_DIVERSITY"
+ echo " ANT_SEL_VAL"
+ echo " SET_COUNTRY_CODE"
+ echo " WLAN_RF_PWR_MODE"
+ echo " BT_RF_PWR_MODE"
+ echo " COEX_MODE"
+ echo " BT_RF_TX_POWER_MODE"
+ echo " BT_RF_RX_POWER_MODE"
+ echo "Usage: $(basename $0) [config file]"
+ echo ""
+ echo "Config file is typically
+ /etc/default/rs9113 with the above parameters."
+ exit 1
+}
+if (($# > 1)); then
+ usage
+fi
+
+if ((${#COEX_MODE}==0)) && [[ -r $defaults ]]; then
+ set -e
+ . $defaults
+ set +e
+fi
+
+if (($# > 0)) && [[ -r $1 ]]; then
+ set -e
+ . $1
+ set +e
+fi
+
+err=0
+for x in COEX_MODE RSI_ANTENNA_DIVERSITY ANT_SEL_VAL SET_COUNTRY_CODE WLAN_RF_PWR_MODE \
+ BT_RF_PWR_MODE COEX_MODE BT_RF_TX_POWER_MODE BT_RF_RX_POWER_MODE ; do
+ eval var=\$$x
+ if ((${#var} < 1)) ; then
+ echo Need to provide ${x} for configuration
+ err=1
+ fi
+done
+if((err)) ; then
+ usage
+fi
+cd /opt/rs9113
+
+modprobe mac80211
+modprobe bluetooth
+
+insmod onebox_common_gpl.ko
+
+insmod wlan.ko
+insmod wlan_wep.ko
+insmod wlan_tkip.ko
+insmod wlan_ccmp.ko
+insmod wlan_acl.ko
+insmod wlan_xauth.ko
+insmod wlan_scan_sta.ko
+insmod onebox_wlan_nongpl.ko
+insmod onebox_wlan_gpl.ko
+
+#BT Power_mode type
+# 0 - HIGH POWER MODE
+# 1 - MEDIUM POWER MODE
+# 2 - LOW POWER MODE
+
+PARAMS=$PARAMS" bt_rf_tx_power_mode=$BT_RF_TX_POWER_MODE"
+PARAMS=$PARAMS" bt_rf_rx_power_mode=$BT_RF_RX_POWER_MODE"
+
+insmod onebox_bt_nongpl.ko $PARAMS
+insmod onebox_bt_gpl.ko
+
+#Driver Mode 1 END-TO-END mode,
+# 2 RF Evaluation Mode
+
+DRIVER_MODE=1
+
+# COEX MODE:
+# 1 WLAN STATION /WIFI-Direct/WLAN PER
+# 2 WLAN ACCESS POINT(including muliple APs on different vaps)
+# 3 WLAN ACCESS POINT + STATION MODE(on multiple vaps)
+
+# 4 BT CLASSIC MODE/BT CLASSIC PER MODE
+# 5 WLAN STATION + BT CLASSIC MODE
+# 6 WLAN ACCESS POINT + BT CLASSIC MODE
+# 8 BT LE MODE /BT LE PER MODE
+# 9 WLAN STATION + BT LE MODE
+# 12 BT CLASSIC + BT LE MODE
+# 14 WLAN ACCESS POINT + BT CLASSIC MODE+ BT LE MODE
+
+# 16 ZIGBEE MODE/ ZIGBEE PER MODE
+# 17 WLAN STATION + ZIGBEE
+
+#COEX_MODE=3
+
+#To enable TA-level SDIO aggregation set 1 else set 0 to disable it.
+TA_AGGR=4
+
+#Disable Firmware load set 1 to skip FW loading through Driver else set to 0.
+SKIP_FW_LOAD=0
+
+#FW Download Mode
+# 1 - Full Flash mode with Secondary Boot Loader
+# 2 - Full RAM mode with Secondary Boot Loader
+# 3 - Flash + RAM mode with Secondary Boot Loader
+# 4 - Firmware loading WITHOUT Secondary Boot Loader
+# Recommended to use the default mode 1
+FW_LOAD_MODE=1
+
+#ps_handshake_mode
+# 1 - No hand shake Mode
+# 2 - Packet hand shake Mode
+# 3 - GPIO Hand shake Mode
+###########Default is Packet handshake mode=2
+HANDSHAKE_MODE=2
+
+#SDIO Clock speed
+SDIO_CLOCK_SPEED=50000
+
+#Antenna diversity enable
+#RSI_ANTENNA_DIVERSITY=0
+
+#Antenna Selection
+#ANT_SEL_VAL=2 # 2 Internal Antenna Selection
+ # 3 External Antenna Selection
+
+####RF_POWER_MODE Selection
+
+# 0x00 For Both TX and RX High Power
+# 0x11 For Both TX and RX Medium Power
+# 0x22 For Both TX and RX LOW Power
+
+# 0x10 For High Power TX and Medium RX Power
+# 0x20 For High Power TX and LOW RX Power
+
+# 0x01 For Medium TX and RX High Power
+# 0x21 For Medium Power TX and LOW RX Power
+
+# 0x02 For Low Power TX and RX High Power
+# 0x12 For LOW Power TX and Medium RX Power
+
+
+#WLAN_RF_PWR_MODE=0x00
+#BT_RF_PWR_MODE=0x00
+#ZIGB_RF_PWR_MODE=0x00
+
+#COUNTRY Selection
+# 0 World Domain
+# 840 US Domain Maps to US Region
+# 276 Germany Maps to EU Region
+# 392 Japan Maps to Japan Region
+#SET_COUNTRY_CODE=0
+
+PARAMS=" driver_mode=$DRIVER_MODE"
+PARAMS=$PARAMS" firmware_path=/opt/rs9113/firmware/"
+PARAMS=$PARAMS" onebox_zone_enabled=0x1"
+PARAMS=$PARAMS" ta_aggr=$TA_AGGR"
+PARAMS=$PARAMS" skip_fw_load=$SKIP_FW_LOAD"
+PARAMS=$PARAMS" fw_load_mode=$FW_LOAD_MODE"
+PARAMS=$PARAMS" sdio_clock=$SDIO_CLOCK_SPEED"
+PARAMS=$PARAMS" enable_antenna_diversity=$RSI_ANTENNA_DIVERSITY"
+PARAMS=$PARAMS" coex_mode=$COEX_MODE"
+#PARAMS=$PARAMS" ps_handshake_mode=$HANDSHAKE_MODE"
+PARAMS=$PARAMS" obm_ant_sel_val=$ANT_SEL_VAL"
+PARAMS=$PARAMS" wlan_rf_power_mode=$WLAN_RF_PWR_MODE"
+PARAMS=$PARAMS" bt_rf_power_mode=$BT_RF_PWR_MODE"
+# PARAMS=$PARAMS" zigb_rf_power_mode=$ZIGB_RF_PWR_MODE"
+PARAMS=$PARAMS" country_code=$SET_COUNTRY_CODE"
+
+if ! insmod onebox_nongpl.ko $PARAMS ; then
+ echo onebox_nongpl.ko $PARAMS
+fi
+insmod onebox_gpl.ko
+
diff --git a/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_remove_modules.sh b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_remove_modules.sh
new file mode 100755
index 0000000..bcd885a
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113-1.4.3/rs9113_remove_modules.sh
@@ -0,0 +1,29 @@
+killall -9 wpa_supplicant
+killall -9 hostapd
+rm -rf /var/run/wpa_supplicant/
+sleep 2
+
+### COMMON HAL MODULES
+rmmod onebox_gpl.ko
+rmmod onebox_nongpl.ko
+
+###WLAN MODULES
+rmmod onebox_wlan_gpl.ko
+rmmod onebox_wlan_nongpl.ko
+rmmod wlan_scan_sta.ko
+rmmod wlan_xauth.ko
+rmmod wlan_acl.ko
+rmmod wlan_tkip.ko
+rmmod wlan_ccmp.ko
+rmmod wlan_wep.ko
+rmmod wlan.ko
+
+###BT MODULES
+rmmod onebox_bt_gpl.ko
+rmmod onebox_bt_nongpl.ko
+
+###ZIGB MODULES
+#rmmod onebox_zigb_gpl.ko
+#rmmod onebox_zigb_nongpl.ko
+
+rmmod onebox_common_gpl.ko
diff --git a/recipes-kernel/rs9113/rs9113_1.3.0.bb b/recipes-kernel/rs9113/rs9113_1.3.0.bb
new file mode 100644
index 0000000..80be133
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113_1.3.0.bb
@@ -0,0 +1,59 @@
+DESCRIPTION = "USB Driver for Redpine RS9113"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28"
+SRCREV = "${AUTOREV}"
+SRC_URI = " \
+ git://git@gitlab.multitech.net/mlinux/Redpine.git;protocol=ssh;branch=1.3.0 \
+ file://kthread.patch;patch=1;pnum=3 \
+ file://defconfig \
+ file://rs9113_load_modules.sh \
+ file://rs9113_remove_modules.sh \
+ file://rs9113.init \
+ file://rs9113.default \
+"
+
+S = "${WORKDIR}/git/source/host"
+FILESEXTRAPATHS_prepend := "${WORKDIR}/git/patches:"
+
+EXTRA_OEMAKE = " KERNELDIR=${STAGING_KERNEL_DIR} \
+ CROSS_COMPILE=${TARGET_PREFIX} \
+ ARCH=arm \
+ WLAN_COMPILE_FLAGS='' \
+ "
+
+inherit update-rc.d
+INITSCRIPT_NAME = "rs9113"
+INITSCRIPT_PARAMS = "start 00 2 3 4 5 . stop 81 0 6 1 ."
+
+do_configure() {
+ cp ${WORKDIR}/defconfig .config
+}
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake
+}
+
+FILES_${PN} = "/opt/rs9113 ${sbindir} ${sysconfdir}"
+FILES_${PN}-dbg = "/opt/rs9113/.debug/"
+
+PARALLEL_MAKE = ""
+
+do_install() {
+ install -m 0755 -d ${D}/opt/rs9113
+ install -d ${D}${sysconfdir}/init.d/
+ install -d ${D}${sysconfdir}/default/
+ cp -r ${S}/release/* ${D}/opt/rs9113/
+
+ install -m 0755 -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/rs9113_load_modules.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/rs9113_remove_modules.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/rs9113.init ${D}${sysconfdir}/init.d/rs9113
+ install -m 0644 ${WORKDIR}/rs9113.default ${D}${sysconfdir}/default/rs9113
+}
+
+python do_clean() {
+ bb.note("Skipping clean in rs9113 recipe.")
+}
diff --git a/recipes-kernel/rs9113/rs9113_1.4.3.bb b/recipes-kernel/rs9113/rs9113_1.4.3.bb
new file mode 100644
index 0000000..32df0cf
--- /dev/null
+++ b/recipes-kernel/rs9113/rs9113_1.4.3.bb
@@ -0,0 +1,61 @@
+DESCRIPTION = "USB Driver for Redpine RS9113"
+SECTION = "base"
+PRIORITY = "optional"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28"
+SRCREV = "${AUTOREV}"
+SRC_URI = " \
+ git://git@gitlab.multitech.net/mlinux/Redpine.git;protocol=ssh;branch=1.4.3 \
+ file://defconfig \
+ file://rs9113_load_modules.sh \
+ file://rs9113_remove_modules.sh \
+ file://rs9113.init \
+ file://rs9113.default \
+"
+
+# file://kthread.patch;patch=1;pnum=3
+
+S = "${WORKDIR}/git/source/host"
+FILESEXTRAPATHS_prepend := "${WORKDIR}/git/patches:"
+
+EXTRA_OEMAKE = " KERNELDIR=${STAGING_KERNEL_DIR} \
+ CROSS_COMPILE=${TARGET_PREFIX} \
+ ARCH=arm \
+ WLAN_COMPILE_FLAGS='' \
+ V=1 \
+ "
+
+inherit update-rc.d
+INITSCRIPT_NAME = "rs9113"
+INITSCRIPT_PARAMS = "start 00 2 3 4 5 . stop 81 0 6 1 ."
+
+do_configure() {
+ cp ${WORKDIR}/defconfig .config
+}
+
+do_compile () {
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS
+ oe_runmake
+}
+
+FILES_${PN} = "/opt/rs9113 ${sbindir} ${sysconfdir}"
+FILES_${PN}-dbg = "/opt/rs9113/.debug/"
+
+PARALLEL_MAKE = ""
+
+do_install() {
+ install -m 0755 -d ${D}/opt/rs9113
+ install -d ${D}${sysconfdir}/init.d/
+ install -d ${D}${sysconfdir}/default/
+ cp -r ${S}/release/* ${D}/opt/rs9113/
+
+ install -m 0755 -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/rs9113_load_modules.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/rs9113_remove_modules.sh ${D}${sbindir}/
+ install -m 0755 ${WORKDIR}/rs9113.init ${D}${sysconfdir}/init.d/rs9113
+ install -m 0644 ${WORKDIR}/rs9113.default ${D}${sysconfdir}/default/rs9113
+}
+
+python do_clean() {
+ bb.note("Skipping clean in rs9113 recipe.")
+}