summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-freescale-layer/recipes-connectivity
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-bsp/meta-freescale-layer/recipes-connectivity')
-rw-r--r--meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.service9
-rw-r--r--meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.sh48
-rw-r--r--meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/hci-uart-helper_1.0.bb30
3 files changed, 87 insertions, 0 deletions
diff --git a/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.service b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.service
new file mode 100644
index 000000000..f8eda0cba
--- /dev/null
+++ b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Bluetooth HCI UART support
+Requires=dev-ttymxc2.device
+After=dev-ttymxc2.device
+Before=bluetooth.service
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/hci-uart-helper.sh
diff --git a/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.sh b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.sh
new file mode 100644
index 000000000..e1aa31c06
--- /dev/null
+++ b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/files/hci-uart-helper.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Script to attach HCI UART devices on i.MX8MQ EVK/EVKB
+#
+# NOTE:
+# For the most part errors are ignored and the script returns
+# 0/success so BlueZ will still be started if the script is somehow
+# run on a board without the expected hardware. However, if the
+# various probing succeeds and hciattach is run, the script returns
+# the resulting exit code if hciattach fails.
+
+COMPAT=/sys/firmware/devicetree/base/compatible
+HCITTY=/dev/ttymxc2
+PCIDEV=/sys/bus/pci/devices/0000:01:00.0
+
+if [ ! \( -f "$COMPAT" -a -c "$HCITTY" \) ]; then
+ exit 0
+fi
+
+found=false
+for c in `cat $COMPAT | tr '\0' ' '`; do
+ echo "c = $c"
+ if echo $c | grep -q '^fsl,imx8mq-evk$'; then
+ found=true
+ break
+ fi
+done
+if ! $found; then
+ echo "i.MX8MQ EVK not found!"
+ exit 0
+fi
+
+if [ -f "$PCIDEV/vendor" -a -f "$PCIDEV/device" ]; then
+ vendor=`cat $PCIDEV/vendor`
+ device=`cat $PCIDEV/device`
+fi
+
+rc=0
+if [ "$vendor" = "0x14e4" -a "$device" = "0x43ec" ]; then
+ # Broadcom 5436 on EVKB
+ hciattach $HCITTY bcm43xx
+ rc=$?
+elif [ "$vendor" = "0x168c" -a "$device" = "0x003e" ]; then
+ # Qualcomm (nee Atheros) 6174 on EVK
+ hciattach $HCITTY qualcomm
+ rc=$?
+fi
+exit $rc
diff --git a/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/hci-uart-helper_1.0.bb b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/hci-uart-helper_1.0.bb
new file mode 100644
index 000000000..798fcebe6
--- /dev/null
+++ b/meta-agl-bsp/meta-freescale-layer/recipes-connectivity/hci-uart-helper/hci-uart-helper_1.0.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Helper for enabling UART connected HCI Bluetooth devices"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://hci-uart-helper.service \
+ file://hci-uart-helper.sh \
+"
+
+COMPATIBLE_MACHINE = "imx8mq-evk"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ # Install helper script
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/hci-uart-helper.sh ${D}${sbindir}/
+
+ # Install systemd unit
+ install -d ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/hci-uart-helper.service ${D}${systemd_system_unitdir}/
+ install -d ${D}${systemd_system_unitdir}/bluetooth.service.wants
+ ln -s ../hci-uart-helper.service ${D}${systemd_system_unitdir}/bluetooth.service.wants/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "bluez5"