[alsa-devel] [PATCH] ASoC: cs4270: fix dynamic initialization of register cache

Timur Tabi timur at freescale.com
Thu Jan 6 21:24:11 CET 2011

Mark Brown wrote:
>> > +	u8 reg_cache[CS4270_NUMREGS];
>> > +	struct snd_soc_codec_driver codec_drv;
> Having a driver per device is pretty icky and off the top of my head I'd
> expect it to cause problems if there are two cs4270 in the system.  It
> would be much nicer and more maintainable to avoid bodging around the
> API like this.

The problem is that I need a distinct default register cache for each CS4270 in
the system, so I don't know how to reconcile the idea that there is supposed to
be only one snd_soc_codec_driver for all devices.

What do I do if there are two CS4270s in a system, and they each have different
power-on default values for the registers?  Granted, it's a contrived example,
but this could happen if the first CS4270 is a rev1 chip, and the second is a
rev2 chip.

And even if this example is contrived, it's conceivable that there can be codecs
where the power-on defaults are set by pin configuration.  Perhaps codec #1 is
muted by default and codec #2 isn't.

Timur Tabi
Linux kernel developer at Freescale

More information about the Alsa-devel mailing list