On Mon, 28 Jul 2008, Jon Smirl wrote:
My device has 220 registers, some of these are quite long (32 bytes) and I have split them up into multiple 32b pseudo registers. That results in about 300 registers for a TAS5504 and 450 for a TAS5508.
A large number of these registers are for BiQuads, DRC, loudness, etc. They're not general purpose ALSA functions. What is an efficient way to expose several hundred registers of this class? Making snd_kcontrols for all of them seems pretty inefficient.
Note you can handle up to 128 32-bit words in one snd_kcontrol, so if you can group some registers, you can reduce the number of controls.
Another possibility is to use the hwdep device and create own ioctl interface to drive your hw. But you'll lose nice things like event notifier (unless you implement it in hwdep, too).
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.