Re: ASoC: cs4271: init/timing problem

Pascal Huerst
2015-04-01T15:37:29Z

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.