xref: /openbmc/linux/include/linux/mlx5/mlx5_ifc_fpga.h (revision e29341fb3a5b885a4bb5b9a38f2814ca07d3382c)
1*e29341fbSIlan Tayari /*
2*e29341fbSIlan Tayari  * Copyright (c) 2017, Mellanox Technologies, Ltd.  All rights reserved.
3*e29341fbSIlan Tayari  *
4*e29341fbSIlan Tayari  * This software is available to you under a choice of one of two
5*e29341fbSIlan Tayari  * licenses.  You may choose to be licensed under the terms of the GNU
6*e29341fbSIlan Tayari  * General Public License (GPL) Version 2, available from the file
7*e29341fbSIlan Tayari  * COPYING in the main directory of this source tree, or the
8*e29341fbSIlan Tayari  * OpenIB.org BSD license below:
9*e29341fbSIlan Tayari  *
10*e29341fbSIlan Tayari  *     Redistribution and use in source and binary forms, with or
11*e29341fbSIlan Tayari  *     without modification, are permitted provided that the following
12*e29341fbSIlan Tayari  *     conditions are met:
13*e29341fbSIlan Tayari  *
14*e29341fbSIlan Tayari  *      - Redistributions of source code must retain the above
15*e29341fbSIlan Tayari  *        copyright notice, this list of conditions and the following
16*e29341fbSIlan Tayari  *        disclaimer.
17*e29341fbSIlan Tayari  *
18*e29341fbSIlan Tayari  *      - Redistributions in binary form must reproduce the above
19*e29341fbSIlan Tayari  *        copyright notice, this list of conditions and the following
20*e29341fbSIlan Tayari  *        disclaimer in the documentation and/or other materials
21*e29341fbSIlan Tayari  *        provided with the distribution.
22*e29341fbSIlan Tayari  *
23*e29341fbSIlan Tayari  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24*e29341fbSIlan Tayari  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25*e29341fbSIlan Tayari  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26*e29341fbSIlan Tayari  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27*e29341fbSIlan Tayari  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28*e29341fbSIlan Tayari  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29*e29341fbSIlan Tayari  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30*e29341fbSIlan Tayari  * SOFTWARE.
31*e29341fbSIlan Tayari  */
32*e29341fbSIlan Tayari #ifndef MLX5_IFC_FPGA_H
33*e29341fbSIlan Tayari #define MLX5_IFC_FPGA_H
34*e29341fbSIlan Tayari 
35*e29341fbSIlan Tayari struct mlx5_ifc_fpga_shell_caps_bits {
36*e29341fbSIlan Tayari 	u8         max_num_qps[0x10];
37*e29341fbSIlan Tayari 	u8         reserved_at_10[0x8];
38*e29341fbSIlan Tayari 	u8         total_rcv_credits[0x8];
39*e29341fbSIlan Tayari 
40*e29341fbSIlan Tayari 	u8         reserved_at_20[0xe];
41*e29341fbSIlan Tayari 	u8         qp_type[0x2];
42*e29341fbSIlan Tayari 	u8         reserved_at_30[0x5];
43*e29341fbSIlan Tayari 	u8         rae[0x1];
44*e29341fbSIlan Tayari 	u8         rwe[0x1];
45*e29341fbSIlan Tayari 	u8         rre[0x1];
46*e29341fbSIlan Tayari 	u8         reserved_at_38[0x4];
47*e29341fbSIlan Tayari 	u8         dc[0x1];
48*e29341fbSIlan Tayari 	u8         ud[0x1];
49*e29341fbSIlan Tayari 	u8         uc[0x1];
50*e29341fbSIlan Tayari 	u8         rc[0x1];
51*e29341fbSIlan Tayari 
52*e29341fbSIlan Tayari 	u8         reserved_at_40[0x1a];
53*e29341fbSIlan Tayari 	u8         log_ddr_size[0x6];
54*e29341fbSIlan Tayari 
55*e29341fbSIlan Tayari 	u8         max_fpga_qp_msg_size[0x20];
56*e29341fbSIlan Tayari 
57*e29341fbSIlan Tayari 	u8         reserved_at_80[0x180];
58*e29341fbSIlan Tayari };
59*e29341fbSIlan Tayari 
60*e29341fbSIlan Tayari struct mlx5_ifc_fpga_cap_bits {
61*e29341fbSIlan Tayari 	u8         fpga_id[0x8];
62*e29341fbSIlan Tayari 	u8         fpga_device[0x18];
63*e29341fbSIlan Tayari 
64*e29341fbSIlan Tayari 	u8         register_file_ver[0x20];
65*e29341fbSIlan Tayari 
66*e29341fbSIlan Tayari 	u8         fpga_ctrl_modify[0x1];
67*e29341fbSIlan Tayari 	u8         reserved_at_41[0x5];
68*e29341fbSIlan Tayari 	u8         access_reg_query_mode[0x2];
69*e29341fbSIlan Tayari 	u8         reserved_at_48[0x6];
70*e29341fbSIlan Tayari 	u8         access_reg_modify_mode[0x2];
71*e29341fbSIlan Tayari 	u8         reserved_at_50[0x10];
72*e29341fbSIlan Tayari 
73*e29341fbSIlan Tayari 	u8         reserved_at_60[0x20];
74*e29341fbSIlan Tayari 
75*e29341fbSIlan Tayari 	u8         image_version[0x20];
76*e29341fbSIlan Tayari 
77*e29341fbSIlan Tayari 	u8         image_date[0x20];
78*e29341fbSIlan Tayari 
79*e29341fbSIlan Tayari 	u8         image_time[0x20];
80*e29341fbSIlan Tayari 
81*e29341fbSIlan Tayari 	u8         shell_version[0x20];
82*e29341fbSIlan Tayari 
83*e29341fbSIlan Tayari 	u8         reserved_at_100[0x80];
84*e29341fbSIlan Tayari 
85*e29341fbSIlan Tayari 	struct mlx5_ifc_fpga_shell_caps_bits shell_caps;
86*e29341fbSIlan Tayari 
87*e29341fbSIlan Tayari 	u8         reserved_at_380[0x8];
88*e29341fbSIlan Tayari 	u8         ieee_vendor_id[0x18];
89*e29341fbSIlan Tayari 
90*e29341fbSIlan Tayari 	u8         sandbox_product_version[0x10];
91*e29341fbSIlan Tayari 	u8         sandbox_product_id[0x10];
92*e29341fbSIlan Tayari 
93*e29341fbSIlan Tayari 	u8         sandbox_basic_caps[0x20];
94*e29341fbSIlan Tayari 
95*e29341fbSIlan Tayari 	u8         reserved_at_3e0[0x10];
96*e29341fbSIlan Tayari 	u8         sandbox_extended_caps_len[0x10];
97*e29341fbSIlan Tayari 
98*e29341fbSIlan Tayari 	u8         sandbox_extended_caps_addr[0x40];
99*e29341fbSIlan Tayari 
100*e29341fbSIlan Tayari 	u8         fpga_ddr_start_addr[0x40];
101*e29341fbSIlan Tayari 
102*e29341fbSIlan Tayari 	u8         fpga_cr_space_start_addr[0x40];
103*e29341fbSIlan Tayari 
104*e29341fbSIlan Tayari 	u8         fpga_ddr_size[0x20];
105*e29341fbSIlan Tayari 
106*e29341fbSIlan Tayari 	u8         fpga_cr_space_size[0x20];
107*e29341fbSIlan Tayari 
108*e29341fbSIlan Tayari 	u8         reserved_at_500[0x300];
109*e29341fbSIlan Tayari };
110*e29341fbSIlan Tayari 
111*e29341fbSIlan Tayari struct mlx5_ifc_fpga_ctrl_bits {
112*e29341fbSIlan Tayari 	u8         reserved_at_0[0x8];
113*e29341fbSIlan Tayari 	u8         operation[0x8];
114*e29341fbSIlan Tayari 	u8         reserved_at_10[0x8];
115*e29341fbSIlan Tayari 	u8         status[0x8];
116*e29341fbSIlan Tayari 
117*e29341fbSIlan Tayari 	u8         reserved_at_20[0x8];
118*e29341fbSIlan Tayari 	u8         flash_select_admin[0x8];
119*e29341fbSIlan Tayari 	u8         reserved_at_30[0x8];
120*e29341fbSIlan Tayari 	u8         flash_select_oper[0x8];
121*e29341fbSIlan Tayari 
122*e29341fbSIlan Tayari 	u8         reserved_at_40[0x40];
123*e29341fbSIlan Tayari };
124*e29341fbSIlan Tayari 
125*e29341fbSIlan Tayari enum {
126*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_CORRUPTED_DDR        = 0x1,
127*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_FLASH_TIMEOUT        = 0x2,
128*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_INTERNAL_LINK_ERROR  = 0x3,
129*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_WATCHDOG_FAILURE     = 0x4,
130*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_I2C_FAILURE          = 0x5,
131*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_IMAGE_CHANGED        = 0x6,
132*e29341fbSIlan Tayari 	MLX5_FPGA_ERROR_EVENT_SYNDROME_TEMPERATURE_CRITICAL = 0x7,
133*e29341fbSIlan Tayari };
134*e29341fbSIlan Tayari 
135*e29341fbSIlan Tayari struct mlx5_ifc_fpga_error_event_bits {
136*e29341fbSIlan Tayari 	u8         reserved_at_0[0x40];
137*e29341fbSIlan Tayari 
138*e29341fbSIlan Tayari 	u8         reserved_at_40[0x18];
139*e29341fbSIlan Tayari 	u8         syndrome[0x8];
140*e29341fbSIlan Tayari 
141*e29341fbSIlan Tayari 	u8         reserved_at_60[0x80];
142*e29341fbSIlan Tayari };
143*e29341fbSIlan Tayari 
144*e29341fbSIlan Tayari #endif /* MLX5_IFC_FPGA_H */
145