On Tue, Nov 17, 2020 at 06:17:36PM +0000, Viorel Suman wrote:
On Tue, Nov 17, 2020 at 12:20:36AM +0200, Viorel Suman (OSS) wrote:
One thing I'm not clear on is if there's some way to ensure that we don't have different instances of the device resetting each other without
them noticing?
Shouldn't be an issue in practice for the use here.
The way to ensure that we don't have different instances of the device resetting each other is to rely on the way the "shared" reset is handled by
reset API:
==========
- ak4458->reset = devm_reset_control_get_optional_shared(ak4458-
dev, NULL);
- if (IS_ERR(ak4458->reset))
return PTR_ERR(ak4458->reset);
==========
Flip side of that then, how do we know when a reset has actually happened?
I don't see how this can be achieved - I'd imagine some "shared" reset framework notification mechanism calling back all "listeners" in the moment the assert/deassert actually happened, there is no such mechanism currently implemented.
In this specific case the GPIO purpose is to just to power on/off all codecs. In my view with this approach it's enough to know that all codecs will be powered on the first _deassert_ call and will be powered off on the last _assert_ call.
/Viorel