On Thu, Apr 20, 2017 at 8:55 AM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > Hi Sebastian, > >>> With CONFIG_SERIAL_DEV_BUS=m, the hci_serdev.o file does not actually >>> get built into hci_uart.o as the Makefile doesn't pick it up, leading >>> to a link error with anything referring to it: >>> >>> ERROR: "hci_uart_register_device" [drivers/bluetooth/hci_nokia.ko] undefined! >>> scripts/Makefile.modpost:91: recipe for target '__modpost' failed >>> >>> Changing this in the Makefile would cause another problem when >>> hci_uart itself is built-in and cannot reference symbols from the >>> serdev module. >>> >>> This tries to address both problems by introducing a new hidden >>> Kconfig symbol that controls both the compilation of hci_serdev.o >>> and whether the Nokia driver can be selected. This seems to address >>> the problem for me, though there might be a better way to do it. >>> >>> Fixes: 7bb318680e86 ("Bluetooth: add nokia driver") >>> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> >>> --- >>> drivers/bluetooth/Kconfig | 8 +++++++- >>> drivers/bluetooth/Makefile | 2 +- >>> 2 files changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig >>> index 8aafbed9e160..737d93ef27c5 100644 >>> --- a/drivers/bluetooth/Kconfig >>> +++ b/drivers/bluetooth/Kconfig >>> @@ -76,6 +76,12 @@ config BT_HCIUART >>> Say Y here to compile support for Bluetooth UART devices into the >>> kernel or say M to compile it as module (hci_uart). >>> >>> +config BT_HCIUART_SERDEV >>> + bool >>> + depends on SERIAL_DEV_BUS && BT_HCIUART >>> + depends on SERIAL_DEV_BUS=y || SERIAL_DEV_BUS=BT_HCIUART >>> + default y >>> + >>> config BT_HCIUART_H4 >>> bool "UART (H4) protocol support" >>> depends on BT_HCIUART >>> @@ -89,7 +95,7 @@ config BT_HCIUART_H4 >>> config BT_HCIUART_NOKIA >>> tristate "UART Nokia H4+ protocol support" >>> depends on BT_HCIUART >> >> I guess BT_HCIUART dependency is no longer needed >> when we have BT_HCIUART_SERDEV dependency? > > if so then we need another patch since I already applied the one from Arnd. We need both dependencies: BT_HCIUART_SERDEV is a 'bool' symbol controlling whether subdrivers are able to use symbols exported by the serdev code, while BT_HCIUART is a tristate symbol and we need to depend on that to ensure that BT_HCIUART_NOKIA cannot be set to '=y' when BT_HCIUART=m. No further patch should be needed. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html