On Tue, May 13, 2014 at 01:45:15PM +0100, Charles Keepax wrote:
The register CLASS_D_CONTROL_1 is marked as volatile because it contains a bit, DAC_MUTE, which is also mirrored in the ADC_DAC_CONTROL_1 register. This causes problems for the "Speaker Switch" control, which will report an error if the CODEC is suspended because it relies on a volatile register.
To resolve this issue mark CLASS_D_CONTROL_1 as non-volatile and manually keep the register cache in sync by updating both bits when changing the mute status.
Reported-by: Shawn Guo shawn.guo@linaro.org Signed-off-by: Charles Keepax ckeepax@opensource.wolfsonmicro.com
Hi Shawn,
I am afraid I don't have access to hardware for 8962 at the moment, so have only build tested this, but I believe it should fix your issue.
Yes, it fixes my issue. Thanks, Charles.
Tested-by: Shawn Guo shawn.guo@linaro.org