drivers/net/ethernet/microchip/lan966x/lan966x_regs.h

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/microchip/lan966x/lan966x_regs.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/microchip/lan966x/lan966x_regs.h
Extension
.h
Size
73582 bytes
Lines
1889
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

#ifndef _LAN966X_REGS_H_
#define _LAN966X_REGS_H_

#include <linux/bitfield.h>
#include <linux/types.h>
#include <linux/bug.h>

enum lan966x_target {
	TARGET_AFI = 2,
	TARGET_ANA = 3,
	TARGET_CHIP_TOP = 5,
	TARGET_CPU = 6,
	TARGET_DEV = 13,
	TARGET_FDMA = 21,
	TARGET_GCB = 27,
	TARGET_ORG = 36,
	TARGET_PTP = 41,
	TARGET_QS = 42,
	TARGET_QSYS = 46,
	TARGET_REW = 47,
	TARGET_SYS = 52,
	TARGET_VCAP = 61,
	NUM_TARGETS = 66
};

#define __REG(...)    __VA_ARGS__

/*      AFI:PORT_TBL:PORT_FRM_OUT */
#define AFI_PORT_FRM_OUT(g)       __REG(TARGET_AFI, 0, 1, 98816, g, 10, 8, 0, 0, 1, 4)

#define AFI_PORT_FRM_OUT_FRM_OUT_CNT             GENMASK(26, 16)
#define AFI_PORT_FRM_OUT_FRM_OUT_CNT_SET(x)\
	FIELD_PREP(AFI_PORT_FRM_OUT_FRM_OUT_CNT, x)
#define AFI_PORT_FRM_OUT_FRM_OUT_CNT_GET(x)\
	FIELD_GET(AFI_PORT_FRM_OUT_FRM_OUT_CNT, x)

/*      AFI:PORT_TBL:PORT_CFG */
#define AFI_PORT_CFG(g)           __REG(TARGET_AFI, 0, 1, 98816, g, 10, 8, 4, 0, 1, 4)

#define AFI_PORT_CFG_FC_SKIP_TTI_INJ             BIT(16)
#define AFI_PORT_CFG_FC_SKIP_TTI_INJ_SET(x)\
	FIELD_PREP(AFI_PORT_CFG_FC_SKIP_TTI_INJ, x)
#define AFI_PORT_CFG_FC_SKIP_TTI_INJ_GET(x)\
	FIELD_GET(AFI_PORT_CFG_FC_SKIP_TTI_INJ, x)

#define AFI_PORT_CFG_FRM_OUT_MAX                 GENMASK(9, 0)
#define AFI_PORT_CFG_FRM_OUT_MAX_SET(x)\
	FIELD_PREP(AFI_PORT_CFG_FRM_OUT_MAX, x)
#define AFI_PORT_CFG_FRM_OUT_MAX_GET(x)\
	FIELD_GET(AFI_PORT_CFG_FRM_OUT_MAX, x)

/*      ANA:ANA:ADVLEARN */
#define ANA_ADVLEARN              __REG(TARGET_ANA, 0, 1, 29824, 0, 1, 244, 0, 0, 1, 4)

#define ANA_ADVLEARN_VLAN_CHK                    BIT(0)
#define ANA_ADVLEARN_VLAN_CHK_SET(x)\
	FIELD_PREP(ANA_ADVLEARN_VLAN_CHK, x)
#define ANA_ADVLEARN_VLAN_CHK_GET(x)\
	FIELD_GET(ANA_ADVLEARN_VLAN_CHK, x)

/*      ANA:ANA:VLANMASK */
#define ANA_VLANMASK              __REG(TARGET_ANA, 0, 1, 29824, 0, 1, 244, 8, 0, 1, 4)

/*      ANA:ANA:ANAINTR */
#define ANA_ANAINTR               __REG(TARGET_ANA, 0, 1, 29824, 0, 1, 244, 16, 0, 1, 4)

#define ANA_ANAINTR_INTR                         BIT(1)
#define ANA_ANAINTR_INTR_SET(x)\
	FIELD_PREP(ANA_ANAINTR_INTR, x)
#define ANA_ANAINTR_INTR_GET(x)\
	FIELD_GET(ANA_ANAINTR_INTR, x)

#define ANA_ANAINTR_INTR_ENA                     BIT(0)
#define ANA_ANAINTR_INTR_ENA_SET(x)\
	FIELD_PREP(ANA_ANAINTR_INTR_ENA, x)
#define ANA_ANAINTR_INTR_ENA_GET(x)\
	FIELD_GET(ANA_ANAINTR_INTR_ENA, x)

/*      ANA:ANA:AUTOAGE */
#define ANA_AUTOAGE               __REG(TARGET_ANA, 0, 1, 29824, 0, 1, 244, 44, 0, 1, 4)

#define ANA_AUTOAGE_AGE_PERIOD                   GENMASK(20, 1)
#define ANA_AUTOAGE_AGE_PERIOD_SET(x)\
	FIELD_PREP(ANA_AUTOAGE_AGE_PERIOD, x)
#define ANA_AUTOAGE_AGE_PERIOD_GET(x)\
	FIELD_GET(ANA_AUTOAGE_AGE_PERIOD, x)

/*      ANA:ANA:MIRRORPORTS */
#define ANA_MIRRORPORTS           __REG(TARGET_ANA, 0, 1, 29824, 0, 1, 244, 60, 0, 1, 4)

Annotation

Implementation Notes