firmware: arm_scmi: Add support for asynchronous commands and delayed response
authorSudeep Holla <sudeep.holla@arm.com>
Mon, 8 Jul 2019 08:40:54 +0000 (09:40 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Mon, 12 Aug 2019 11:23:00 +0000 (12:23 +0100)
commit58ecdf03dbb9ce8f130bc1ac63fcd8f4d72f9c06
treec4bd0c268e3f726830e116a889d0097aa5235339
parent22d1f76109f74b716a5f4d46bade61f544f40f81
firmware: arm_scmi: Add support for asynchronous commands and delayed response

Messages that are sent to platform, also known as commands and can be:

1. Synchronous commands that block the channel until the requested work
has been completed. The platform responds to these commands over the
same channel and hence can't be used to send another command until the
previous command has completed.

2. Asynchronous commands on the other hand, the platform schedules the
requested work to complete later in time and returns almost immediately
freeing the channel for new commands. The response indicates the success
or failure in the ability to schedule the requested work. When the work
has completed, the platform sends an additional delayed response message.

Using the same transmit buffer used for sending the asynchronous command
even for the delayed response corresponding to it simplifies handling of
the delayed response. It's the caller of asynchronous command that is
responsible for allocating the completion flag that scmi driver can
complete to indicate the arrival of delayed response.

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/common.h
drivers/firmware/arm_scmi/driver.c