1 /* 2 * SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 * SPDX-License-Identifier: MIT 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24 #ifndef _CCI_CMIS_H_ 25 #define _CCI_CMIS_H_ 26 27 // Based on CMIS 4.0/5.0 specification 28 29 // Page 0h 30 #define CMIS_REV_BYTE 1 31 #define CMIS_REV_BYTE_WHOLE 7:4 32 #define CMIS_REV_BYTE_DECIMAL 3:0 33 #define CMIS_CHARACTERISTICS_BYTE 2 34 #define CMIS_CHARACTERISTICS_BYTE_FLAT_MEM 7:7 35 #define CMIS_MODULE_FLAGS_CUSTOM_BYTE 13 36 #define CMIS_OSFP_TEMPERATURE_BYTE 14 37 #define CMIS_CDB_BLOCK_STATUS_BYTE(block) ((block) + 37) 38 #define CMIS_CDB_BLOCK_STATUS_BYTE_BUSY 7:7 39 #define CMIS_CDB_BLOCK_STATUS_BYTE_BUSY_FALSE 0 40 #define CMIS_CDB_BLOCK_STATUS_BYTE_BUSY_TRUE 1 41 #define CMIS_ACTIVE_FW_MAJOR_REVISION 39 42 #define CMIS_ACTIVE_FW_MINOR_REVISION 40 43 #define CMIS_BANK_PAGE 126 44 #define CMIS_MIT_BYTE 212 45 #define CMIS_CHECKSUM_BYTE 222 46 #define CMIS_CHECKSUM_LENGTH 94 47 48 // Media Interface Technology Table 49 #define CMIS_MIT_BYTE_COPPER 0xA 50 #define CMIS_MIT_BYTE_COPPER_UNEQUALIZED 0xA 51 #define CMIS_MIT_BYTE_COPPER_PASSIVE_EQUALIZED 0xB 52 #define CMIS_MIT_BYTE_COPPER_NEAR_FAR_END_LIMITING_ACTIVE_EQUALIZED 0xC 53 #define CMIS_MIT_BYTE_COPPER_FAR_END_LIMITING_ACTIVE_EQUALIZED 0xD 54 #define CMIS_MIT_BYTE_COPPER_NEAR_END_LIMITING_ACTIVE_EQUALIZED 0xE 55 #define CMIS_MIT_BYTE_COPPER_LINEAR_ACTIVE_EQUALIZED 0xF 56 #define CMIS_MIT_BYTE_RESERVED 0x10 57 58 // Page 01h 59 #define CMIS_SI_CONTROLS 161 60 #define CMIS_SI_CONTROLS_CDR_IMPLEMENTED 0:0 61 #define CMIS_DATA_PATH_MAX_DURATION_BYTE 144 62 #define CMIS_DATA_PATH_MAX_DURATION_BYTE_DEINIT 7:4 63 #define CMIS_DATA_PATH_MAX_DURATION_BYTE_INIT 3:0 64 #define CMIS_MODULE_POWER_MAX_DURATION_BYTE 167 65 #define CMIS_MODULE_POWER_MAX_DURATION_BYTE_DOWN 7:4 66 #define CMIS_MODULE_POWER_MAX_DURATION_BYTE_UP 3:0 67 #define CMIS_DATA_PATH_TX_MAX_DURATION_BYTE 168 68 #define CMIS_DATA_PATH_TX_MAX_DURATION_BYTE_OFF 7:4 69 #define CMIS_DATA_PATH_TX_MAX_DURATION_BYTE_ON 3:0 70 71 // Page 02h 72 #define CMIS_OSFP_OVERT_LIMIT_BYTE 128 73 #define CMIS_OSFP_WARN_LIMIT_BYTE 132 74 75 76 // 77 // CMIS 4.0: Table 8-29 State Duration Encoding 78 // Stores time in ms 79 // Times > 60s will be considered errors 80 // 81 static const NvU64 dur_en_map[] = {1, 5, 10, 50, 82 100, 500, 1000, 5*1000, 83 10*1000, 60*1000, 0, 0, 84 0, 0, 0, 0}; 85 #define CMIS_MAX_DURATION_EN_TO_MS_MAP(en) (dur_en_map[en]) 86 87 // Page 10h 88 #define CMIS_DATA_PATH_CONTROL_BYTE 128 89 #define CMIS_STAGE_CONTROL_SET_0 143 90 #define CMIS_STAGE_CONTROL_SET_0_SIZE 35 91 #define CMIS_STAGE_CONTROL_SET_0_APP_SEL 145 92 93 // Page 11h 94 #define CMIS_DATA_PATH_STATE 128 95 // Used to determine which byte(128-131) encodes given lane's datapath state 96 #define CMIS_DATA_PATH_STATE_LANE_BYTE_MAP(lane) (lane/2) 97 #define CMIS_DATA_PATH_STATE_SIZE 4 98 #define CMIS_DATA_PATH_STATE_BYTE_LANE_0 3:0 99 #define CMIS_DATA_PATH_STATE_BYTE_LANE_1 7:4 100 #define CMIS_DATA_PATH_CONFIG_ERROR_CODES 202 101 #define CMIS_ACTIVE_CONTROL_SET 206 102 #define CMIS_ACTIVE_CONTROL_SET_SIZE 29 103 104 // Datapath states 105 #define CMIS_DATA_PATH_STATE_LANE_DEACTIVATED 0x1 106 #define CMIS_DATA_PATH_CONFIG_ALL_LANES_ACCEPTED 0x11111111 107 108 // CDB command payload size 109 #define CMIS_CDB_LPL_MAX_SIZE 120 110 111 // 112 // CMIS 4.0: Table 9-16 CDB Command 0100h: Get firmware Info 113 // Index of information in LPL 114 // 115 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS 0 116 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_A_RUNNING 0:0 117 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_A_COMMITTED 1:1 118 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_A_EMPTY 2:2 119 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_B_RUNNING 4:4 120 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_B_COMMITTED 5:5 121 #define CMIS_CDB_GET_FW_INFO_LPL_FW_STATUS_FLAGS_IMAGE_B_EMPTY 6:6 122 #define CMIS_CDB_GET_FW_INFO_LPL_INFO_BLOCK 1 123 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_MAJOR_BYTE 2 124 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_MINOR_BYTE 3 125 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_BUILD 4 126 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_BUILD_SIZE 2 127 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_EXTRA_STRING 6 128 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_A_EXTRA_STRING_SIZE 32 129 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_MAJOR_BYTE 38 130 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_MINOR_BYTE 39 131 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_BUILD 40 132 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_BUILD_SIZE 2 133 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_EXTRA_STRING 42 134 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_B_EXTRA_STRING_SIZE 32 135 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_MAJOR_BYTE 74 136 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_MINOR_BYTE 75 137 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_BUILD 76 138 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_BUILD_SIZE 2 139 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_EXTRA_STRING 78 140 #define CMIS_CDB_GET_FW_INFO_LPL_IMAGE_FACTORY_BOOT_EXTRA_STRING_SIZE 32 141 142 #endif //_CCI_CMIS_H_ 143