Hi Sean, > This adds the support of enabling MT7663S and MT7668S SDIO-based > Bluetooth function. > > There are quite many differences between MT766[3,8]S and standard > Bluetooth SDIO devices such as Type-A and Type-B devices. For example, > MT766[3,8]S have its own SDIO registers layout, definition, SDIO packet > format, and the specific flow should be programmed on them to complete > the device initialization and low power control and so on. > > Currently, there are many independent programming sequences from the > transport which are exactly the same as the ones in btusb.c about MediaTek > support [1] and btmtkuart.c. We can try to split the transport independent > Bluetooth setups on the advance, place them into the common files and allow > varous transport drivers to reuse them in the future. > > [1] http://lists.infradead.org/pipermail/linux-mediatek/2019-January/017074.html > > Signed-off-by: Sean Wang <sean.wang@xxxxxxxxxxxx> > --- > drivers/bluetooth/Kconfig | 11 + > drivers/bluetooth/Makefile | 1 + > drivers/bluetooth/btmtksdio.c | 979 ++++++++++++++++++++++++++++++++++ > 3 files changed, 991 insertions(+) > create mode 100644 drivers/bluetooth/btmtksdio.c patch has been applied to bluetooth-next tree. You also need to send an extra patch providing a fix for this: CC drivers/bluetooth/btmtksdio.o drivers/bluetooth/btmtksdio.c: In function ‘btmtksdio_interrupt’: drivers/bluetooth/btmtksdio.c:470:2: warning: ‘old_len’ may be used uninitialized in this function [-Wmaybe-uninitialized] print_hex_dump(KERN_ERR, "err sdio rx: ", DUMP_PREFIX_NONE, 4, 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ old_data, old_len, true); ~~~~~~~~~~~~~~~~~~~~~~~~ drivers/bluetooth/btmtksdio.c:376:15: note: ‘old_len’ was declared here unsigned int old_len; ^~~~~~~ drivers/bluetooth/btmtksdio.c:470:2: warning: ‘old_data’ may be used uninitialized in this function [-Wmaybe-uninitialized] print_hex_dump(KERN_ERR, "err sdio rx: ", DUMP_PREFIX_NONE, 4, 1, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ old_data, old_len, true); ~~~~~~~~~~~~~~~~~~~~~~~~ drivers/bluetooth/btmtksdio.c:375:17: note: ‘old_data’ was declared here unsigned char *old_data; ^~~~~~~~ And can we actually introduce module_sdio_driver similar to module_usb_driver. Regards Marcel