On Mon, Nov 27, 2017 at 02:48:50PM +0530, Vinod Koul wrote:
On Mon, Nov 27, 2017 at 07:59:40AM +0000, Charles Keepax wrote:
Apologies for the long and slightly vague comment, but I guess my question is do you have a thought on how drivers should know when it is safe to communicate with a SoundWire device?
IMO it is safe to communicate with SoundWire device when the Slave status is ATTACHED. In any case bus will report error if it is not able to communicate with SoundWire device.
Yeah I guess my point here is that there is currently no way in this SoundWire framework for the slave driver to know if the device is attached or not, unless I am missing something? There are calls by which the master can inform the framework, but nothing to pass that on to the slave driver.
Nope, as Sanyog pointed out there are deterministic ways for Slave driver to find out. We can do that by: a) check the slave->status and communicate only if status is SDW_SLAVE_ATTACHED b) Implement sdw_slave_ops->update_status() which is invoked by Bus on any status changes.
So to summarize, for a Slave driver during the probe, if the status is not SDW_SLAVE_ATTACHED it should not communicate and should implement sdw_slave_ops->update_status and attempt IO when this callback gets invoked with SDW_SLAVE_ATTACHED status.
Does that clarify and solve the problem.
Ok apologies looks like this was my bad sorry for missing those. That does indeed seem fine.
Thanks, Charles