On Mon, Feb 24, 2014 at 11:31:25AM +0000, Opensource [Adam Thomson] wrote:
On Mon, 24 Feb 2014 03:01:37 +0000, Mark Brown wrote:
but since the registers are marked as volatile and there is a register
Guessing that should read 'not marked as volatile'.
Yes.
Having looked over the driver again, can you include the following registers as well:
DA732X_REG_HPL DA732X_REG_HPR
I did notice those. However they are a bit more fun since they have some non-volatile fields in them which are also used for control. I *suspect* that a lot of the time it'll be possible to get away with just caching the first read but it needs further study - often with these things the basic offset is constant in a given system so the sign may well be right all the time. That's just a guess, though, and may not actually hold at which point a bit more attention might be needed.
Also, if we're doing this then you can move to using snd_soc_read() instead of hw_read(), I guess.
Indeed, in fact it was while doing an audit of drivers to kill off direct users of hw_read() that I noticed what was happening here.