Wait for Fifo to be empty before going to suspend or before bank switch happens. Just to make sure that all the reads/writes are done.
For the suspend case that seems like a valid approach, but for bank switch don't we already have a bus->msg_lock mutex that will prevent the bank switch command from being sent before the other commands are handled?
All read/writes are fifo based, so writes could be still pending.
I am not following. The bank switch happens with this function, where a mutex is taken.
int sdw_transfer(struct sdw_bus *bus, struct sdw_msg *msg) { int ret;
mutex_lock(&bus->msg_lock);
ret = sdw_transfer_unlocked(bus, msg);
Qualcomm controller uses fifo to read/write, so return after writing to fifo might not always indicate that write is completed.
Qcom Soundwire controller do not have any synchronous interrupt mechanism to indicate write complete.
Ack, I forgot that one. Might be worth a comment or reworded commit message?