> 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