diff options
author | Florian Boor <florian.boor@kernelconcepts.de> | 2007-11-08 11:07:58 +0000 |
---|---|---|
committer | Florian Boor <florian.boor@kernelconcepts.de> | 2007-11-08 11:07:58 +0000 |
commit | 1f7343079a1b56e623aba7fdf63946f3dae979e3 (patch) | |
tree | 062776d2316111ee5c72fa1b9de7deb01cdca153 /packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch | |
parent | 47007ab845cf3ff4c9038412df673853e5bde900 (diff) | |
parent | a44ab8fc112a3ded9e4bf4d379243b399e2505a9 (diff) |
merge of '689e57bae9a2678694a0233e81f710e4878928f4'
and 'c2e1d9a66fe20e02ea4226aaff7de2ccde79ffba'
Diffstat (limited to 'packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch')
-rw-r--r-- | packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch b/packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch new file mode 100644 index 0000000000..78e81ea83a --- /dev/null +++ b/packages/linux/linux-rp-2.6.23/wm9712-reset-loop-r2.patch @@ -0,0 +1,44 @@ + sound/soc/codecs/wm9712.c | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +Index: git/sound/soc/codecs/wm9712.c +=================================================================== +--- git.orig/sound/soc/codecs/wm9712.c 2006-11-07 22:10:01.000000000 +0000 ++++ git/sound/soc/codecs/wm9712.c 2006-11-07 22:11:50.000000000 +0000 +@@ -618,18 +618,26 @@ static int wm9712_dapm_event(struct snd_ + + static int wm9712_reset(struct snd_soc_codec *codec, int try_warm) + { +- if (try_warm && soc_ac97_ops.warm_reset) { +- soc_ac97_ops.warm_reset(codec->ac97); +- if (!(ac97_read(codec, 0) & 0x8000)) +- return 1; +- } ++ int retry = 3; + +- soc_ac97_ops.reset(codec->ac97); +- if (ac97_read(codec, 0) & 0x8000) +- goto err; +- return 0; ++ while (retry--) ++ { ++ if(try_warm && soc_ac97_ops.warm_reset) { ++ soc_ac97_ops.warm_reset(codec->ac97); ++ if(ac97_read(codec, 0) & 0x8000) ++ continue; ++ else ++ return 1; ++ } ++ ++ soc_ac97_ops.reset(codec->ac97); ++ if(ac97_read(codec, 0) & 0x8000) ++ continue; ++ else ++ return 0; ++ ++ } + +-err: + printk(KERN_ERR "WM9712 AC97 reset failed\n"); + return -EIO; + } |