On 01.04.2015 16:47, Austin, Brian wrote:
On Apr 1, 2015, at 5:52 AM, Pascal Huerst pascal.huerst@gmail.com wrote:
Hey Brian,
On 01.04.2015 11:57, Pascal Huerst wrote:
Hey Brian,
On 31.03.2015 23:01, Brian Austin wrote:
On Tue, 31 Mar 2015, Pascal Huerst wrote:
Hey all,
We have a custom built hw, based on am335x and from time to time we need to rmmod/modprobe the ASoC machine driver. Depending on the hw, the first call to regmap_update_bits(..) in cs4271_codec_probe(..) fails with -EREMOTEIO.
The error is originated in:
drivers/i2c/busses/i2c-omap.c
and happens if no i2c package acknowledge is received by the host.
I think this is a timing issue and on some devices, the codec is just not ready yet, for communication.
What is the right way to fix that? My attempt would be something like this:
The error you are referring to is a NACK from a device (CODEC). That is usually seen when you dont have it hooked up correctly. Could also be that the I2C bus is too fast. How fast are you running the bus?
clock-frequency is set to 100000, hence 100 kHz, which should be ok, according to the datasheet.
I just lowered the clock-frequency to 50 kHz and I face the same problem, but it very much depends on the hardware. On some devices I don't face the problem at all and on others I can reproduce it very reliable. If I add a mdelay(20), or use the loop I postet earlier, the issue is gone on all devices.
Are there any other devices on the I2C bus? Lets take this off the ALSA list until there is a determination that it is an ASoC issue which it does not appear to be right now.
Well I think it is. There is a delay needed in sound/soc/codec/cs4271.c at line 569, in certain cases, because the call to regmap_update_bits on line 570 fails sometimes. If I add a delay of a few us on line 569, the call never fails.
But let me just send in a patch so we really know what we are talking about, then.