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