[alsa-devel] [PATCH] ASoC: snd_soc_tas5086: Reinit register values on probe

Pascal Huerst pascal.huerst at gmail.com
Wed Mar 25 18:29:15 CET 2015


On 25.03.2015 17:20, Mark Brown wrote:
> On Wed, Mar 25, 2015 at 04:29:39PM +0100, Pascal Huerst wrote:
> 
>> If the machine driver has been un/reloaded, the register values of
>> the codec driver have to be reinitialized in order to run properly.
> 
> Hrm.  This isn't something that I'd expect to be required - I'd expect
> that as part of the machine driver teardown to put the hardware into a
> reasonable default state so that things come back as normal.  Can you be
> a bit more specific about the problem that you are seeing?  We probably
> shouldn't need the existing reset that's in the ASoC level probe either.

The symptom is, that if I rmmod the machine driver and then modprobe it
again. The codec does not play audio at all. I can call aplay without
any problems, but there is no output. My guess was that I have to
rewrite the default values after a reset. May be regmap_reinit_cache()
is the better choice to reinit the register values? Not sure about that.

> I do think a version of this is useful regardless of the above...
> 
>>  	tas5086_reset(priv);
>> +	regcache_mark_dirty(priv->regmap);
> 
> Since the device has hardware reset support we really ought to be able
> to do the register cache resync only if the reset GPIO is missing.  How
> about putting your code into the reset function and doing it in the
> case where the reset GPIO is missing?  That way anything that thinks
> it's resetting the device will get the benefit of your code.

I thing this would not fix the issue. I do have a hardware reset. In
that case my code would not be called at all and I would face the same
issue (no audio output) again.



More information about the Alsa-devel mailing list