Bluetooth: Add new serdev based driver for UART attached controllers
Marcel Holtmann
maintainerRFC 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
@@ -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