18b594728SWei Huang /* SPDX-License-Identifier: BSD-3-Clause 28b594728SWei Huang * Copyright(c) 2022 Intel Corporation 38b594728SWei Huang */ 48b594728SWei Huang 58b594728SWei Huang #ifndef AFU_PMD_HE_HSSI_H 68b594728SWei Huang #define AFU_PMD_HE_HSSI_H 78b594728SWei Huang 8*719834a6SMattias Rönnblom #include "afu_pmd_core.h" 9*719834a6SMattias Rönnblom #include "rte_pmd_afu.h" 10*719834a6SMattias Rönnblom 118b594728SWei Huang #ifdef __cplusplus 128b594728SWei Huang extern "C" { 138b594728SWei Huang #endif 148b594728SWei Huang 158b594728SWei Huang #define HE_HSSI_UUID_L 0xbb370242ac130002 168b594728SWei Huang #define HE_HSSI_UUID_H 0x823c334c98bf11ea 178b594728SWei Huang #define NUM_HE_HSSI_PORTS 8 188b594728SWei Huang 198b594728SWei Huang /* HE-HSSI registers definition */ 208b594728SWei Huang #define TRAFFIC_CTRL_CMD 0x30 218b594728SWei Huang #define TRAFFIC_CTRL_DATA 0x38 228b594728SWei Huang #define TRAFFIC_CTRL_CH_SEL 0x40 238b594728SWei Huang #define AFU_SCRATCHPAD 0x48 248b594728SWei Huang 258b594728SWei Huang #define TG_NUM_PKT 0x3c00 268b594728SWei Huang #define TG_PKT_LEN_TYPE 0x3c01 278b594728SWei Huang #define TG_DATA_PATTERN 0x3c02 288b594728SWei Huang #define TG_START_XFR 0x3c03 298b594728SWei Huang #define TG_STOP_XFR 0x3c04 308b594728SWei Huang #define TG_SRC_MAC_L 0x3c05 318b594728SWei Huang #define TG_SRC_MAC_H 0x3c06 328b594728SWei Huang #define TG_DST_MAC_L 0x3c07 338b594728SWei Huang #define TG_DST_MAC_H 0x3c08 348b594728SWei Huang #define TG_PKT_XFRD 0x3c09 358b594728SWei Huang #define TG_NUM_RND_SEEDS 3 368b594728SWei Huang #define TG_RANDOM_SEED(n) (0x3c0a + (n)) 378b594728SWei Huang #define TG_PKT_LEN 0x3c0d 388b594728SWei Huang 398b594728SWei Huang #define TM_NUM_PKT 0x3d00 408b594728SWei Huang #define TM_PKT_GOOD 0x3d01 418b594728SWei Huang #define TM_PKT_BAD 0x3d02 428b594728SWei Huang #define TM_BYTE_CNT0 0x3d03 438b594728SWei Huang #define TM_BYTE_CNT1 0x3d04 448b594728SWei Huang #define TM_AVST_RX_ERR 0x3d07 458b594728SWei Huang #define OVERFLOW_ERR (1 << 9) 468b594728SWei Huang #define LENGTH_ERR (1 << 8) 478b594728SWei Huang #define OVERSIZE_ERR (1 << 7) 488b594728SWei Huang #define UNDERSIZE_ERR (1 << 6) 498b594728SWei Huang #define MAC_CRC_ERR (1 << 5) 508b594728SWei Huang #define PHY_ERR (1 << 4) 518b594728SWei Huang #define ERR_VALID (1 << 3) 528b594728SWei Huang 538b594728SWei Huang #define LOOPBACK_EN 0x3e00 548b594728SWei Huang #define LOOPBACK_FIFO_STATUS 0x3e01 558b594728SWei Huang #define ALMOST_EMPTY (1 << 1) 568b594728SWei Huang #define ALMOST_FULL (1 << 0) 578b594728SWei Huang 588b594728SWei Huang #define MAILBOX_TIMEOUT_MS 100 598b594728SWei Huang #define MAILBOX_POLL_INTERVAL_MS 10 608b594728SWei Huang 618b594728SWei Huang struct traffic_ctrl_cmd { 628b594728SWei Huang union { 638b594728SWei Huang uint64_t csr; 648b594728SWei Huang struct { 658b594728SWei Huang uint32_t read_cmd:1; 668b594728SWei Huang uint32_t write_cmd:1; 678b594728SWei Huang uint32_t ack_trans:1; 688b594728SWei Huang uint32_t rsvd1:29; 698b594728SWei Huang uint32_t afu_cmd_addr:16; 708b594728SWei Huang uint32_t rsvd2:16; 718b594728SWei Huang }; 728b594728SWei Huang }; 738b594728SWei Huang }; 748b594728SWei Huang 758b594728SWei Huang struct traffic_ctrl_data { 768b594728SWei Huang union { 778b594728SWei Huang uint64_t csr; 788b594728SWei Huang struct { 798b594728SWei Huang uint32_t read_data; 808b594728SWei Huang uint32_t write_data; 818b594728SWei Huang }; 828b594728SWei Huang }; 838b594728SWei Huang }; 848b594728SWei Huang 858b594728SWei Huang struct traffic_ctrl_ch_sel { 868b594728SWei Huang union { 878b594728SWei Huang uint64_t csr; 888b594728SWei Huang struct { 898b594728SWei Huang uint32_t channel_sel:3; 908b594728SWei Huang uint32_t rsvd1:29; 918b594728SWei Huang uint32_t rsvd2; 928b594728SWei Huang }; 938b594728SWei Huang }; 948b594728SWei Huang }; 958b594728SWei Huang 968b594728SWei Huang struct he_hssi_ctx { 978b594728SWei Huang uint8_t *addr; 988b594728SWei Huang }; 998b594728SWei Huang 1008b594728SWei Huang struct he_hssi_priv { 1018b594728SWei Huang struct rte_pmd_afu_he_hssi_cfg he_hssi_cfg; 1028b594728SWei Huang struct he_hssi_ctx he_hssi_ctx; 1038b594728SWei Huang }; 1048b594728SWei Huang 1058b594728SWei Huang #ifdef __cplusplus 1068b594728SWei Huang } 1078b594728SWei Huang #endif 1088b594728SWei Huang 1098b594728SWei Huang #endif /* AFU_PMD_HE_HSSI_H */ 110