On Sun, Feb 09, 2014 at 03:51:45PM +0100, Stefan Richter wrote:
Sure, definitely; my point was that the kernel ABI which userspace mixer applications are going to use could be a) the ALSA hwdep interface, or b) the ALSA hwdep interface together with firewire-core's firewire-cdev interface, but I understood that b) is the first choice. Specifically, provide in ALSA hwdep only the absolutely necessary interfaces and do as much as possible via firewire-cdev.
Agreed.
In contrast, it can't be firewire-cdev alone because of streaming on/off state influences what can be controlled, and because some devices embed status into the isochronous stream (MotU? RME?) ...
MOTU to a certain extent (although we don't make direct use of that at this point because the information is quite low level and isn't required to use the device successfully). Hardware meter values (which don't really constitute status data) are sent by the RMEs as part of the iso stream but again we're not making use of that yet either.
... and because some devices (which ones?) may have write-only registers, of which both streaming driver and mixer application want to know what is being written there.
RME is the primary example in this case.
Furthermore, it can't be a kernel interface like sysfs or configfs because of the complexity and variety of control protocols of FireWire audio devices.
At this stage I don't believe a universal interface is possible because I expect this will end up being a case of chasing one's tail (a list of basic conventions will be fine though). As you know, the physical features and setup of each interface family can be very different and trying to come up with a single interface which works across devices will be the stuff of nightmares. For example, some things needed by one interface may be of no concern at all to others. I imagine the device-specific userspace mixer panels which need to will access their relevant kernel interface. Consequently, for the relatively small number of interface models which are affected, an interface for each device through sysfs or configfs might work. Mixer and control for most devices will work fine with just the basic list of information which can be made available via hwdep. The most important one of these is the streaming status, but it could be useful to include a small number of other things which are common to all devices, such as sample rate.
Regards jonathan