Skip to contentSkip to conversation

Bluetooth: Add new serdev based driver for UART attached controllers

RFC New Marcel Holtmann 1 participant 1 message Mar 15, 2018 Bluetooth drivers

lore
Share & tools
lore

Marcel Holtmann

author maintainer
#0 lore raw

RFC 1/1 Bluetooth: Add new serdev based driver for UART attached controllers

This is a from scratch written driver to run H:4 on serdev based system with a Bluetooth controller attached via an UART. It is currently tested on RPi3 and it has Broadcom integration. It is DT only and is missing GPIO and runtime power management integration. Also Apple or ACPI support is currently not added.

To integrate with controllers from Intel and Qualcomm, similar handling like with btusb.c has to be done.

The goal is to run individual drivers on serdev capable systems so that we can retire hci_uart on these system and continue with a lot simpler and easier to maintain driver. It seems that hci_uart has too many race conditions due to handling TTY and line disciplines. And fixes for that are not really related to serdev based drivers. In a serdev only world it makes sense to remove any of the complex code.

Don't mind that I overloaded CONFIG_BT_HCIBTUART since essentially the old btuart_cs.c driver is non-functional and will be removed soon.

---
 drivers/bluetooth/Makefile  |   1 +
 drivers/bluetooth/btuart.c  | 441 ++++++++++++++++++++++++++++++++++++++++++++
 drivers/bluetooth/h4_recv.h | 158 ++++++++++++++++
 3 files changed, 600 insertions(+)
 create mode 100644 drivers/bluetooth/btuart.c
 create mode 100644 drivers/bluetooth/h4_recv.h
drivers/bluetooth/Makefile +1 -0
index 4e4e44d09796..6d68ab32229a 100644
@@ -15,6 +15,7 @@ obj-$(CONFIG_BT_HCIBTUART)	+= btuart_cs.o
 
 obj-$(CONFIG_BT_HCIBTUSB)	+= btusb.o
 obj-$(CONFIG_BT_HCIBTSDIO)	+= btsdio.o
+obj-$(CONFIG_BT_HCIBTUART)	+= btuart.o
 
 obj-$(CONFIG_BT_INTEL)		+= btintel.o
 obj-$(CONFIG_BT_ATH3K)		+= ath3k.o
drivers/bluetooth/btuart.c new file +441 -0

441 lines not on this page · raw message

drivers/bluetooth/h4_recv.h new file +158 -0

158 lines not on this page · raw message

Signature · 1 line
2.14.3