199100d0dSWei Fang /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ 299100d0dSWei Fang /* 399100d0dSWei Fang * This header file defines the register offsets and bit fields 499100d0dSWei Fang * of ENETC4 PF and VFs. Note that the same registers as ENETC 599100d0dSWei Fang * version 1.0 are defined in the enetc_hw.h file. 699100d0dSWei Fang * 799100d0dSWei Fang * Copyright 2024 NXP 899100d0dSWei Fang */ 999100d0dSWei Fang #ifndef __ENETC4_HW_H_ 1099100d0dSWei Fang #define __ENETC4_HW_H_ 1199100d0dSWei Fang 1299100d0dSWei Fang #define NXP_ENETC_VENDOR_ID 0x1131 1399100d0dSWei Fang #define NXP_ENETC_PF_DEV_ID 0xe101 1499100d0dSWei Fang 1569797ff8SWei Fang /**********************Station interface registers************************/ 1669797ff8SWei Fang /* Station interface LSO segmentation flag mask register 0/1 */ 1769797ff8SWei Fang #define ENETC4_SILSOSFMR0 0x1300 1869797ff8SWei Fang #define SILSOSFMR0_TCP_MID_SEG GENMASK(27, 16) 1969797ff8SWei Fang #define SILSOSFMR0_TCP_1ST_SEG GENMASK(11, 0) 2069797ff8SWei Fang #define SILSOSFMR0_VAL_SET(first, mid) (FIELD_PREP(SILSOSFMR0_TCP_MID_SEG, mid) | \ 2169797ff8SWei Fang FIELD_PREP(SILSOSFMR0_TCP_1ST_SEG, first)) 2269797ff8SWei Fang 2369797ff8SWei Fang #define ENETC4_SILSOSFMR1 0x1304 2469797ff8SWei Fang #define SILSOSFMR1_TCP_LAST_SEG GENMASK(11, 0) 2569797ff8SWei Fang #define ENETC4_TCP_FLAGS_FIN BIT(0) 2669797ff8SWei Fang #define ENETC4_TCP_FLAGS_SYN BIT(1) 2769797ff8SWei Fang #define ENETC4_TCP_FLAGS_RST BIT(2) 2869797ff8SWei Fang #define ENETC4_TCP_FLAGS_PSH BIT(3) 2969797ff8SWei Fang #define ENETC4_TCP_FLAGS_ACK BIT(4) 3069797ff8SWei Fang #define ENETC4_TCP_FLAGS_URG BIT(5) 3169797ff8SWei Fang #define ENETC4_TCP_FLAGS_ECE BIT(6) 3269797ff8SWei Fang #define ENETC4_TCP_FLAGS_CWR BIT(7) 3369797ff8SWei Fang #define ENETC4_TCP_FLAGS_NS BIT(8) 3469797ff8SWei Fang /* According to tso_build_hdr(), clear all special flags for not last packet. */ 3569797ff8SWei Fang #define ENETC4_TCP_NL_SEG_FLAGS_DMASK (ENETC4_TCP_FLAGS_FIN | \ 3669797ff8SWei Fang ENETC4_TCP_FLAGS_RST | ENETC4_TCP_FLAGS_PSH) 3769797ff8SWei Fang 3899100d0dSWei Fang /***************************ENETC port registers**************************/ 3999100d0dSWei Fang #define ENETC4_ECAPR0 0x0 4099100d0dSWei Fang #define ECAPR0_RFS BIT(2) 4199100d0dSWei Fang #define ECAPR0_TSD BIT(5) 4299100d0dSWei Fang #define ECAPR0_RSS BIT(8) 4399100d0dSWei Fang #define ECAPR0_RSC BIT(9) 4499100d0dSWei Fang #define ECAPR0_LSO BIT(10) 4599100d0dSWei Fang #define ECAPR0_WO BIT(13) 4699100d0dSWei Fang 4799100d0dSWei Fang #define ENETC4_ECAPR1 0x4 4899100d0dSWei Fang #define ECAPR1_NUM_TCS GENMASK(6, 4) 4999100d0dSWei Fang #define ECAPR1_NUM_MCH GENMASK(9, 8) 5099100d0dSWei Fang #define ECAPR1_NUM_UCH GENMASK(11, 10) 5199100d0dSWei Fang #define ECAPR1_NUM_MSIX GENMASK(22, 12) 5299100d0dSWei Fang #define ECAPR1_NUM_VSI GENMASK(27, 24) 5399100d0dSWei Fang #define ECAPR1_NUM_IPV BIT(31) 5499100d0dSWei Fang 5599100d0dSWei Fang #define ENETC4_ECAPR2 0x8 5699100d0dSWei Fang #define ECAPR2_NUM_TX_BDR GENMASK(9, 0) 5799100d0dSWei Fang #define ECAPR2_NUM_RX_BDR GENMASK(25, 16) 5899100d0dSWei Fang 5999100d0dSWei Fang #define ENETC4_PMR 0x10 6099100d0dSWei Fang #define PMR_SI_EN(a) BIT((16 + (a))) 6199100d0dSWei Fang 6299100d0dSWei Fang /* Port Pause ON/OFF threshold register */ 6399100d0dSWei Fang #define ENETC4_PPAUONTR 0x108 6499100d0dSWei Fang #define ENETC4_PPAUOFFTR 0x10c 6599100d0dSWei Fang 6699100d0dSWei Fang /* Port Station interface promiscuous MAC mode register */ 6799100d0dSWei Fang #define ENETC4_PSIPMMR 0x200 6899100d0dSWei Fang #define PSIPMMR_SI_MAC_UP(a) BIT(a) /* a = SI index */ 6999100d0dSWei Fang #define PSIPMMR_SI_MAC_MP(a) BIT((a) + 16) 7099100d0dSWei Fang 7199100d0dSWei Fang /* Port Station interface promiscuous VLAN mode register */ 7299100d0dSWei Fang #define ENETC4_PSIPVMR 0x204 7399100d0dSWei Fang 7499100d0dSWei Fang /* Port RSS key register n. n = 0,1,2,...,9 */ 7599100d0dSWei Fang #define ENETC4_PRSSKR(n) ((n) * 0x4 + 0x250) 7699100d0dSWei Fang 7799100d0dSWei Fang /* Port station interface MAC address filtering capability register */ 7899100d0dSWei Fang #define ENETC4_PSIMAFCAPR 0x280 7999100d0dSWei Fang #define PSIMAFCAPR_NUM_MAC_AFTE GENMASK(11, 0) 8099100d0dSWei Fang 8199100d0dSWei Fang /* Port station interface VLAN filtering capability register */ 8299100d0dSWei Fang #define ENETC4_PSIVLANFCAPR 0x2c0 8399100d0dSWei Fang #define PSIVLANFCAPR_NUM_VLAN_FTE GENMASK(11, 0) 8499100d0dSWei Fang 8599100d0dSWei Fang /* Port station interface VLAN filtering mode register */ 8699100d0dSWei Fang #define ENETC4_PSIVLANFMR 0x2c4 8799100d0dSWei Fang #define PSIVLANFMR_VS BIT(0) 8899100d0dSWei Fang 8999100d0dSWei Fang /* Port Station interface a primary MAC address registers */ 9099100d0dSWei Fang #define ENETC4_PSIPMAR0(a) ((a) * 0x80 + 0x2000) 9199100d0dSWei Fang #define ENETC4_PSIPMAR1(a) ((a) * 0x80 + 0x2004) 9299100d0dSWei Fang 9399100d0dSWei Fang /* Port station interface a configuration register 0/2 */ 9499100d0dSWei Fang #define ENETC4_PSICFGR0(a) ((a) * 0x80 + 0x2010) 9599100d0dSWei Fang #define PSICFGR0_VASE BIT(13) 9699100d0dSWei Fang #define PSICFGR0_ASE BIT(15) 9799100d0dSWei Fang #define PSICFGR0_ANTI_SPOOFING (PSICFGR0_VASE | PSICFGR0_ASE) 9899100d0dSWei Fang 9999100d0dSWei Fang #define ENETC4_PSICFGR2(a) ((a) * 0x80 + 0x2018) 10099100d0dSWei Fang #define PSICFGR2_NUM_MSIX GENMASK(5, 0) 10199100d0dSWei Fang 1026c5bafbaSWei Fang /* Port station interface a unicast MAC hash filter register 0/1 */ 1036c5bafbaSWei Fang #define ENETC4_PSIUMHFR0(a) ((a) * 0x80 + 0x2050) 1046c5bafbaSWei Fang #define ENETC4_PSIUMHFR1(a) ((a) * 0x80 + 0x2054) 1056c5bafbaSWei Fang 1066c5bafbaSWei Fang /* Port station interface a multicast MAC hash filter register 0/1 */ 1076c5bafbaSWei Fang #define ENETC4_PSIMMHFR0(a) ((a) * 0x80 + 0x2058) 1086c5bafbaSWei Fang #define ENETC4_PSIMMHFR1(a) ((a) * 0x80 + 0x205c) 1096c5bafbaSWei Fang 110*f7d30ef6SWei Fang /* Port station interface a VLAN hash filter register 0/1 */ 111*f7d30ef6SWei Fang #define ENETC4_PSIVHFR0(a) ((a) * 0x80 + 0x2060) 112*f7d30ef6SWei Fang #define ENETC4_PSIVHFR1(a) ((a) * 0x80 + 0x2064) 113*f7d30ef6SWei Fang 11499100d0dSWei Fang #define ENETC4_PMCAPR 0x4004 11599100d0dSWei Fang #define PMCAPR_HD BIT(8) 11699100d0dSWei Fang #define PMCAPR_FP GENMASK(10, 9) 11799100d0dSWei Fang 11899100d0dSWei Fang /* Port configuration register */ 11999100d0dSWei Fang #define ENETC4_PCR 0x4010 12099100d0dSWei Fang #define PCR_HDR_FMT BIT(0) 12199100d0dSWei Fang #define PCR_L2DOSE BIT(4) 12299100d0dSWei Fang #define PCR_TIMER_CS BIT(8) 12399100d0dSWei Fang #define PCR_PSPEED GENMASK(29, 16) 12499100d0dSWei Fang #define PCR_PSPEED_VAL(speed) (((speed) / 10 - 1) << 16) 12599100d0dSWei Fang 12699100d0dSWei Fang /* Port MAC address register 0/1 */ 12799100d0dSWei Fang #define ENETC4_PMAR0 0x4020 12899100d0dSWei Fang #define ENETC4_PMAR1 0x4024 12999100d0dSWei Fang 13099100d0dSWei Fang /* Port operational register */ 13199100d0dSWei Fang #define ENETC4_POR 0x4100 13299100d0dSWei Fang 13399100d0dSWei Fang /* Port traffic class a transmit maximum SDU register */ 13499100d0dSWei Fang #define ENETC4_PTCTMSDUR(a) ((a) * 0x20 + 0x4208) 13599100d0dSWei Fang #define PTCTMSDUR_MAXSDU GENMASK(15, 0) 13699100d0dSWei Fang #define PTCTMSDUR_SDU_TYPE GENMASK(17, 16) 13799100d0dSWei Fang #define SDU_TYPE_PPDU 0 13899100d0dSWei Fang #define SDU_TYPE_MPDU 1 13999100d0dSWei Fang #define SDU_TYPE_MSDU 2 14099100d0dSWei Fang 14199100d0dSWei Fang #define ENETC4_PMAC_OFFSET 0x400 14299100d0dSWei Fang #define ENETC4_PM_CMD_CFG(mac) (0x5008 + (mac) * 0x400) 14399100d0dSWei Fang #define PM_CMD_CFG_TX_EN BIT(0) 14499100d0dSWei Fang #define PM_CMD_CFG_RX_EN BIT(1) 14599100d0dSWei Fang #define PM_CMD_CFG_PAUSE_FWD BIT(7) 14699100d0dSWei Fang #define PM_CMD_CFG_PAUSE_IGN BIT(8) 14799100d0dSWei Fang #define PM_CMD_CFG_TX_ADDR_INS BIT(9) 14899100d0dSWei Fang #define PM_CMD_CFG_LOOP_EN BIT(10) 14999100d0dSWei Fang #define PM_CMD_CFG_LPBK_MODE GENMASK(12, 11) 15099100d0dSWei Fang #define LPBCK_MODE_EXT_TX_CLK 0 15199100d0dSWei Fang #define LPBCK_MODE_MAC_LEVEL 1 15299100d0dSWei Fang #define LPBCK_MODE_INT_TX_CLK 2 15399100d0dSWei Fang #define PM_CMD_CFG_CNT_FRM_EN BIT(13) 15499100d0dSWei Fang #define PM_CMD_CFG_TXP BIT(15) 15599100d0dSWei Fang #define PM_CMD_CFG_SEND_IDLE BIT(16) 15699100d0dSWei Fang #define PM_CMD_CFG_HD_FCEN BIT(18) 15799100d0dSWei Fang #define PM_CMD_CFG_SFD BIT(21) 15899100d0dSWei Fang #define PM_CMD_CFG_TX_FLUSH BIT(22) 15999100d0dSWei Fang #define PM_CMD_CFG_TX_LOWP_EN BIT(23) 16099100d0dSWei Fang #define PM_CMD_CFG_RX_LOWP_EMPTY BIT(24) 16199100d0dSWei Fang #define PM_CMD_CFG_SWR BIT(26) 16299100d0dSWei Fang #define PM_CMD_CFG_TS_MODE BIT(30) 16399100d0dSWei Fang #define PM_CMD_CFG_MG BIT(31) 16499100d0dSWei Fang 16599100d0dSWei Fang /* Port MAC 0/1 Maximum Frame Length Register */ 16699100d0dSWei Fang #define ENETC4_PM_MAXFRM(mac) (0x5014 + (mac) * 0x400) 16799100d0dSWei Fang 16899100d0dSWei Fang /* Port MAC 0/1 Pause Quanta Register */ 16999100d0dSWei Fang #define ENETC4_PM_PAUSE_QUANTA(mac) (0x5054 + (mac) * 0x400) 17099100d0dSWei Fang 17199100d0dSWei Fang /* Port MAC 0/1 Pause Quanta Threshold Register */ 17299100d0dSWei Fang #define ENETC4_PM_PAUSE_THRESH(mac) (0x5064 + (mac) * 0x400) 17399100d0dSWei Fang 17499100d0dSWei Fang /* Port MAC 0 Interface Mode Control Register */ 17599100d0dSWei Fang #define ENETC4_PM_IF_MODE(mac) (0x5300 + (mac) * 0x400) 17699100d0dSWei Fang #define PM_IF_MODE_IFMODE GENMASK(2, 0) 17799100d0dSWei Fang #define IFMODE_XGMII 0 17899100d0dSWei Fang #define IFMODE_RMII 3 17999100d0dSWei Fang #define IFMODE_RGMII 4 18099100d0dSWei Fang #define IFMODE_SGMII 5 18199100d0dSWei Fang #define PM_IF_MODE_REVMII BIT(3) 18299100d0dSWei Fang #define PM_IF_MODE_M10 BIT(4) 18399100d0dSWei Fang #define PM_IF_MODE_HD BIT(6) 18499100d0dSWei Fang #define PM_IF_MODE_SSP GENMASK(14, 13) 18599100d0dSWei Fang #define SSP_100M 0 18699100d0dSWei Fang #define SSP_10M 1 18799100d0dSWei Fang #define SSP_1G 2 18899100d0dSWei Fang #define PM_IF_MODE_ENA BIT(15) 18999100d0dSWei Fang 19099100d0dSWei Fang #endif 191