diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-09-20 11:34:57 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2007-10-16 10:51:01 -0400 |
commit | 4eb4550ab37d351ab0973ccec921a5a2d8560ec7 (patch) | |
tree | eea37aad55455b8aa78a5f83a2426bff0969e9aa /sound/i2c/cs8427.c | |
parent | ac8842a0391a776dfa8f59cc83582f6feffa913b (diff) |
[ALSA] Workaround for invalid signature read of CS8427
Reading the signature of CS8427 over SPI/I2C fails on some devices
by mysterious reason. In most cases, however, it succeeds at the
sequential read. So, let's give a second chance to check the signature
again.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/i2c/cs8427.c')
-rw-r--r-- | sound/i2c/cs8427.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/i2c/cs8427.c b/sound/i2c/cs8427.c index 64388cb8d6e5..e601caa6ea0b 100644 --- a/sound/i2c/cs8427.c +++ b/sound/i2c/cs8427.c | |||
@@ -229,6 +229,12 @@ int snd_cs8427_create(struct snd_i2c_bus *bus, | |||
229 | snd_i2c_lock(bus); | 229 | snd_i2c_lock(bus); |
230 | err = snd_cs8427_reg_read(device, CS8427_REG_ID_AND_VER); | 230 | err = snd_cs8427_reg_read(device, CS8427_REG_ID_AND_VER); |
231 | if (err != CS8427_VER8427A) { | 231 | if (err != CS8427_VER8427A) { |
232 | /* give second chance */ | ||
233 | snd_printk(KERN_WARNING "invalid CS8427 signature 0x%x: " | ||
234 | "let me try again...\n", err); | ||
235 | err = snd_cs8427_reg_read(device, CS8427_REG_ID_AND_VER); | ||
236 | } | ||
237 | if (err != CS8427_VER8427A) { | ||
232 | snd_i2c_unlock(bus); | 238 | snd_i2c_unlock(bus); |
233 | snd_printk(KERN_ERR "unable to find CS8427 signature " | 239 | snd_printk(KERN_ERR "unable to find CS8427 signature " |
234 | "(expected 0x%x, read 0x%x),\n", | 240 | "(expected 0x%x, read 0x%x),\n", |