On 05/10/2014 11:12 AM, Shawn Guo wrote:
On Sat, May 10, 2014 at 10:37:28AM +0200, Lars-Peter Clausen wrote:
On 05/10/2014 10:31 AM, Shawn Guo wrote:
On Sat, May 10, 2014 at 09:11:04AM +0200, Lars-Peter Clausen wrote:
On 05/10/2014 09:04 AM, Lars-Peter Clausen wrote: [..]
The error message only shows up with Debian wheezy and does not with yocto rootfs. And even when the error message shows, the audio still functions well on Debian wheezy. So it's just a noisy error message for me which is only seen after your kernel patch.
The keyword here is "seen". The error quite likely predated the commit, but it was silently discarded.
regmap_read() returns -EBUSY when there is no cached register value and cache_only is set to true. But I'm not sure why that would happen, try to add some printks to _regmap_read() to see if this is the source and if it is why it is.
Both SGTL5000_CHIP_ANA_ADC_CTRL and SGTL5000_CHIP_MIC_CTRL don't have an entry in sgtl5000_reg_defaults. So if cache_only is true, controls which use these registers will return -EBUSY when you try to read or write them.
Hmm, it's a wm8962 than sgtl5000 on board imx6q-sabresd.
Ok, misread the boardname. But the issue will be the same. cache_only = true and trying to read/update a register that is not in the cache.
Yea, you're right. When the error message shows up, _regmap_read() returns -EBUSY for reg WM8962_CLASS_D_CONTROL_1. But how do I find out why the reg is not in the cache?
The register is marked as volatile in the driver and volatile registers are never cached. I don't know what the right fix is in this case though.
- Lars