On Tue, Jul 22, 2008 at 03:30:12PM -0400, Jon Smirl wrote:
My new plan is to make it work on 32bit registers like it does currently, instead of 16b. I only need to use bitfield masks in the first 32bits.
Yes, that's needed anyway. You might want to coordinate with Daniel Ribeiro (CCed) who recently expressed an interest in the same thing.
Then to access the wide registers I would encode it into the register names. So if the big mixer register is at 0x40 and it is 32 bytes wide the defines would look like this.
#define MIXER_CHANNEL_0 0x0040
That sounds like a good solution to the problem of extremely large registers. Some other devices implement virtual registers, mostly to allow them to map the functionality of the chip into DAPM rather than for uses like this, though.
What I'm missing is a fast way to bulk load a bunch of registers. If you change equalization settings from jazz to classical I need to update 50 registers in bulk.
A transaction interface in the ALSA API might be handy for stuff like this - something that lets you indicate the start and end of a sequence of control changes. It would be helpful for DAPM pop/click suppression during scenario changes too.