>>>>> 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?