[alsa-devel] refreshing the reg cache in asoc driver

Mark Brown broonie at opensource.wolfsonmicro.com
Wed Sep 29 19:52:15 CEST 2010

On Wed, Sep 29, 2010 at 11:43:24AM +0200, lin_g wrote:

> I'm writing the driver for wm8804 s/pdif transceiver. However, my

Note that Dimitrios just posted a driver for this to the list earlier
today, which is also available from opensource.wolfsonmicro.com.  It
would be best to work with this driver.

> problem is that I would like to refresh my register cache inside the
> driver by periodically reading the values stored in device's
> registers. There is an interrupt handler fsi_interrupt() (in fsi.c)
> called when codec receives some data, but I suppose I need to find
> something closer to the 'codec layer'. Or maybe I'm just thinking
> wrongly and there is much simpler way of doing this. Appreciate any
> advice.

The bigger question would be why you want to refresh the register cache
- normally this should not be required.  If you do need to do this it
would be better to trigger the refresh off whatever event causes the
register status in the CODEC to get out of sync.  If there are registers
which report status which does change dynamically normally they
shouldn't be cached at all but should instead be treated as volatile and
read back from the CODEC at all times.

More information about the Alsa-devel mailing list