From f5dd985f6350cae4907f46d26db17145f05f7eda Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 2 Mar 2017 15:50:29 +0000 Subject: [PATCH] brcmfmac_sdio-firmware-rpi: Implement Raspbian udev rules and btuart --- .../brcmfmac_sdio-firmware-rpi/package.mk | 6 ++++++ .../scripts/rpi-btuart | 11 ++++++++++ .../system.d/brcmfmac_sdio-firmware.service | 5 ++--- .../udev.d/90-rpi-add-serial.rules | 21 +++++++++++++++++++ 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100755 packages/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart create mode 100755 packages/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk index 3f823df7fe..ecaa46340b 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk +++ b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk @@ -38,6 +38,12 @@ makeinstall_target() { DESTDIR=$INSTALL/usr ./install } +post_makeinstall_target() { + # Install rpi btuart script to bring up Bluetooth + mkdir -p $INSTALL/usr/bin + cp -P $PKG_DIR/scripts/rpi-btuart $INSTALL/usr/bin +} + post_install() { enable_service brcmfmac_sdio-firmware.service } diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart new file mode 100755 index 0000000000..c27c58c152 --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/scripts/rpi-btuart @@ -0,0 +1,11 @@ +#!/bin/bash + +if [ "$(cat /proc/device-tree/aliases/uart0)" = "$(cat /proc/device-tree/aliases/serial1)" ] ; then + if [ "$(wc -c /proc/device-tree/soc/gpio@7e200000/uart0_pins/brcm\,pins | cut -f 1 -d ' ')" = "16" ] ; then + /usr/bin/hciattach /dev/serial1 bcm43xx 3000000 flow - + else + /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow - + fi +else + /usr/bin/hciattach /dev/serial1 bcm43xx 460800 noflow - +fi diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service index 0c66ca357d..ade61a2c0c 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service +++ b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/system.d/brcmfmac_sdio-firmware.service @@ -1,13 +1,12 @@ [Unit] Description=Broadcom sdio firmware update for BCM43430A1 -ConditionPathExists=/dev/ttyAMA0 -ConditionPathExists=/proc/device-tree/soc/gpio@7e200000/bt_pins +ConditionPathExists=/dev/serial1 After=network.target [Service] Type=simple RemainAfterExit=yes -ExecStart=/usr/bin/hciattach /dev/ttyAMA0 bcm43xx 921600 noflow - +ExecStart=/usr/bin/rpi-btuart [Install] WantedBy=network.target diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules new file mode 100755 index 0000000000..334bd37d4b --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/udev.d/90-rpi-add-serial.rules @@ -0,0 +1,21 @@ +KERNEL=="ttyAMA[01]", PROGRAM="/bin/sh -c '\ + ALIASES=/proc/device-tree/aliases; \ + if [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial0) ]; then \ + echo 0;\ + elif [ $(cat $ALIASES/uart0) = $(cat $ALIASES/serial1) ]; then \ + echo 1; \ + else \ + exit 1; \ + fi\ + '", SYMLINK+="serial%c" + +KERNEL=="ttyS0", PROGRAM="/bin/sh -c '\ + ALIASES=/proc/device-tree/aliases; \ + if [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial0) ]; then \ + echo 0; \ + elif [ $(cat $ALIASES/uart1) = $(cat $ALIASES/serial1) ]; then \ + echo 1; \ + else \ + exit 1; \ + fi \ + '", SYMLINK+="serial%c"