OSDN Git Service

soc: qcom: ipa: GSI transactions
authorAlex Elder <elder@linaro.org>
Fri, 6 Mar 2020 04:28:23 +0000 (22:28 -0600)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Mar 2020 05:07:10 +0000 (22:07 -0700)
commit9dd441e4ed5755c2a74c206bd9bc50a431b1689b
tree687681876d6de6d6490dbc4fc39718a30c8be6a7
parentc3f398b141a8d80e502d36ad56102608f3031aa3
soc: qcom: ipa: GSI transactions

This patch implements GSI transactions.  A GSI transaction is a
structure that represents a single request (consisting of one or
more TREs) sent to the GSI hardware.  The last TRE in a transaction
includes a flag requesting that the GSI interrupt the AP to notify
that it has completed.

TREs are executed and completed strictly in order.  For this reason,
the completion of a single TRE implies that all previous TREs (in
particular all of those "earlier" in a transaction) have completed.

Whenever there is a need to send a request (a set of TREs) to the
IPA, a GSI transaction is allocated, specifying the number of TREs
that will be required.  Details of the request (e.g. transfer offsets
and length) are represented by in a Linux scatterlist array that is
incorporated in the transaction structure.

Once all commands (TREs) are added to a transaction it is committed.
When the hardware signals that the request has completed, a callback
function allows for cleanup or followup activity to be performed
before the transaction is freed.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipa/gsi_trans.c [new file with mode: 0644]
drivers/net/ipa/gsi_trans.h [new file with mode: 0644]