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

Commit 48f5a37e authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ath10k: Add ce gather support for WCN3990 target"

parents 1c2725e7 701c8c36
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -298,10 +298,22 @@ int ath10k_ce_send_nolock(struct ath10k_ce_pipe *ce_state,

	if (flags & CE_SEND_FLAG_GATHER)
		desc_flags |= CE_DESC_FLAGS_GATHER;

	if (flags & CE_SEND_FLAG_BYTE_SWAP)
		desc_flags |= CE_DESC_FLAGS_BYTE_SWAP;

	if (QCA_REV_WCN3990(ar)) {
		flags |= upper_32_bits(buffer) & CE_DESC_FLAGS_GET_MASK;
		sdesc.addr_lo = __cpu_to_le32(buffer);
		sdesc.addr_hi = flags;
		if (flags & CE_SEND_FLAG_GATHER)
			sdesc.addr_hi |= CE_WCN3990_DESC_FLAGS_GATHER;
		else
			sdesc.addr_hi &= ~CE_WCN3990_DESC_FLAGS_GATHER;
	} else {
		sdesc.addr   = __cpu_to_le32(buffer);
	}

	sdesc.nbytes = __cpu_to_le16(nbytes);
	sdesc.flags  = __cpu_to_le16(desc_flags);

@@ -410,7 +422,13 @@ int __ath10k_ce_rx_post_buf(struct ath10k_ce_pipe *pipe, void *ctx,
	    CE_RING_DELTA(nentries_mask, write_index, sw_index - 1) == 0)
		return -ENOSPC;

	if (QCA_REV_WCN3990(ar)) {
		desc->addr = paddr;
		desc->addr &= CE_DESC_37BIT_ADDR_MASK;
	} else {
		desc->addr = __cpu_to_le32(paddr);
	}

	desc->nbytes = 0;

	dest_ring->per_transfer_context[write_index] = ctx;
+11 −1
Original line number Diff line number Diff line
@@ -38,6 +38,10 @@ struct ath10k_ce_pipe;

#define CE_DESC_FLAGS_GATHER         (1 << 0)
#define CE_DESC_FLAGS_BYTE_SWAP      (1 << 1)
#define CE_WCN3990_DESC_FLAGS_GATHER BIT(31)

#define CE_DESC_FLAGS_GET_MASK		0x1F
#define CE_DESC_37BIT_ADDR_MASK		0x1FFFFFFFFF

/* Following desc flags are used in QCA99X0 */
#define CE_DESC_FLAGS_HOST_INT_DIS	(1 << 2)
@@ -54,7 +58,13 @@ struct ce_desc {
};
#else
struct ce_desc {
	union {
		__le64 addr;
		struct {
			__le32 addr_lo;
			__le32 addr_hi;
		};
	};
	u16 nbytes; /* length in register map */
	u16 flags; /* fw_metadata_high */
	u32 toeplitz_hash_result;