/*- * Copyright (c) 2026 Netflix Inc. * * SPDX-License-Identifier: BSD-2-Clause */ /* * The following set of constants are from the OIF Common Management * Interface Specification (CMIS) revision 5.3, September 2024. * * CMIS defines a 256-byte addressable memory with lower (0-127) and * upper (128-255) regions. Lower memory is always accessible. * Upper memory is paged via byte 127 (page select) and byte 126 * (bank select). * * All values are read across an I2C bus at address 0xA0. */ #ifndef _NET_CMIS_H_ #define _NET_CMIS_H_ #define CMIS_BASE 0xA0 /* Base I2C address for all requests */ /* CMIS Module Types (SFF-8024 Identifier, byte 0) */ #define CMIS_ID_QSFP_DD 0x18 /* QSFP-DD */ #define CMIS_ID_QSFP8X 0x19 /* QSFP 8X (OSFP) */ #define CMIS_ID_SFP_DD 0x1A /* SFP-DD */ #define CMIS_ID_DSFP 0x1B /* DSFP */ #define CMIS_ID_QSFP_CMIS 0x1E /* QSFP+ with CMIS */ /* Table 8-4: Lower Memory Map (bytes 0x00-0x7F) */ enum { /* Table 8-5: Management Characteristics (bytes 0-2) */ CMIS_ID = 0, /* SFF-8024 Identifier */ CMIS_REV = 1, /* CMIS revision (major.minor) */ CMIS_MODULE_TYPE = 2, /* Memory model, config options */ /* Table 8-6: Global Status (byte 3) */ CMIS_MODULE_STATE = 3, /* Module state, interrupt status */ /* Table 8-8: Flags Summary (bytes 4-7) */ CMIS_FLAGS_BANK0 = 4, /* Flags summary, bank 0 */ CMIS_FLAGS_BANK1 = 5, /* Flags summary, bank 1 */ CMIS_FLAGS_BANK2 = 6, /* Flags summary, bank 2 */ CMIS_FLAGS_BANK3 = 7, /* Flags summary, bank 3 */ /* Table 8-9: Module-Level Flags (bytes 8-13) */ CMIS_MOD_FLAGS_START = 8, /* Module firmware/state flags */ CMIS_MOD_FLAGS_TEMP_VCC = 9, /* Temp/VCC alarm/warning flags */ CMIS_MOD_FLAGS_AUX = 10, /* Aux monitor alarm/warning flags */ CMIS_MOD_FLAGS_CUSTOM = 11, /* Custom/Aux3 monitor flags */ CMIS_MOD_FLAGS_RSVD = 12, /* Reserved */ CMIS_MOD_FLAGS_VENDOR = 13, /* Custom module-level flags */ /* Table 8-10: Module-Level Monitor Values (bytes 14-25) */ CMIS_TEMP = 14, /* S16 Temperature (1/256 deg C) */ CMIS_VCC = 16, /* U16 Supply Voltage (100 uV) */ CMIS_AUX1 = 18, /* S16 Aux1 Monitor */ CMIS_AUX2 = 20, /* S16 Aux2 Monitor */ CMIS_AUX3 = 22, /* S16 Aux3 Monitor */ CMIS_CUSTOM_MON = 24, /* S16/U16 Custom Monitor */ /* Table 8-11: Module Global Controls (bytes 26-30) */ CMIS_MOD_CTRL = 26, /* Global control bits */ CMIS_MOD_CTRL2 = 27, /* Global control bits (cont.) */ CMIS_MOD_CTRL3 = 28, /* Global control bits (cont.) */ CMIS_MOD_CTRL4 = 29, /* Global control bits (cont.) */ CMIS_MOD_CTRL5 = 30, /* Global control bits (cont.) */ /* Table 8-12: Module Level Masks (bytes 31-36) */ CMIS_MOD_MASKS_START = 31, /* Module-level masks start */ CMIS_MOD_MASKS_END = 36, /* Module-level masks end */ /* Table 8-13: CDB Command Status (bytes 37-38) */ CMIS_CDB_STATUS1 = 37, /* CDB instance 1 status */ CMIS_CDB_STATUS2 = 38, /* CDB instance 2 status */ /* Table 8-15: Module Active Firmware Version (bytes 39-40) */ CMIS_FW_VER_MAJOR = 39, /* Active firmware major version */ CMIS_FW_VER_MINOR = 40, /* Active firmware minor version */ /* Table 8-16: Fault Information (byte 41) */ CMIS_FAULT_CAUSE = 41, /* Fault cause for ModuleFault */ /* Table 8-17: Miscellaneous Status (bytes 42-45) */ CMIS_MISC_STATUS_START = 42, /* Password status, etc. */ CMIS_MISC_STATUS_END = 45, /* Table 8-18: Extended Module Information (bytes 56-63) */ CMIS_EXT_MOD_INFO_START = 56, CMIS_EXT_MOD_INFO_END = 63, /* Table 8-21: Media Type (byte 85) */ CMIS_MEDIA_TYPE = 85, /* MediaType encoding */ /* Table 8-23: Application Descriptors (bytes 86-117) */ CMIS_APP_DESC_START = 86, /* First Application Descriptor */ CMIS_APP_DESC1 = 86, /* AppDescriptor 1 (AppSel 1) */ CMIS_APP_DESC2 = 90, /* AppDescriptor 2 (AppSel 2) */ CMIS_APP_DESC3 = 94, /* AppDescriptor 3 (AppSel 3) */ CMIS_APP_DESC4 = 98, /* AppDescriptor 4 (AppSel 4) */ CMIS_APP_DESC5 = 102, /* AppDescriptor 5 (AppSel 5) */ CMIS_APP_DESC6 = 106, /* AppDescriptor 6 (AppSel 6) */ CMIS_APP_DESC7 = 110, /* AppDescriptor 7 (AppSel 7) */ CMIS_APP_DESC8 = 114, /* AppDescriptor 8 (AppSel 8) */ /* Table 8-24: Password (bytes 118-125) */ CMIS_PASSWORD_CHANGE = 118, /* Password change entry (4 bytes) */ CMIS_PASSWORD_ENTRY = 122, /* Password entry area (4 bytes) */ /* Table 8-25: Page Mapping (bytes 126-127) */ CMIS_BANK_SEL = 126, /* Bank select */ CMIS_PAGE_SEL = 127, /* Page select */ }; /* * Byte 2 (CMIS_MODULE_TYPE) bit definitions (Table 8-5) */ #define CMIS_MODULE_TYPE_FLAT (1 << 7) /* MemoryModel: 1=flat, 0=paged */ #define CMIS_MODULE_TYPE_STEPPED (1 << 6) /* SteppedConfigOnly */ #define CMIS_MODULE_TYPE_MCISPEED_MASK 0x3C /* MciMaxSpeed, bits 5:2 */ #define CMIS_MODULE_TYPE_MCISPEED_SHIFT 2 #define CMIS_MODULE_TYPE_AUTOCOM_MASK 0x03 /* AutoCommissioning, bits 1:0 */ /* MciMaxSpeed values (I2CMCI) */ #define CMIS_MCISPEED_400KHZ 0 /* Up to 400 kHz */ #define CMIS_MCISPEED_1MHZ 1 /* Up to 1 MHz */ #define CMIS_MCISPEED_3_4MHZ 2 /* Up to 3.4 MHz */ /* AutoCommissioning values (when SteppedConfigOnly=1) */ #define CMIS_AUTOCOM_NONE 0x00 /* Neither regular nor hot */ #define CMIS_AUTOCOM_REGULAR 0x01 /* Only regular (ApplyDPInit) */ #define CMIS_AUTOCOM_HOT 0x02 /* Only hot (ApplyImmediate) */ /* * Byte 3 (CMIS_MODULE_STATE) bit definitions (Table 8-6) */ #define CMIS_MODULE_STATE_MASK 0x0E /* ModuleState, bits 3:1 */ #define CMIS_MODULE_STATE_SHIFT 1 #define CMIS_MODULE_STATE_INTL 0x01 /* InterruptDeasserted (bit 0) */ /* Table 8-7: Module State Encodings (bits 3:1 of byte 3) */ #define CMIS_STATE_LOWPWR 1 /* ModuleLowPwr */ #define CMIS_STATE_PWRUP 2 /* ModulePwrUp */ #define CMIS_STATE_READY 3 /* ModuleReady */ #define CMIS_STATE_PWRDN 4 /* ModulePwrDn */ #define CMIS_STATE_FAULT 5 /* ModuleFault */ /* * Bytes 4-7 (CMIS_FLAGS_BANKn) bit definitions (Table 8-8) * Same layout for all 4 bank bytes. */ #define CMIS_FLAGS_PAGE2CH (1 << 3) /* Flags on Page 2Ch */ #define CMIS_FLAGS_PAGE14H (1 << 2) /* Flags on Page 14h */ #define CMIS_FLAGS_PAGE12H (1 << 1) /* Flags on Page 12h */ #define CMIS_FLAGS_PAGE11H (1 << 0) /* Flags on Page 11h */ /* * Byte 8 (CMIS_MOD_FLAGS_START) bit definitions (Table 8-9) */ #define CMIS_FLAG_CDB_COMPLETE2 (1 << 7) /* CdbCmdCompleteFlag2 */ #define CMIS_FLAG_CDB_COMPLETE1 (1 << 6) /* CdbCmdCompleteFlag1 */ #define CMIS_FLAG_DP_FW_ERROR (1 << 2) /* DataPathFirmwareErrorFlag */ #define CMIS_FLAG_MOD_FW_ERROR (1 << 1) /* ModuleFirmwareErrorFlag */ #define CMIS_FLAG_STATE_CHANGED (1 << 0) /* ModuleStateChangedFlag */ /* * Byte 9 (CMIS_MOD_FLAGS_TEMP_VCC) bit definitions (Table 8-9) */ #define CMIS_FLAG_VCC_LOW_WARN (1 << 7) /* VccMonLowWarningFlag */ #define CMIS_FLAG_VCC_HIGH_WARN (1 << 6) /* VccMonHighWarningFlag */ #define CMIS_FLAG_VCC_LOW_ALM (1 << 5) /* VccMonLowAlarmFlag */ #define CMIS_FLAG_VCC_HIGH_ALM (1 << 4) /* VccMonHighAlarmFlag */ #define CMIS_FLAG_TEMP_LOW_WARN (1 << 3) /* TempMonLowWarningFlag */ #define CMIS_FLAG_TEMP_HIGH_WARN (1 << 2) /* TempMonHighWarningFlag */ #define CMIS_FLAG_TEMP_LOW_ALM (1 << 1) /* TempMonLowAlarmFlag */ #define CMIS_FLAG_TEMP_HIGH_ALM (1 << 0) /* TempMonHighAlarmFlag */ /* * Byte 10 (CMIS_MOD_FLAGS_AUX) bit definitions (Table 8-9) */ #define CMIS_FLAG_AUX2_LOW_WARN (1 << 7) #define CMIS_FLAG_AUX2_HIGH_WARN (1 << 6) #define CMIS_FLAG_AUX2_LOW_ALM (1 << 5) #define CMIS_FLAG_AUX2_HIGH_ALM (1 << 4) #define CMIS_FLAG_AUX1_LOW_WARN (1 << 3) #define CMIS_FLAG_AUX1_HIGH_WARN (1 << 2) #define CMIS_FLAG_AUX1_LOW_ALM (1 << 1) #define CMIS_FLAG_AUX1_HIGH_ALM (1 << 0) /* * Byte 11 (CMIS_MOD_FLAGS_CUSTOM) bit definitions (Table 8-9) */ #define CMIS_FLAG_CUST_LOW_WARN (1 << 7) #define CMIS_FLAG_CUST_HIGH_WARN (1 << 6) #define CMIS_FLAG_CUST_LOW_ALM (1 << 5) #define CMIS_FLAG_CUST_HIGH_ALM (1 << 4) #define CMIS_FLAG_AUX3_LOW_WARN (1 << 3) #define CMIS_FLAG_AUX3_HIGH_WARN (1 << 2) #define CMIS_FLAG_AUX3_LOW_ALM (1 << 1) #define CMIS_FLAG_AUX3_HIGH_ALM (1 << 0) /* * Byte 26 (CMIS_MOD_CTRL) bit definitions (Table 8-11) */ #define CMIS_CTRL_BANK_BCAST (1 << 7) /* BankBroadcastEnable */ #define CMIS_CTRL_LOWPWR_HW (1 << 6) /* LowPwrAllowRequestHW */ #define CMIS_CTRL_SQUELCH_METHOD (1 << 5) /* SquelchMethodSelect */ #define CMIS_CTRL_LOWPWR_SW (1 << 4) /* LowPwrRequestSW */ #define CMIS_CTRL_SW_RESET (1 << 3) /* SoftwareReset */ /* * Byte 27 (CMIS_MOD_CTRL2) bit definitions (Table 8-11) */ #define CMIS_CTRL2_MCISPEED_MASK 0x0F /* MciSpeedConfiguration, bits 3:0 */ /* * Bytes 31-36 mask bits mirror bytes 8-13 flag bits (Table 8-12) * Use the same bit positions as CMIS_FLAG_* above. */ /* * Bytes 37-38 (CDB Status) bit definitions (Table 8-14) */ #define CMIS_CDB_BUSY (1 << 7) /* CdbIsBusy */ #define CMIS_CDB_FAILED (1 << 6) /* CdbHasFailed */ #define CMIS_CDB_RESULT_MASK 0x3F /* CdbCommandResult, bits 5:0 */ /* Table 8-20: Media Type Encodings */ #define CMIS_MEDIA_TYPE_UNDEF 0x00 /* Undefined */ #define CMIS_MEDIA_TYPE_MMF 0x01 /* Optical: MMF */ #define CMIS_MEDIA_TYPE_SMF 0x02 /* Optical: SMF */ #define CMIS_MEDIA_TYPE_COPPER 0x03 /* Passive/Active Copper */ #define CMIS_MEDIA_TYPE_ACTIVE 0x04 /* Active Cable */ #define CMIS_MEDIA_TYPE_BASET 0x05 /* BASE-T */ /* Application Descriptor constants */ #define CMIS_APP_DESC_SIZE 4 /* Bytes per descriptor */ #define CMIS_MAX_APP_DESC 8 /* Max descriptors in lower memory */ /* Table 8-22: Offsets within an Application Descriptor */ #define CMIS_APP_HOST_IF_ID 0 /* HostInterfaceID */ #define CMIS_APP_MEDIA_IF_ID 1 /* MediaInterfaceID */ #define CMIS_APP_LANE_COUNT 2 /* Host[7:4], Media[3:0] */ #define CMIS_APP_HOST_ASSIGN 3 /* HostLaneAssignment */ #define CMIS_APP_HOST_LANES_MASK 0xF0 /* HostLaneCount, bits 7:4 */ #define CMIS_APP_HOST_LANES_SHIFT 4 #define CMIS_APP_MEDIA_LANES_MASK 0x0F /* MediaLaneCount, bits 3:0 */ /* * Table 8-26: Page 00h - Administrative Information * Accessed with page=0x00, bank=0. */ enum { CMIS_P0_ID = 128, /* SFF-8024 Identifier copy */ CMIS_P0_VENDOR_NAME = 129, /* Vendor name (16 bytes, ASCII) */ CMIS_P0_VENDOR_OUI = 145, /* Vendor IEEE OUI (3 bytes) */ CMIS_P0_VENDOR_PN = 148, /* Part number (16 bytes, ASCII) */ CMIS_P0_VENDOR_REV = 164, /* Vendor revision (2 bytes) */ CMIS_P0_VENDOR_SN = 166, /* Serial number (16 bytes, ASCII) */ CMIS_P0_DATE_CODE = 182, /* Date code (8 bytes: YYMMDDLL) */ CMIS_P0_CLEI = 190, /* CLEI code (10 bytes, ASCII) */ CMIS_P0_MOD_POWER = 200, /* Module power class */ CMIS_P0_MAX_POWER = 201, /* Max power (multiples of 0.25W) */ CMIS_P0_CABLE_LEN = 202, /* Cable assembly link length */ CMIS_P0_CONNECTOR = 203, /* Connector type (SFF-8024) */ CMIS_P0_COPPER_ATTEN = 204, /* Copper cable attenuation (6 bytes) */ CMIS_P0_MEDIA_LANE_INFO = 210, /* Supported near end media lanes */ CMIS_P0_CABLE_ASM_INFO = 211, /* Far end breakout info */ CMIS_P0_MEDIA_TECH = 212, /* Media interface technology */ CMIS_P0_MCI_ADVERT = 213, /* MCI advertisement (2 bytes) */ CMIS_P0_PAGE_CKSUM = 222, /* Page checksum (bytes 128-221) */ CMIS_P0_CUSTOM = 223, /* Custom (33 bytes) */ }; /* * Table 8-82: Page 11h - Lane Status and Data Path Status * Accessed with page=0x11, bank=0 (lanes 1-8). */ enum { /* Table 8-83: Data Path States (bytes 128-131) */ CMIS_P11_DPSTATE_12 = 128, /* DPState for host lanes 1-2 */ CMIS_P11_DPSTATE_34 = 129, /* DPState for host lanes 3-4 */ CMIS_P11_DPSTATE_56 = 130, /* DPState for host lanes 5-6 */ CMIS_P11_DPSTATE_78 = 131, /* DPState for host lanes 7-8 */ /* Table 8-85: Lane Output Status (bytes 132-133) */ CMIS_P11_OUTPUT_RX = 132, /* OutputStatusRx per lane */ CMIS_P11_OUTPUT_TX = 133, /* OutputStatusTx per lane */ /* Table 8-86: State Changed Flags (bytes 134-135) */ CMIS_P11_DPSTATE_CHGD = 134, /* DPStateChanged flags */ CMIS_P11_OUTPUT_CHGD_TX = 135, /* OutputStatusChangedTx flags*/ /* Table 8-87: Lane-Specific Tx Flags (bytes 136-141) */ CMIS_P11_TX_FAULT = 136, /* TxFault per lane */ CMIS_P11_TX_LOS = 137, /* TxLOS per lane */ CMIS_P11_TX_CDR_LOL = 138, /* TxCDRLOL per lane */ CMIS_P11_TX_ADPT_EQ_FAIL = 139, /* TxAdaptEqFail per lane */ CMIS_P11_TX_PWR_HIGH_ALM = 140, /* TxPowerHighAlarm per lane */ CMIS_P11_TX_PWR_LOW_ALM = 141, /* TxPowerLowAlarm per lane */ CMIS_P11_TX_BIAS_HIGH_ALM = 142, /* TxBiasHighAlarm per lane */ CMIS_P11_TX_BIAS_LOW_ALM = 143, /* TxBiasLowAlarm per lane */ CMIS_P11_TX_PWR_HIGH_WARN = 144, /* TxPowerHighWarning per lane*/ CMIS_P11_TX_PWR_LOW_WARN = 145, /* TxPowerLowWarning per lane */ CMIS_P11_TX_BIAS_HIGH_WARN = 146, /* TxBiasHighWarning per lane */ CMIS_P11_TX_BIAS_LOW_WARN = 147, /* TxBiasLowWarning per lane */ /* Table 8-88: Rx Flags (bytes 148-153) */ CMIS_P11_RX_LOS = 148, /* RxLOS per lane */ CMIS_P11_RX_CDR_LOL = 149, /* RxCDRLOL per lane */ CMIS_P11_RX_PWR_HIGH_ALM = 150, /* RxPowerHighAlarm per lane */ CMIS_P11_RX_PWR_LOW_ALM = 151, /* RxPowerLowAlarm per lane */ CMIS_P11_RX_PWR_HIGH_WARN = 152, /* RxPowerHighWarning per lane*/ CMIS_P11_RX_PWR_LOW_WARN = 153, /* RxPowerLowWarning per lane */ /* Table 8-89: Lane-Specific Monitors (bytes 154-201) */ CMIS_P11_TX_PWR_1 = 154, /* U16 Tx optical pwr, lane 1 */ CMIS_P11_TX_PWR_2 = 156, /* (0.1 uW increments) */ CMIS_P11_TX_PWR_3 = 158, CMIS_P11_TX_PWR_4 = 160, CMIS_P11_TX_PWR_5 = 162, CMIS_P11_TX_PWR_6 = 164, CMIS_P11_TX_PWR_7 = 166, CMIS_P11_TX_PWR_8 = 168, CMIS_P11_TX_BIAS_1 = 170, /* U16 Tx bias current, lane 1*/ CMIS_P11_TX_BIAS_2 = 172, /* (2 uA increments) */ CMIS_P11_TX_BIAS_3 = 174, CMIS_P11_TX_BIAS_4 = 176, CMIS_P11_TX_BIAS_5 = 178, CMIS_P11_TX_BIAS_6 = 180, CMIS_P11_TX_BIAS_7 = 182, CMIS_P11_TX_BIAS_8 = 184, CMIS_P11_RX_PWR_1 = 186, /* U16 Rx input power, lane 1 */ CMIS_P11_RX_PWR_2 = 188, /* (0.1 uW increments) */ CMIS_P11_RX_PWR_3 = 190, CMIS_P11_RX_PWR_4 = 192, CMIS_P11_RX_PWR_5 = 194, CMIS_P11_RX_PWR_6 = 196, CMIS_P11_RX_PWR_7 = 198, CMIS_P11_RX_PWR_8 = 200, /* Table 8-90: Config Command Status (bytes 202-205) */ CMIS_P11_CONFIG_STAT_12 = 202, /* ConfigStatus lanes 1-2 */ CMIS_P11_CONFIG_STAT_34 = 203, /* ConfigStatus lanes 3-4 */ CMIS_P11_CONFIG_STAT_56 = 204, /* ConfigStatus lanes 5-6 */ CMIS_P11_CONFIG_STAT_78 = 205, /* ConfigStatus lanes 7-8 */ /* Table 8-93: Active Control Set (bytes 206-234) */ CMIS_P11_ACS_DPCONFIG1 = 206, /* DPConfigLane1 (AppSel[7:4])*/ CMIS_P11_ACS_DPCONFIG2 = 207, /* DPConfigLane2 */ CMIS_P11_ACS_DPCONFIG3 = 208, /* DPConfigLane3 */ CMIS_P11_ACS_DPCONFIG4 = 209, /* DPConfigLane4 */ CMIS_P11_ACS_DPCONFIG5 = 210, /* DPConfigLane5 */ CMIS_P11_ACS_DPCONFIG6 = 211, /* DPConfigLane6 */ CMIS_P11_ACS_DPCONFIG7 = 212, /* DPConfigLane7 */ CMIS_P11_ACS_DPCONFIG8 = 213, /* DPConfigLane8 */ CMIS_P11_ACS_TX_START = 214, /* Provisioned Tx Controls */ CMIS_P11_ACS_TX_END = 225, CMIS_P11_ACS_RX_START = 226, /* Provisioned Rx Controls */ CMIS_P11_ACS_RX_END = 234, /* Table 8-96: Data Path Conditions (bytes 235-239) */ CMIS_P11_DP_COND_START = 235, CMIS_P11_DP_COND_END = 239, /* Table 8-97: Media Lane Mapping (bytes 240-255) */ CMIS_P11_MEDIA_MAP_START = 240, CMIS_P11_MEDIA_MAP_END = 255, }; /* * Per-lane bit positions for Page 11h flag/status registers. * Bytes 132-153 use bit N for lane N+1 (bit 7 = lane 8, bit 0 = lane 1). */ #define CMIS_LANE8 (1 << 7) #define CMIS_LANE7 (1 << 6) #define CMIS_LANE6 (1 << 5) #define CMIS_LANE5 (1 << 4) #define CMIS_LANE4 (1 << 3) #define CMIS_LANE3 (1 << 2) #define CMIS_LANE2 (1 << 1) #define CMIS_LANE1 (1 << 0) /* * DPState encoding within bytes 128-131 (Table 8-83). * Each byte holds two 4-bit DPState fields: * bits 7:4 = even lane, bits 3:0 = odd lane. */ #define CMIS_DPSTATE_HI_MASK 0xF0 /* Upper nibble (even lane) */ #define CMIS_DPSTATE_HI_SHIFT 4 #define CMIS_DPSTATE_LO_MASK 0x0F /* Lower nibble (odd lane) */ /* Table 8-84: Data Path State Encoding */ #define CMIS_DPSTATE_DEACTIVATED 1 /* DPDeactivated (or unused) */ #define CMIS_DPSTATE_INIT 2 /* DPInit */ #define CMIS_DPSTATE_DEINIT 3 /* DPDeinit */ #define CMIS_DPSTATE_ACTIVATED 4 /* DPActivated */ #define CMIS_DPSTATE_TXTURNON 5 /* DPTxTurnOn */ #define CMIS_DPSTATE_TXTURNOFF 6 /* DPTxTurnOff */ #define CMIS_DPSTATE_INITIALIZED 7 /* DPInitialized */ /* * ConfigStatus encoding within bytes 202-205 (Table 8-90/91). * Each byte holds two 4-bit status fields, same nibble layout as DPState. */ #define CMIS_CFGSTAT_UNDEFINED 0x0 /* Undefined */ #define CMIS_CFGSTAT_SUCCESS 0x1 /* ConfigSuccess */ #define CMIS_CFGSTAT_REJECTED 0x2 /* ConfigRejected */ #define CMIS_CFGSTAT_REJECTEDINV 0x3 /* ConfigRejectedInvalidAppSel*/ #define CMIS_CFGSTAT_INPROGRESS 0x4 /* ConfigInProgress */ #define CMIS_CFGSTAT_REJECTEDLANE 0x5 /* ConfigRejectedInvalidLane */ #define CMIS_CFGSTAT_REJECTEDEQ 0x6 /* ConfigRejectedInvalidEq */ /* DPConfigLane (CMIS_P11_ACS_DPCONFIGn) bit definitions (Table 8-92/93) */ #define CMIS_ACS_APPSEL_MASK 0xF0 /* AppSel code, bits 7:4 */ #define CMIS_ACS_APPSEL_SHIFT 4 #define CMIS_ACS_DATAPATH_MASK 0x0F /* DataPathID, bits 3:0 */ /* * Page 00h bit definitions */ /* Byte 200 (CMIS_P0_MOD_POWER) bit definitions (Table 8-31) */ #define CMIS_POWER_CLASS_MASK 0xE0 /* ModulePowerClass, bits 7:5 */ #define CMIS_POWER_CLASS_SHIFT 5 #define CMIS_POWER_CLASS_1 0 /* <=1.5W */ #define CMIS_POWER_CLASS_2 1 /* <=3.5W */ #define CMIS_POWER_CLASS_3 2 /* <=7.0W */ #define CMIS_POWER_CLASS_4 3 /* <=8.0W */ #define CMIS_POWER_CLASS_5 4 /* <=10.0W */ #define CMIS_POWER_CLASS_6 5 /* <=12.0W */ #define CMIS_POWER_CLASS_7 6 /* <=14.0W */ #define CMIS_POWER_CLASS_8 7 /* >14.0W, see MaxPower byte */ #define CMIS_POWER_MAX_IN_BYTE (1 << 4) /* MaxPowerOverride: byte 201*/ /* Byte 202 (CMIS_P0_CABLE_LEN) bit definitions (Table 8-32) */ #define CMIS_CABLE_LEN_MULT_MASK 0xC0 /* LengthMultiplier, bits 7:6 */ #define CMIS_CABLE_LEN_MULT_SHIFT 6 #define CMIS_CABLE_LEN_VAL_MASK 0x3F /* Length value, bits 5:0 */ #define CMIS_CABLE_LEN_MULT_01 0 /* x 0.1m */ #define CMIS_CABLE_LEN_MULT_1 1 /* x 1m */ #define CMIS_CABLE_LEN_MULT_10 2 /* x 10m */ #define CMIS_CABLE_LEN_MULT_100 3 /* x 100m */ /* Lane monitor stride (each monitor is U16 = 2 bytes per lane) */ #define CMIS_LANE_MON_SIZE 2 #define CMIS_MAX_LANES 8 #endif /* !_NET_CMIS_H_ */