[alsa-devel] [PATCH] ad1838/cs4231 -- fix MCE timeout upon initial load

Krzysztof Helt krzysztof.h1 at gmail.com
Tue Sep 11 10:56:50 CEST 2007


On 9/10/07, Rene Herman <rene.herman at gmail.com> wrote:
> On 09/10/2007 11:40 PM, Krzysztof Helt wrote:
>
> > On Mon, 10 Sep 2007 20:29:21 +0200
> > Rene Herman <rene.herman at gmail.com> wrote:
> >> Thanks to Krysztof Helt for pinpointing this problem.
> >>
> >
> > Please change it to Krzysztof Helt
>
> Oh, very sorry.
>
> >> diff --git a/sound/isa/cs423x/cs4231_lib.c b/sound/isa/cs423x/cs4231_lib.c
> >> index 914d77b..9e8e0f1 100644
> >> --- a/sound/isa/cs423x/cs4231_lib.c
> >> +++ b/sound/isa/cs423x/cs4231_lib.c
> >> @@ -346,16 +346,14 @@ void snd_cs4231_mce_down(struct snd_cs4231 *chip)
> >>      }
> >>      snd_cs4231_busy_wait(chip);
> >>
> >> -    /* calibration process */
> >> -
> >
> > The snd_cs4231_busy_wait(chip) is not needed any more here.
>
> I believe it is. I glanced over the CS4232 datasheet (note how cs4232 uses
> snd-cs4332-lib) and it adds a point 4 (see page 53):
>
> * Wait until 80h NOT returned
>

I think it is not needed to way for it with this 1ms delay.

Anyway, do you care to change this long snd_cs4231_busy_wait(chip) to
the snd_cs4231_wait(chip) used in other functions to wait for ready
bit?

I suppose the comment and code:

 /* huh.. looks like this sequence is proper for CS4231A chip (GUS MAX) */
    for (timeout = 5; timeout > 0; timeout--)
        cs4231_inb(chip, CS4231P(REGSEL));


was needed to fix what we fixed (delay checking bits until they are
set). My aim is to completely eliminate snd_cs4231_busy_wait() and
replace it with just snd_cs4231_wait().

Regards,
Krzysztof


More information about the Alsa-devel mailing list