[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f956351e-de37-062b-c02e-5cbdf9a3bdfd@linux.intel.com>
Date: Thu, 9 Feb 2023 10:33:50 -0600
From: Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
To: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>,
vkoul@...nel.org
Cc: yung-chuan.liao@...ux.intel.com, alsa-devel@...a-project.org,
linux-kernel@...r.kernel.org, steev@...i.org,
johan+linaro@...nel.org, quic_bjorande@...cinc.com
Subject: Re: [PATCH 3/5] soundwire: qcom: wait for fifo to be empty before
suspend
On 2/9/23 09:52, Srinivas Kandagatla wrote:
>
>
> On 09/02/2023 15:23, Pierre-Louis Bossart wrote:
>>
>>
>> On 2/9/23 07:13, Srinivas Kandagatla wrote:
>>> 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);
mutex_unlock(&bus->msg_lock);
return ret;
}
The transfer_unlocked is synchronous and waits for the command response
to be available.
In other words, there's both a mutual exclusion and a synchronous
behavior, so not sure how commands *before* the bank switch could be
pending?
Powered by blists - more mailing lists