drivers/net/ethernet/netronome/nfp/nfp_asm.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/netronome/nfp/nfp_asm.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/netronome/nfp/nfp_asm.h
Extension
.h
Size
11185 bytes
Lines
438
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct cmd_tgt_act {
	u8 token;
	u8 tgt_cmd;
};

enum cmd_tgt_map {
	CMD_TGT_READ8,
	CMD_TGT_WRITE8_SWAP,
	CMD_TGT_WRITE32_SWAP,
	CMD_TGT_READ32,
	CMD_TGT_READ32_LE,
	CMD_TGT_READ32_SWAP,
	CMD_TGT_READ_LE,
	CMD_TGT_READ_SWAP_LE,
	CMD_TGT_ADD,
	CMD_TGT_ADD_IMM,
	__CMD_TGT_MAP_SIZE,
};

extern const struct cmd_tgt_act cmd_tgt_act[__CMD_TGT_MAP_SIZE];

enum cmd_mode {
	CMD_MODE_40b_AB	= 0,
	CMD_MODE_40b_BA	= 1,
	CMD_MODE_32b	= 4,
};

enum cmd_ctx_swap {
	CMD_CTX_SWAP = 0,
	CMD_CTX_SWAP_DEFER1 = 1,
	CMD_CTX_SWAP_DEFER2 = 2,
	CMD_CTX_NO_SWAP = 3,
};

#define CMD_OVE_DATA	GENMASK(5, 3)
#define CMD_OVE_LEN	BIT(7)
#define CMD_OV_LEN	GENMASK(12, 8)

#define OP_LCSR_BASE		0x0fc00000000ULL
#define OP_LCSR_A_SRC		0x000000003ffULL
#define OP_LCSR_B_SRC		0x000000ffc00ULL
#define OP_LCSR_WRITE		0x00000200000ULL
#define OP_LCSR_ADDR		0x001ffc00000ULL
#define OP_LCSR_SRC_LMEXTN	0x40000000000ULL
#define OP_LCSR_DST_LMEXTN	0x80000000000ULL

enum lcsr_wr_src {
	LCSR_WR_AREG,
	LCSR_WR_BREG,
	LCSR_WR_IMM,
};

#define OP_CARB_BASE		0x0e000000000ULL
#define OP_CARB_OR		0x00000010000ULL

#define NFP_CSR_CTX_PTR		0x20
#define NFP_CSR_ACT_LM_ADDR0	0x64
#define NFP_CSR_ACT_LM_ADDR1	0x6c
#define NFP_CSR_ACT_LM_ADDR2	0x94
#define NFP_CSR_ACT_LM_ADDR3	0x9c
#define NFP_CSR_PSEUDO_RND_NUM	0x148

/* Software register representation, independent of operand type */
#define NN_REG_TYPE	GENMASK(31, 24)
#define NN_REG_LM_IDX	GENMASK(23, 22)
#define NN_REG_LM_IDX_HI	BIT(23)
#define NN_REG_LM_IDX_LO	BIT(22)
#define NN_REG_LM_MOD	GENMASK(21, 20)
#define NN_REG_VAL	GENMASK(7, 0)

enum nfp_bpf_reg_type {
	NN_REG_GPR_A =	BIT(0),
	NN_REG_GPR_B =	BIT(1),
	NN_REG_GPR_BOTH = NN_REG_GPR_A | NN_REG_GPR_B,
	NN_REG_NNR =	BIT(2),
	NN_REG_XFER =	BIT(3),
	NN_REG_IMM =	BIT(4),
	NN_REG_NONE =	BIT(5),
	NN_REG_LMEM =	BIT(6),
};

enum nfp_bpf_lm_mode {
	NN_LM_MOD_NONE = 0,
	NN_LM_MOD_INC,
	NN_LM_MOD_DEC,
};

#define reg_both(x)	__enc_swreg((x), NN_REG_GPR_BOTH)
#define reg_a(x)	__enc_swreg((x), NN_REG_GPR_A)
#define reg_b(x)	__enc_swreg((x), NN_REG_GPR_B)

Annotation

Implementation Notes