8b59472875
HE-HSSI is one of the host exerciser modules in OFS FPGA, which is used to test HSSI (High Speed Serial Interface). This driver initialize the module and report test result. Signed-off-by: Wei Huang <wei.huang@intel.com> Acked-by: Tianfei Zhang <tianfei.zhang@intel.com> Reviewed-by: Rosen Xu <rosen.xu@intel.com>
110 lines
2.3 KiB
C
110 lines
2.3 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef AFU_PMD_HE_HSSI_H
|
|
#define AFU_PMD_HE_HSSI_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "afu_pmd_core.h"
|
|
#include "rte_pmd_afu.h"
|
|
|
|
#define HE_HSSI_UUID_L 0xbb370242ac130002
|
|
#define HE_HSSI_UUID_H 0x823c334c98bf11ea
|
|
#define NUM_HE_HSSI_PORTS 8
|
|
|
|
/* HE-HSSI registers definition */
|
|
#define TRAFFIC_CTRL_CMD 0x30
|
|
#define TRAFFIC_CTRL_DATA 0x38
|
|
#define TRAFFIC_CTRL_CH_SEL 0x40
|
|
#define AFU_SCRATCHPAD 0x48
|
|
|
|
#define TG_NUM_PKT 0x3c00
|
|
#define TG_PKT_LEN_TYPE 0x3c01
|
|
#define TG_DATA_PATTERN 0x3c02
|
|
#define TG_START_XFR 0x3c03
|
|
#define TG_STOP_XFR 0x3c04
|
|
#define TG_SRC_MAC_L 0x3c05
|
|
#define TG_SRC_MAC_H 0x3c06
|
|
#define TG_DST_MAC_L 0x3c07
|
|
#define TG_DST_MAC_H 0x3c08
|
|
#define TG_PKT_XFRD 0x3c09
|
|
#define TG_NUM_RND_SEEDS 3
|
|
#define TG_RANDOM_SEED(n) (0x3c0a + (n))
|
|
#define TG_PKT_LEN 0x3c0d
|
|
|
|
#define TM_NUM_PKT 0x3d00
|
|
#define TM_PKT_GOOD 0x3d01
|
|
#define TM_PKT_BAD 0x3d02
|
|
#define TM_BYTE_CNT0 0x3d03
|
|
#define TM_BYTE_CNT1 0x3d04
|
|
#define TM_AVST_RX_ERR 0x3d07
|
|
#define OVERFLOW_ERR (1 << 9)
|
|
#define LENGTH_ERR (1 << 8)
|
|
#define OVERSIZE_ERR (1 << 7)
|
|
#define UNDERSIZE_ERR (1 << 6)
|
|
#define MAC_CRC_ERR (1 << 5)
|
|
#define PHY_ERR (1 << 4)
|
|
#define ERR_VALID (1 << 3)
|
|
|
|
#define LOOPBACK_EN 0x3e00
|
|
#define LOOPBACK_FIFO_STATUS 0x3e01
|
|
#define ALMOST_EMPTY (1 << 1)
|
|
#define ALMOST_FULL (1 << 0)
|
|
|
|
#define MAILBOX_TIMEOUT_MS 100
|
|
#define MAILBOX_POLL_INTERVAL_MS 10
|
|
|
|
struct traffic_ctrl_cmd {
|
|
union {
|
|
uint64_t csr;
|
|
struct {
|
|
uint32_t read_cmd:1;
|
|
uint32_t write_cmd:1;
|
|
uint32_t ack_trans:1;
|
|
uint32_t rsvd1:29;
|
|
uint32_t afu_cmd_addr:16;
|
|
uint32_t rsvd2:16;
|
|
};
|
|
};
|
|
};
|
|
|
|
struct traffic_ctrl_data {
|
|
union {
|
|
uint64_t csr;
|
|
struct {
|
|
uint32_t read_data;
|
|
uint32_t write_data;
|
|
};
|
|
};
|
|
};
|
|
|
|
struct traffic_ctrl_ch_sel {
|
|
union {
|
|
uint64_t csr;
|
|
struct {
|
|
uint32_t channel_sel:3;
|
|
uint32_t rsvd1:29;
|
|
uint32_t rsvd2;
|
|
};
|
|
};
|
|
};
|
|
|
|
struct he_hssi_ctx {
|
|
uint8_t *addr;
|
|
};
|
|
|
|
struct he_hssi_priv {
|
|
struct rte_pmd_afu_he_hssi_cfg he_hssi_cfg;
|
|
struct he_hssi_ctx he_hssi_ctx;
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* AFU_PMD_HE_HSSI_H */
|