Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a7975cf8 authored by Skylar Chang's avatar Skylar Chang
Browse files

msm: gsi: add support for NOP xfers



To allow more efficient event ring completion, a NOP (No Operation)
transfer is introduced. The client can use this new descriptor type to
aggregate completion to transfer for TO_GSI based on some timer. When
client sends a NOP transfer to GSI with IEOT (End of transfer indication),
GSI will generate an event when this NOP descriptor was processed.

Change-Id: I3a47bef5c02fec5c63bb8c3e7e4fe8b44fa6986e
CRs-Fixed: 2022853
Acked-by: default avatarAdy Abraham <adya@qti.qualcomm.com>
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent 8568eb9e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2360,6 +2360,8 @@ int gsi_queue_xfer(unsigned long chan_hdl, uint16_t num_xfers,
			tre.re_type = GSI_RE_XFER;
		} else if (xfer[i].type == GSI_XFER_ELEM_IMME_CMD) {
			tre.re_type = GSI_RE_IMMD_CMD;
		} else if (xfer[i].type == GSI_XFER_ELEM_NOP) {
			tre.re_type = GSI_RE_NOP;
		} else {
			GSIERR("chan_hdl=%lu bad RE type=%u\n", chan_hdl,
				xfer[i].type);
+1 −0
Original line number Diff line number Diff line
@@ -209,6 +209,7 @@ struct gsi_ctx {
enum gsi_re_type {
	GSI_RE_XFER = 0x2,
	GSI_RE_IMMD_CMD = 0x3,
	GSI_RE_NOP = 0x4,
};

struct __packed gsi_tre {
+2 −0
Original line number Diff line number Diff line
@@ -367,6 +367,7 @@ enum gsi_xfer_flag {
enum gsi_xfer_elem_type {
	GSI_XFER_ELEM_DATA,
	GSI_XFER_ELEM_IMME_CMD,
	GSI_XFER_ELEM_NOP,
};

/**
@@ -409,6 +410,7 @@ enum gsi_xfer_elem_type {
 *
 *		    GSI_XFER_ELEM_DATA: for all data transfers
 *		    GSI_XFER_ELEM_IMME_CMD: for IPA immediate commands
 *		    GSI_XFER_ELEM_NOP: for event generation only
 *
 * @xfer_user_data: cookie used in xfer_cb
 *