[alsa-devel] Adding bluetooth PCM interface support to ASoC (Was: Re: [PATCH 6/7] ASoC: Samsung: neo1973_gta02: Fix bluetooth DAI registration)

Lars-Peter Clausen lars at metafoo.de
Mon Feb 7 23:55:22 CET 2011


On 02/07/2011 07:17 PM, Mark Brown wrote:
>>> The bluetooth chip is an actual device which I can point to on the
>>> board and schematic, having a struct device to represent a device that's
>>> actually present doesn't seem like a great leap.
> 
>> Well, there is an actual device representing the bt device, but since
>> this is the standard bt usb device I have no idea how we would get an
>> reference to it from within the sound board driver.
> 
> If you've got a real device and a driver binding to it then you can make
> the driver for that device register the DAI from its probe function, no
> need for the machine driver to get involved.
>

The audio hardware setup of the board looks roughly like this:

  [### SOC ###]
   |         |
   | USB     | I2S
   |         |
 [BT]----[Codec]----[Modem]
     PCM        Analog

So the bluetooth chip is handeld by the standard USB BT HCI driver.

I did some research on the topic and it seems that this is a pretty common
setup in embedded devices.
Audio to the bluetooth chip can either be send over the HCI interface (USB in
this case) from the CPU or over the PCM interface from the codec, so that audio
data from the modem to a bluetooth headset doesn't have to be routed through
the CPU.
The PCM interface seems to be part of the bluetooth standard and there are even
registers (PSKEY_PCM_CONFIG32) to configure the PCM format and bit-rate.

This and that neo1973 devices dont seem the only ones using such a setup, it
would naturally make sense to write an ASoC driver to negotiate the PCM format
between the codec and bluetooth chip and maybe do power management. (And
ofcourse register a dai_device).

But the bluetooth audio support seems to be entirely written in userspace. The
in-kernel bluetooth drivers in general seem only to provide a common interface
to the underlying hardware and all of the higher level functionality seems to
be implemented in userspace.
So right now I have no idea where to start if one wanted to add a ASoC driver
which did the bt-dai configuration.

I've Cced Marcel Holtmann and the bluez mailinglist, maybe someone can give
some input on subject.

- Lars


More information about the Alsa-devel mailing list