linux/sound
Wolfram Sang 151798f872 ASoC: sgtl5000: fix cache handling
Cache handling in this driver is broken. The chip has 16-bit registers, yet the
register numbers also increase by 2 per register, i.e.  there are only
even-numbered registers. The cache in this driver, though, simply increments
register numbers, so it does need some mapping as seen in
sgtl5000_restore_regs(), note the '>> 1':

	snd_soc_write(codec, SGTL5000_CHIP_LINREG_CTRL,
                        cache[SGTL5000_CHIP_LINREG_CTRL >> 1]);

That, of course, won't work with snd_soc_update_bits(). (Thus, we won't even
notice the missing register 0x1c in the default regs which shifted all follwing
registers to wrong values.) Noticed on the MX28EVK where enabling the regulators
simply locked up the chip.

Refactor the routines and use a properly sized default_regs array which matches
the register layout of the underlying chip, i.e. create a truly flat cache.
This also saves some code which should make up for the bigger array a little.
When soc-core will somewhen have another cache type which handles a step size,
this conversion will also ease the transition.

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Tested-by: Dong Aisheng <b29396@freescale.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@kernel.org
2011-08-03 10:21:42 +09:00
..
aoa Revert wrong fixes for common misspellings 2011-04-26 23:31:11 -07:00
arm Merge branch 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6 into for-2.6.39 2011-04-03 19:28:29 +09:00
atmel ALSA: fix invalid hardware.h include in ac97c for AVR32 architecture 2011-01-25 18:07:10 +01:00
core ALSA: core: remove unused variables. 2011-05-26 08:19:04 +02:00
drivers Fix common misspellings 2011-03-31 11:26:23 -03:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 2011-05-23 08:52:38 -07:00
i2c ALSA: tea575x: use better card and bus names 2011-05-13 19:43:24 +02:00
isa Fix common misspellings 2011-03-31 11:26:23 -03:00
mips sound: Add missing spin_unlock 2010-05-27 09:47:02 +02:00
oss SOUND: OSS: Remove Au1550 driver. 2011-05-20 11:33:39 +02:00
parisc
pci ALSA: fix hda AZX_DCAPS_NO_TCSEL quirk check in driver_caps 2011-05-27 19:45:28 -07:00
pcmcia pcmcia: Make struct pcmcia_device_id const, sound drivers edition 2011-05-11 10:48:57 +02:00
ppc Merge branch 'topic/misc' into for-linus 2011-05-22 10:01:29 +02:00
sh sound: sh: ctrl_in/outX to __raw_read/writeX conversion. 2010-10-27 15:53:50 +09:00
soc ASoC: sgtl5000: fix cache handling 2011-08-03 10:21:42 +09:00
sparc dt/sound: Eliminate users of of_platform_{,un}register_driver 2011-02-28 13:22:44 -07:00
spi ALSA: AT73C213: Rectify misleading comment. 2010-11-11 02:03:29 +01:00
synth ALSA: emux: Add trivial compat ioctl handler 2010-09-14 16:18:11 +02:00
usb ALSA: usb-audio: more control quirks for M-Audio FastTrack devices 2011-05-25 09:37:08 +02:00
ac97_bus.c sound: Fixed line limit issue in sound/ac97_bus.c 2010-12-06 16:09:49 +01:00
Kconfig ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver 2011-03-15 08:42:22 +01:00
last.c
Makefile ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver 2011-03-15 08:42:22 +01:00
sound_core.c sound: Use sound_register_*() for additional OSS minor devices 2011-03-09 20:10:37 +01:00
sound_firmware.c sound: read i_size with i_size_read() 2011-03-18 15:14:57 +01:00