
On Sun, 2010-08-08 at 09:07 +1000, Stuart Longland wrote:
Hi Mark, Liam... On 08/06/10 21:42, Liam Girdwood wrote:
On Fri, 2010-08-06 at 12:34 +0100, Liam Girdwood wrote:
On Fri, 2010-08-06 at 12:19 +0100, Mark Brown wrote:
The machine driver shouldn't be doing this - it's too fragile in the face of any changes in the drivers and means hard coding use cases into the kernel which is really bad practice since it's much slower than doing things from user space and much harder to change as new needs arise.
Please do give UCM (Use Case Manager) a test drive. We are in the late development / early testing phase before upstreaming (still one or two things todo).
You will need to checkout the use-case-verb branches of :-
git://git.slimlogic.co.uk/alsa-lib.git
git://git.slimlogic.co.uk/alsa-utils.git
There is a tool called alsaucm that allows changing the use case from the command line. Best to use it's interactive (-i) mode atm.
There is also an initial repository for UCM use case configuration files here :-
git://git.slimlogic.co.uk/alsa-ucm-conf.git
This will show the format required to describe use cases.
Forgot to add that patches are most welcome.
No worries... I can see there being possible issues with the machine driver being highly sensitive to changes to the CODEC driver, I was just curious if there was some mechanism for abstracting this.
However, a userspace solution will probably work well... I'll have a look and report back any findings. How close is this to being merged into the main alsa-lib and alsa-utils trees?
We are aiming for sometime in the next two weeks. There are still roughly two things that need fixing:-
1) Drop the control ID from the use case configuration files. i.e.
In order to enable the 'DL1 Mixer Multimedia' path we have a config like
73:'DL1 Mixer Multimedia':1:1
this would just become
'DL1 Mixer Multimedia':1:1
This way we are not reliant on ID numbers that can easily change when driver updates occur (something that is catching me atm with a new driver). The control names are always very constant and unique though.
2) Add a small shared memory segment to store state information for multiple client access.
Liam