Skip to content

Commit f919ccc

Browse files
HoratiuVulturPaolo Abeni
authored andcommitted
net: lan966x: add vcap registers
Add registers used to access vcap controller. Signed-off-by: Horatiu Vultur <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 39bedc1 commit f919ccc

File tree

2 files changed

+199
-0
lines changed

2 files changed

+199
-0
lines changed

drivers/net/ethernet/microchip/lan966x/lan966x_main.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ static const struct lan966x_main_io_resource lan966x_main_iomap[] = {
4747
{ TARGET_PTP, 0xc000, 1 }, /* 0xe200c000 */
4848
{ TARGET_CHIP_TOP, 0x10000, 1 }, /* 0xe2010000 */
4949
{ TARGET_REW, 0x14000, 1 }, /* 0xe2014000 */
50+
{ TARGET_VCAP, 0x18000, 1 }, /* 0xe2018000 */
51+
{ TARGET_VCAP + 1, 0x20000, 1 }, /* 0xe2020000 */
52+
{ TARGET_VCAP + 2, 0x24000, 1 }, /* 0xe2024000 */
5053
{ TARGET_SYS, 0x28000, 1 }, /* 0xe2028000 */
5154
{ TARGET_DEV, 0x34000, 1 }, /* 0xe2034000 */
5255
{ TARGET_DEV + 1, 0x38000, 1 }, /* 0xe2038000 */

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

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ enum lan966x_target {
2525
TARGET_QSYS = 46,
2626
TARGET_REW = 47,
2727
TARGET_SYS = 52,
28+
TARGET_VCAP = 61,
2829
NUM_TARGETS = 66
2930
};
3031

@@ -315,6 +316,69 @@ enum lan966x_target {
315316
#define ANA_DROP_CFG_DROP_MC_SMAC_ENA_GET(x)\
316317
FIELD_GET(ANA_DROP_CFG_DROP_MC_SMAC_ENA, x)
317318

319+
/* ANA:PORT:VCAP_S2_CFG */
320+
#define ANA_VCAP_S2_CFG(g) __REG(TARGET_ANA, 0, 1, 28672, g, 9, 128, 28, 0, 1, 4)
321+
322+
#define ANA_VCAP_S2_CFG_ISDX_ENA GENMASK(20, 19)
323+
#define ANA_VCAP_S2_CFG_ISDX_ENA_SET(x)\
324+
FIELD_PREP(ANA_VCAP_S2_CFG_ISDX_ENA, x)
325+
#define ANA_VCAP_S2_CFG_ISDX_ENA_GET(x)\
326+
FIELD_GET(ANA_VCAP_S2_CFG_ISDX_ENA, x)
327+
328+
#define ANA_VCAP_S2_CFG_UDP_PAYLOAD_ENA GENMASK(18, 17)
329+
#define ANA_VCAP_S2_CFG_UDP_PAYLOAD_ENA_SET(x)\
330+
FIELD_PREP(ANA_VCAP_S2_CFG_UDP_PAYLOAD_ENA, x)
331+
#define ANA_VCAP_S2_CFG_UDP_PAYLOAD_ENA_GET(x)\
332+
FIELD_GET(ANA_VCAP_S2_CFG_UDP_PAYLOAD_ENA, x)
333+
334+
#define ANA_VCAP_S2_CFG_ETYPE_PAYLOAD_ENA GENMASK(16, 15)
335+
#define ANA_VCAP_S2_CFG_ETYPE_PAYLOAD_ENA_SET(x)\
336+
FIELD_PREP(ANA_VCAP_S2_CFG_ETYPE_PAYLOAD_ENA, x)
337+
#define ANA_VCAP_S2_CFG_ETYPE_PAYLOAD_ENA_GET(x)\
338+
FIELD_GET(ANA_VCAP_S2_CFG_ETYPE_PAYLOAD_ENA, x)
339+
340+
#define ANA_VCAP_S2_CFG_ENA BIT(14)
341+
#define ANA_VCAP_S2_CFG_ENA_SET(x)\
342+
FIELD_PREP(ANA_VCAP_S2_CFG_ENA, x)
343+
#define ANA_VCAP_S2_CFG_ENA_GET(x)\
344+
FIELD_GET(ANA_VCAP_S2_CFG_ENA, x)
345+
346+
#define ANA_VCAP_S2_CFG_SNAP_DIS GENMASK(13, 12)
347+
#define ANA_VCAP_S2_CFG_SNAP_DIS_SET(x)\
348+
FIELD_PREP(ANA_VCAP_S2_CFG_SNAP_DIS, x)
349+
#define ANA_VCAP_S2_CFG_SNAP_DIS_GET(x)\
350+
FIELD_GET(ANA_VCAP_S2_CFG_SNAP_DIS, x)
351+
352+
#define ANA_VCAP_S2_CFG_ARP_DIS GENMASK(11, 10)
353+
#define ANA_VCAP_S2_CFG_ARP_DIS_SET(x)\
354+
FIELD_PREP(ANA_VCAP_S2_CFG_ARP_DIS, x)
355+
#define ANA_VCAP_S2_CFG_ARP_DIS_GET(x)\
356+
FIELD_GET(ANA_VCAP_S2_CFG_ARP_DIS, x)
357+
358+
#define ANA_VCAP_S2_CFG_IP_TCPUDP_DIS GENMASK(9, 8)
359+
#define ANA_VCAP_S2_CFG_IP_TCPUDP_DIS_SET(x)\
360+
FIELD_PREP(ANA_VCAP_S2_CFG_IP_TCPUDP_DIS, x)
361+
#define ANA_VCAP_S2_CFG_IP_TCPUDP_DIS_GET(x)\
362+
FIELD_GET(ANA_VCAP_S2_CFG_IP_TCPUDP_DIS, x)
363+
364+
#define ANA_VCAP_S2_CFG_IP_OTHER_DIS GENMASK(7, 6)
365+
#define ANA_VCAP_S2_CFG_IP_OTHER_DIS_SET(x)\
366+
FIELD_PREP(ANA_VCAP_S2_CFG_IP_OTHER_DIS, x)
367+
#define ANA_VCAP_S2_CFG_IP_OTHER_DIS_GET(x)\
368+
FIELD_GET(ANA_VCAP_S2_CFG_IP_OTHER_DIS, x)
369+
370+
#define ANA_VCAP_S2_CFG_IP6_CFG GENMASK(5, 2)
371+
#define ANA_VCAP_S2_CFG_IP6_CFG_SET(x)\
372+
FIELD_PREP(ANA_VCAP_S2_CFG_IP6_CFG, x)
373+
#define ANA_VCAP_S2_CFG_IP6_CFG_GET(x)\
374+
FIELD_GET(ANA_VCAP_S2_CFG_IP6_CFG, x)
375+
376+
#define ANA_VCAP_S2_CFG_OAM_DIS GENMASK(1, 0)
377+
#define ANA_VCAP_S2_CFG_OAM_DIS_SET(x)\
378+
FIELD_PREP(ANA_VCAP_S2_CFG_OAM_DIS, x)
379+
#define ANA_VCAP_S2_CFG_OAM_DIS_GET(x)\
380+
FIELD_GET(ANA_VCAP_S2_CFG_OAM_DIS, x)
381+
318382
/* ANA:PORT:CPU_FWD_CFG */
319383
#define ANA_CPU_FWD_CFG(g) __REG(TARGET_ANA, 0, 1, 28672, g, 9, 128, 96, 0, 1, 4)
320384

@@ -1506,4 +1570,136 @@ enum lan966x_target {
15061570
#define SYS_RAM_INIT_RAM_INIT_GET(x)\
15071571
FIELD_GET(SYS_RAM_INIT_RAM_INIT, x)
15081572

1573+
/* VCAP:VCAP_CORE_CFG:VCAP_UPDATE_CTRL */
1574+
#define VCAP_UPDATE_CTRL(t) __REG(TARGET_VCAP, t, 3, 0, 0, 1, 8, 0, 0, 1, 4)
1575+
1576+
#define VCAP_UPDATE_CTRL_UPDATE_CMD GENMASK(24, 22)
1577+
#define VCAP_UPDATE_CTRL_UPDATE_CMD_SET(x)\
1578+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_CMD, x)
1579+
#define VCAP_UPDATE_CTRL_UPDATE_CMD_GET(x)\
1580+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_CMD, x)
1581+
1582+
#define VCAP_UPDATE_CTRL_UPDATE_ENTRY_DIS BIT(21)
1583+
#define VCAP_UPDATE_CTRL_UPDATE_ENTRY_DIS_SET(x)\
1584+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_ENTRY_DIS, x)
1585+
#define VCAP_UPDATE_CTRL_UPDATE_ENTRY_DIS_GET(x)\
1586+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_ENTRY_DIS, x)
1587+
1588+
#define VCAP_UPDATE_CTRL_UPDATE_ACTION_DIS BIT(20)
1589+
#define VCAP_UPDATE_CTRL_UPDATE_ACTION_DIS_SET(x)\
1590+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_ACTION_DIS, x)
1591+
#define VCAP_UPDATE_CTRL_UPDATE_ACTION_DIS_GET(x)\
1592+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_ACTION_DIS, x)
1593+
1594+
#define VCAP_UPDATE_CTRL_UPDATE_CNT_DIS BIT(19)
1595+
#define VCAP_UPDATE_CTRL_UPDATE_CNT_DIS_SET(x)\
1596+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_CNT_DIS, x)
1597+
#define VCAP_UPDATE_CTRL_UPDATE_CNT_DIS_GET(x)\
1598+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_CNT_DIS, x)
1599+
1600+
#define VCAP_UPDATE_CTRL_UPDATE_ADDR GENMASK(18, 3)
1601+
#define VCAP_UPDATE_CTRL_UPDATE_ADDR_SET(x)\
1602+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_ADDR, x)
1603+
#define VCAP_UPDATE_CTRL_UPDATE_ADDR_GET(x)\
1604+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_ADDR, x)
1605+
1606+
#define VCAP_UPDATE_CTRL_UPDATE_SHOT BIT(2)
1607+
#define VCAP_UPDATE_CTRL_UPDATE_SHOT_SET(x)\
1608+
FIELD_PREP(VCAP_UPDATE_CTRL_UPDATE_SHOT, x)
1609+
#define VCAP_UPDATE_CTRL_UPDATE_SHOT_GET(x)\
1610+
FIELD_GET(VCAP_UPDATE_CTRL_UPDATE_SHOT, x)
1611+
1612+
#define VCAP_UPDATE_CTRL_CLEAR_CACHE BIT(1)
1613+
#define VCAP_UPDATE_CTRL_CLEAR_CACHE_SET(x)\
1614+
FIELD_PREP(VCAP_UPDATE_CTRL_CLEAR_CACHE, x)
1615+
#define VCAP_UPDATE_CTRL_CLEAR_CACHE_GET(x)\
1616+
FIELD_GET(VCAP_UPDATE_CTRL_CLEAR_CACHE, x)
1617+
1618+
#define VCAP_UPDATE_CTRL_MV_TRAFFIC_IGN BIT(0)
1619+
#define VCAP_UPDATE_CTRL_MV_TRAFFIC_IGN_SET(x)\
1620+
FIELD_PREP(VCAP_UPDATE_CTRL_MV_TRAFFIC_IGN, x)
1621+
#define VCAP_UPDATE_CTRL_MV_TRAFFIC_IGN_GET(x)\
1622+
FIELD_GET(VCAP_UPDATE_CTRL_MV_TRAFFIC_IGN, x)
1623+
1624+
/* VCAP:VCAP_CORE_CFG:VCAP_MV_CFG */
1625+
#define VCAP_MV_CFG(t) __REG(TARGET_VCAP, t, 3, 0, 0, 1, 8, 4, 0, 1, 4)
1626+
1627+
#define VCAP_MV_CFG_MV_NUM_POS GENMASK(31, 16)
1628+
#define VCAP_MV_CFG_MV_NUM_POS_SET(x)\
1629+
FIELD_PREP(VCAP_MV_CFG_MV_NUM_POS, x)
1630+
#define VCAP_MV_CFG_MV_NUM_POS_GET(x)\
1631+
FIELD_GET(VCAP_MV_CFG_MV_NUM_POS, x)
1632+
1633+
#define VCAP_MV_CFG_MV_SIZE GENMASK(15, 0)
1634+
#define VCAP_MV_CFG_MV_SIZE_SET(x)\
1635+
FIELD_PREP(VCAP_MV_CFG_MV_SIZE, x)
1636+
#define VCAP_MV_CFG_MV_SIZE_GET(x)\
1637+
FIELD_GET(VCAP_MV_CFG_MV_SIZE, x)
1638+
1639+
/* VCAP:VCAP_CORE_CACHE:VCAP_ENTRY_DAT */
1640+
#define VCAP_ENTRY_DAT(t, r) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 0, r, 64, 4)
1641+
1642+
/* VCAP:VCAP_CORE_CACHE:VCAP_MASK_DAT */
1643+
#define VCAP_MASK_DAT(t, r) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 256, r, 64, 4)
1644+
1645+
/* VCAP:VCAP_CORE_CACHE:VCAP_ACTION_DAT */
1646+
#define VCAP_ACTION_DAT(t, r) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 512, r, 64, 4)
1647+
1648+
/* VCAP:VCAP_CORE_CACHE:VCAP_CNT_DAT */
1649+
#define VCAP_CNT_DAT(t, r) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 768, r, 32, 4)
1650+
1651+
/* VCAP:VCAP_CORE_CACHE:VCAP_CNT_FW_DAT */
1652+
#define VCAP_CNT_FW_DAT(t) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 896, 0, 1, 4)
1653+
1654+
/* VCAP:VCAP_CORE_CACHE:VCAP_TG_DAT */
1655+
#define VCAP_TG_DAT(t) __REG(TARGET_VCAP, t, 3, 8, 0, 1, 904, 900, 0, 1, 4)
1656+
1657+
/* VCAP:VCAP_CORE_MAP:VCAP_CORE_IDX */
1658+
#define VCAP_CORE_IDX(t) __REG(TARGET_VCAP, t, 3, 912, 0, 1, 8, 0, 0, 1, 4)
1659+
1660+
#define VCAP_CORE_IDX_CORE_IDX GENMASK(3, 0)
1661+
#define VCAP_CORE_IDX_CORE_IDX_SET(x)\
1662+
FIELD_PREP(VCAP_CORE_IDX_CORE_IDX, x)
1663+
#define VCAP_CORE_IDX_CORE_IDX_GET(x)\
1664+
FIELD_GET(VCAP_CORE_IDX_CORE_IDX, x)
1665+
1666+
/* VCAP:VCAP_CORE_MAP:VCAP_CORE_MAP */
1667+
#define VCAP_CORE_MAP(t) __REG(TARGET_VCAP, t, 3, 912, 0, 1, 8, 4, 0, 1, 4)
1668+
1669+
#define VCAP_CORE_MAP_CORE_MAP GENMASK(2, 0)
1670+
#define VCAP_CORE_MAP_CORE_MAP_SET(x)\
1671+
FIELD_PREP(VCAP_CORE_MAP_CORE_MAP, x)
1672+
#define VCAP_CORE_MAP_CORE_MAP_GET(x)\
1673+
FIELD_GET(VCAP_CORE_MAP_CORE_MAP, x)
1674+
1675+
/* VCAP:VCAP_CONST:VCAP_VER */
1676+
#define VCAP_VER(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 0, 0, 1, 4)
1677+
1678+
/* VCAP:VCAP_CONST:ENTRY_WIDTH */
1679+
#define VCAP_ENTRY_WIDTH(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 4, 0, 1, 4)
1680+
1681+
/* VCAP:VCAP_CONST:ENTRY_CNT */
1682+
#define VCAP_ENTRY_CNT(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 8, 0, 1, 4)
1683+
1684+
/* VCAP:VCAP_CONST:ENTRY_SWCNT */
1685+
#define VCAP_ENTRY_SWCNT(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 12, 0, 1, 4)
1686+
1687+
/* VCAP:VCAP_CONST:ENTRY_TG_WIDTH */
1688+
#define VCAP_ENTRY_TG_WIDTH(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 16, 0, 1, 4)
1689+
1690+
/* VCAP:VCAP_CONST:ACTION_DEF_CNT */
1691+
#define VCAP_ACTION_DEF_CNT(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 20, 0, 1, 4)
1692+
1693+
/* VCAP:VCAP_CONST:ACTION_WIDTH */
1694+
#define VCAP_ACTION_WIDTH(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 24, 0, 1, 4)
1695+
1696+
/* VCAP:VCAP_CONST:CNT_WIDTH */
1697+
#define VCAP_CNT_WIDTH(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 28, 0, 1, 4)
1698+
1699+
/* VCAP:VCAP_CONST:CORE_CNT */
1700+
#define VCAP_CORE_CNT(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 32, 0, 1, 4)
1701+
1702+
/* VCAP:VCAP_CONST:IF_CNT */
1703+
#define VCAP_IF_CNT(t) __REG(TARGET_VCAP, t, 3, 924, 0, 1, 40, 36, 0, 1, 4)
1704+
15091705
#endif /* _LAN966X_REGS_H_ */

0 commit comments

Comments
 (0)