linux-mips
[Top] [All Lists]

Re: Trouble with sound/mips/au1x00.c AC97 driver

To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: Trouble with sound/mips/au1x00.c AC97 driver
From: Ralf Baechle <ralf@linux-mips.org>
Date: Tue, 13 Mar 2007 00:43:15 +0000
Cc: Marco Braga <marco.braga@gmail.com>, Domen Puncer <domen.puncer@telargo.com>, linux-mips@linux-mips.org
In-reply-to: <45F57328.8000606@ru.mvista.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20070307104930.GD25248@dusktilldawn.nl> <d459bb380703082322r18879381ma4c57149a8b7adfe@mail.gmail.com> <45F350E9.3020208@cooper-street.com> <d459bb380703120157wb3dde00p4c232e300e82fd3d@mail.gmail.com> <d459bb380703120259r53889966xd8af623ff01ef297@mail.gmail.com> <20070312103927.GC14658@moe.telargo.com> <d459bb380703120609i7d3a9e1dwf7f4fa431a9631e5@mail.gmail.com> <45F57328.8000606@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.2i
On Mon, Mar 12, 2007 at 06:35:04PM +0300, Sergei Shtylyov wrote:

> >>It might be ignorance on my part, but aren't au_sync()'s needed here?
> 
> >My ignorance too.. What's au_sync()? Something to writeback/invalidate the
> >cache?
> 
>    It's "memory barrier" (SYNC instruction).

For the general MIPS case (Alchemy may provide guarantees I don't know of)
a SYNC instruction is not sufficient to ensure that a write has actually
been reached by the device.  It may just like on PCI take a read from the
same device again:

   au1000->ac97_ioport->config = AC97C_SG | AC97C_SYNC;
   au1000->ac97_ioport->config;
   udelay(100);
   au1000->ac97_ioport->config = 0x0;

to ensure that all preceding write have actually made it.  That also means
that any use of the SYNC instruction may well be just an attempt to paper
over a bug.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>