Re: ASoC: cs4271: init/timing problem

Pascal Huerst
2015-04-02T07:56:50Z

On 01.04.2015 19:08, Brian Austin wrote:
>>>> 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.
>>
> can you try something like this?
>
> gpio_direction_output(cs4271->gpio_nreset, 0);
> -udelay(1);
> gpio_set_value(cs4271->gpio_nreset, 1);
> /* Give the codec time to wake up */
> -udelay(1);
>
> gpio_direction_output(cs4271->gpio_nreset, 0);
> +mdelay(1);
> gpio_set_value(cs4271->gpio_nreset, 1);
> /* Give the codec time to wake up */
> +mdelay(1);
>
> See if that helps instead of adding another delay.

Works perfect for me. Tested on different devices without any problems.
If you agree on that, I'll send in a patch.