Re: [RFC 0/3] misc: new serdev based drivers for w2sg00x4 GPS module and w2cbw003 wifi/bluetooth
From: H. Nikolaus Schaller
Date: Tue Jun 06 2017 - 14:52:31 EST
Hi Rob,
thanks for all the comments.
> Am 25.05.2017 um 14:48 schrieb Rob Herring <robh+dt@xxxxxxxxxx>:
>
> On Tue, May 23, 2017 at 8:49 AM, H. Nikolaus Schaller <hns@xxxxxxxxxxxxx> wrote:
>> Hi Rob,
>>
>>> Am 23.05.2017 um 15:10 schrieb Rob Herring <robh+dt@xxxxxxxxxx>:
>>>
>>> +Marcel
>>
>> Good!
>>
>> Hm. Well:
>>
>> root@letux:~# hciconfig hci0 up
>> Can't get device info: No such device
>> root@letux:~#
>>
>> I wonder how I can tell hciconfig about the UART port if not by running hciattach /dev/ttyBT0?
>
> You don't create a tty device. Instead you call
> hci_uart_register_device from the serdev probe.
I see. That is also brand new API in 4.12.
>
>>>> Or do you have a link to what you think about?
>>>
>>> Look at the nokia BT or TI (HCI_LL) BT drivers. Those both have f/w
>>> downloading and some GPIO controls. Given that this module is based on
>>> Marvell chipset, I'd expect you need to add serdev support to
>>> hci_mrvl.c.
>>
>> The w2cb003 has a Marvell WiFi (libertas) but a CSR Bluetooth side.
>>
>> It has built-in firmware and already talks serial HCI over simple UART right
>> after power-on. This is why our serdev driver has no firmware download.
>
> Okay, then probably add serdev support to hci_bcsp. In any case,
> hci_uart_register_device just needs to register the correct protocol.
Hm. I have tried to understand the hci_bcsp stuff but I must admit that we lack
quick enough understanding of such magic, to be able to add serdev support with
reasonable efforts. Is there a good description how hci_bcsp it works?
And I found:
BCSP (BlueCore Serial Protocol) is serial protocol for communication
between Bluetooth device and host. This protocol is required for non
USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
CF cards.
It appears as if the w2cbw003 bluetooth is really based on a BlueCore chip
(there are 2 references in http://www.wi2wi.com/mgr/docs/W2CBW003_Datasheet_Rev1.8.pdf ).
Therefore it might be possible to use BCSP but that are completely new horizons.
But so far we have simply used "hciattach any" mode for years.
We also know that the Gumstix Storm uses the same w2cbw wifi/bluetooth combo
(omap3-overo-base.dtsi) but there also appears to be no BCSP support in the kernel.
BTW: it looks as if they simply turn on bluetooth as soon as WiFi is configured up. So they
could be interested in a more precise power management driver like what we propose.
Maybe someone who owns an older Gumstix with the same chip (they were phased out in 2015
and replaced by TI modules) can help or jump into this discussion.
Thanks and BR,
Nikolaus