
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