net/mlx5: FPGA, Add SBU infrastructure
Add interface to initialize and interact with Innova FPGA SBU connections. A client driver may use these functions to set up a high-speed DMA connection with its SBU hardware logic, and send/receive messages over this connection. A later patch in this patchset will make use of these functions for Innova IPSec offload in mlx5 Ethernet driver. Add commands to retrieve Innova FPGA SBU capabilities, and to read/write Innova FPGA configuration space registers and memory, over internal I2C. At high level, the FPGA configuration space is divided such: 0x00000000 - 0x007fffff is reserved for the SBU 0x00800000 - 0xffffffff is reserved for the Shell 0x400000000 - ... is DDR memory A later patchset will add support for accessing FPGA CrSpace and memory over a high-speed connection. This is the reason for the ACCESS_TYPE enumeration, which currently only supports I2C. Signed-off-by: Ilan Tayari <ilant@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:

committed by
Saeed Mahameed

parent
c43051d72a
commit
a9956d35d1
@@ -1103,6 +1103,9 @@ enum mlx5_mcam_feature_groups {
|
||||
#define MLX5_CAP_FPGA(mdev, cap) \
|
||||
MLX5_GET(fpga_cap, (mdev)->caps.hca_cur[MLX5_CAP_FPGA], cap)
|
||||
|
||||
#define MLX5_CAP64_FPGA(mdev, cap) \
|
||||
MLX5_GET64(fpga_cap, (mdev)->caps.hca_cur[MLX5_CAP_FPGA], cap)
|
||||
|
||||
enum {
|
||||
MLX5_CMD_STAT_OK = 0x0,
|
||||
MLX5_CMD_STAT_INT_ERR = 0x1,
|
||||
|
@@ -111,6 +111,7 @@ enum {
|
||||
MLX5_REG_DCBX_APP = 0x4021,
|
||||
MLX5_REG_FPGA_CAP = 0x4022,
|
||||
MLX5_REG_FPGA_CTRL = 0x4023,
|
||||
MLX5_REG_FPGA_ACCESS_REG = 0x4024,
|
||||
MLX5_REG_PCAP = 0x5001,
|
||||
MLX5_REG_PMTU = 0x5003,
|
||||
MLX5_REG_PTYS = 0x5004,
|
||||
|
@@ -8309,6 +8309,7 @@ union mlx5_ifc_ports_control_registers_document_bits {
|
||||
struct mlx5_ifc_sltp_reg_bits sltp_reg;
|
||||
struct mlx5_ifc_mtpps_reg_bits mtpps_reg;
|
||||
struct mlx5_ifc_mtppse_reg_bits mtppse_reg;
|
||||
struct mlx5_ifc_fpga_access_reg_bits fpga_access_reg;
|
||||
struct mlx5_ifc_fpga_ctrl_bits fpga_ctrl_bits;
|
||||
struct mlx5_ifc_fpga_cap_bits fpga_cap_bits;
|
||||
struct mlx5_ifc_mcqi_reg_bits mcqi_reg;
|
||||
|
@@ -150,6 +150,19 @@ struct mlx5_ifc_fpga_error_event_bits {
|
||||
u8 reserved_at_60[0x80];
|
||||
};
|
||||
|
||||
#define MLX5_FPGA_ACCESS_REG_SIZE_MAX 64
|
||||
|
||||
struct mlx5_ifc_fpga_access_reg_bits {
|
||||
u8 reserved_at_0[0x20];
|
||||
|
||||
u8 reserved_at_20[0x10];
|
||||
u8 size[0x10];
|
||||
|
||||
u8 address[0x40];
|
||||
|
||||
u8 data[0][0x8];
|
||||
};
|
||||
|
||||
enum mlx5_ifc_fpga_qp_state {
|
||||
MLX5_FPGA_QPC_STATE_INIT = 0x0,
|
||||
MLX5_FPGA_QPC_STATE_ACTIVE = 0x1,
|
||||
|
Reference in New Issue
Block a user