/*-1* Copyright (c) 2026 Netflix Inc.2*3* SPDX-License-Identifier: BSD-2-Clause4*/56/*7* The following set of constants are from the OIF Common Management8* Interface Specification (CMIS) revision 5.3, September 2024.9*10* CMIS defines a 256-byte addressable memory with lower (0-127) and11* upper (128-255) regions. Lower memory is always accessible.12* Upper memory is paged via byte 127 (page select) and byte 12613* (bank select).14*15* All values are read across an I2C bus at address 0xA0.16*/1718#ifndef _NET_CMIS_H_19#define _NET_CMIS_H_2021#define CMIS_BASE 0xA0 /* Base I2C address for all requests */2223/* CMIS Module Types (SFF-8024 Identifier, byte 0) */24#define CMIS_ID_QSFP_DD 0x18 /* QSFP-DD */25#define CMIS_ID_QSFP8X 0x19 /* QSFP 8X (OSFP) */26#define CMIS_ID_SFP_DD 0x1A /* SFP-DD */27#define CMIS_ID_DSFP 0x1B /* DSFP */28#define CMIS_ID_QSFP_CMIS 0x1E /* QSFP+ with CMIS */2930/* Table 8-4: Lower Memory Map (bytes 0x00-0x7F) */31enum {32/* Table 8-5: Management Characteristics (bytes 0-2) */33CMIS_ID = 0, /* SFF-8024 Identifier */34CMIS_REV = 1, /* CMIS revision (major.minor) */35CMIS_MODULE_TYPE = 2, /* Memory model, config options */3637/* Table 8-6: Global Status (byte 3) */38CMIS_MODULE_STATE = 3, /* Module state, interrupt status */3940/* Table 8-8: Flags Summary (bytes 4-7) */41CMIS_FLAGS_BANK0 = 4, /* Flags summary, bank 0 */42CMIS_FLAGS_BANK1 = 5, /* Flags summary, bank 1 */43CMIS_FLAGS_BANK2 = 6, /* Flags summary, bank 2 */44CMIS_FLAGS_BANK3 = 7, /* Flags summary, bank 3 */4546/* Table 8-9: Module-Level Flags (bytes 8-13) */47CMIS_MOD_FLAGS_START = 8, /* Module firmware/state flags */48CMIS_MOD_FLAGS_TEMP_VCC = 9, /* Temp/VCC alarm/warning flags */49CMIS_MOD_FLAGS_AUX = 10, /* Aux monitor alarm/warning flags */50CMIS_MOD_FLAGS_CUSTOM = 11, /* Custom/Aux3 monitor flags */51CMIS_MOD_FLAGS_RSVD = 12, /* Reserved */52CMIS_MOD_FLAGS_VENDOR = 13, /* Custom module-level flags */5354/* Table 8-10: Module-Level Monitor Values (bytes 14-25) */55CMIS_TEMP = 14, /* S16 Temperature (1/256 deg C) */56CMIS_VCC = 16, /* U16 Supply Voltage (100 uV) */57CMIS_AUX1 = 18, /* S16 Aux1 Monitor */58CMIS_AUX2 = 20, /* S16 Aux2 Monitor */59CMIS_AUX3 = 22, /* S16 Aux3 Monitor */60CMIS_CUSTOM_MON = 24, /* S16/U16 Custom Monitor */6162/* Table 8-11: Module Global Controls (bytes 26-30) */63CMIS_MOD_CTRL = 26, /* Global control bits */64CMIS_MOD_CTRL2 = 27, /* Global control bits (cont.) */65CMIS_MOD_CTRL3 = 28, /* Global control bits (cont.) */66CMIS_MOD_CTRL4 = 29, /* Global control bits (cont.) */67CMIS_MOD_CTRL5 = 30, /* Global control bits (cont.) */6869/* Table 8-12: Module Level Masks (bytes 31-36) */70CMIS_MOD_MASKS_START = 31, /* Module-level masks start */71CMIS_MOD_MASKS_END = 36, /* Module-level masks end */7273/* Table 8-13: CDB Command Status (bytes 37-38) */74CMIS_CDB_STATUS1 = 37, /* CDB instance 1 status */75CMIS_CDB_STATUS2 = 38, /* CDB instance 2 status */7677/* Table 8-15: Module Active Firmware Version (bytes 39-40) */78CMIS_FW_VER_MAJOR = 39, /* Active firmware major version */79CMIS_FW_VER_MINOR = 40, /* Active firmware minor version */8081/* Table 8-16: Fault Information (byte 41) */82CMIS_FAULT_CAUSE = 41, /* Fault cause for ModuleFault */8384/* Table 8-17: Miscellaneous Status (bytes 42-45) */85CMIS_MISC_STATUS_START = 42, /* Password status, etc. */86CMIS_MISC_STATUS_END = 45,8788/* Table 8-18: Extended Module Information (bytes 56-63) */89CMIS_EXT_MOD_INFO_START = 56,90CMIS_EXT_MOD_INFO_END = 63,9192/* Table 8-21: Media Type (byte 85) */93CMIS_MEDIA_TYPE = 85, /* MediaType encoding */9495/* Table 8-23: Application Descriptors (bytes 86-117) */96CMIS_APP_DESC_START = 86, /* First Application Descriptor */97CMIS_APP_DESC1 = 86, /* AppDescriptor 1 (AppSel 1) */98CMIS_APP_DESC2 = 90, /* AppDescriptor 2 (AppSel 2) */99CMIS_APP_DESC3 = 94, /* AppDescriptor 3 (AppSel 3) */100CMIS_APP_DESC4 = 98, /* AppDescriptor 4 (AppSel 4) */101CMIS_APP_DESC5 = 102, /* AppDescriptor 5 (AppSel 5) */102CMIS_APP_DESC6 = 106, /* AppDescriptor 6 (AppSel 6) */103CMIS_APP_DESC7 = 110, /* AppDescriptor 7 (AppSel 7) */104CMIS_APP_DESC8 = 114, /* AppDescriptor 8 (AppSel 8) */105106/* Table 8-24: Password (bytes 118-125) */107CMIS_PASSWORD_CHANGE = 118, /* Password change entry (4 bytes) */108CMIS_PASSWORD_ENTRY = 122, /* Password entry area (4 bytes) */109110/* Table 8-25: Page Mapping (bytes 126-127) */111CMIS_BANK_SEL = 126, /* Bank select */112CMIS_PAGE_SEL = 127, /* Page select */113};114115/*116* Byte 2 (CMIS_MODULE_TYPE) bit definitions (Table 8-5)117*/118#define CMIS_MODULE_TYPE_FLAT (1 << 7) /* MemoryModel: 1=flat, 0=paged */119#define CMIS_MODULE_TYPE_STEPPED (1 << 6) /* SteppedConfigOnly */120#define CMIS_MODULE_TYPE_MCISPEED_MASK 0x3C /* MciMaxSpeed, bits 5:2 */121#define CMIS_MODULE_TYPE_MCISPEED_SHIFT 2122#define CMIS_MODULE_TYPE_AUTOCOM_MASK 0x03 /* AutoCommissioning, bits 1:0 */123124/* MciMaxSpeed values (I2CMCI) */125#define CMIS_MCISPEED_400KHZ 0 /* Up to 400 kHz */126#define CMIS_MCISPEED_1MHZ 1 /* Up to 1 MHz */127#define CMIS_MCISPEED_3_4MHZ 2 /* Up to 3.4 MHz */128129/* AutoCommissioning values (when SteppedConfigOnly=1) */130#define CMIS_AUTOCOM_NONE 0x00 /* Neither regular nor hot */131#define CMIS_AUTOCOM_REGULAR 0x01 /* Only regular (ApplyDPInit) */132#define CMIS_AUTOCOM_HOT 0x02 /* Only hot (ApplyImmediate) */133134/*135* Byte 3 (CMIS_MODULE_STATE) bit definitions (Table 8-6)136*/137#define CMIS_MODULE_STATE_MASK 0x0E /* ModuleState, bits 3:1 */138#define CMIS_MODULE_STATE_SHIFT 1139#define CMIS_MODULE_STATE_INTL 0x01 /* InterruptDeasserted (bit 0) */140141/* Table 8-7: Module State Encodings (bits 3:1 of byte 3) */142#define CMIS_STATE_LOWPWR 1 /* ModuleLowPwr */143#define CMIS_STATE_PWRUP 2 /* ModulePwrUp */144#define CMIS_STATE_READY 3 /* ModuleReady */145#define CMIS_STATE_PWRDN 4 /* ModulePwrDn */146#define CMIS_STATE_FAULT 5 /* ModuleFault */147148/*149* Bytes 4-7 (CMIS_FLAGS_BANKn) bit definitions (Table 8-8)150* Same layout for all 4 bank bytes.151*/152#define CMIS_FLAGS_PAGE2CH (1 << 3) /* Flags on Page 2Ch */153#define CMIS_FLAGS_PAGE14H (1 << 2) /* Flags on Page 14h */154#define CMIS_FLAGS_PAGE12H (1 << 1) /* Flags on Page 12h */155#define CMIS_FLAGS_PAGE11H (1 << 0) /* Flags on Page 11h */156157/*158* Byte 8 (CMIS_MOD_FLAGS_START) bit definitions (Table 8-9)159*/160#define CMIS_FLAG_CDB_COMPLETE2 (1 << 7) /* CdbCmdCompleteFlag2 */161#define CMIS_FLAG_CDB_COMPLETE1 (1 << 6) /* CdbCmdCompleteFlag1 */162#define CMIS_FLAG_DP_FW_ERROR (1 << 2) /* DataPathFirmwareErrorFlag */163#define CMIS_FLAG_MOD_FW_ERROR (1 << 1) /* ModuleFirmwareErrorFlag */164#define CMIS_FLAG_STATE_CHANGED (1 << 0) /* ModuleStateChangedFlag */165166/*167* Byte 9 (CMIS_MOD_FLAGS_TEMP_VCC) bit definitions (Table 8-9)168*/169#define CMIS_FLAG_VCC_LOW_WARN (1 << 7) /* VccMonLowWarningFlag */170#define CMIS_FLAG_VCC_HIGH_WARN (1 << 6) /* VccMonHighWarningFlag */171#define CMIS_FLAG_VCC_LOW_ALM (1 << 5) /* VccMonLowAlarmFlag */172#define CMIS_FLAG_VCC_HIGH_ALM (1 << 4) /* VccMonHighAlarmFlag */173#define CMIS_FLAG_TEMP_LOW_WARN (1 << 3) /* TempMonLowWarningFlag */174#define CMIS_FLAG_TEMP_HIGH_WARN (1 << 2) /* TempMonHighWarningFlag */175#define CMIS_FLAG_TEMP_LOW_ALM (1 << 1) /* TempMonLowAlarmFlag */176#define CMIS_FLAG_TEMP_HIGH_ALM (1 << 0) /* TempMonHighAlarmFlag */177178/*179* Byte 10 (CMIS_MOD_FLAGS_AUX) bit definitions (Table 8-9)180*/181#define CMIS_FLAG_AUX2_LOW_WARN (1 << 7)182#define CMIS_FLAG_AUX2_HIGH_WARN (1 << 6)183#define CMIS_FLAG_AUX2_LOW_ALM (1 << 5)184#define CMIS_FLAG_AUX2_HIGH_ALM (1 << 4)185#define CMIS_FLAG_AUX1_LOW_WARN (1 << 3)186#define CMIS_FLAG_AUX1_HIGH_WARN (1 << 2)187#define CMIS_FLAG_AUX1_LOW_ALM (1 << 1)188#define CMIS_FLAG_AUX1_HIGH_ALM (1 << 0)189190/*191* Byte 11 (CMIS_MOD_FLAGS_CUSTOM) bit definitions (Table 8-9)192*/193#define CMIS_FLAG_CUST_LOW_WARN (1 << 7)194#define CMIS_FLAG_CUST_HIGH_WARN (1 << 6)195#define CMIS_FLAG_CUST_LOW_ALM (1 << 5)196#define CMIS_FLAG_CUST_HIGH_ALM (1 << 4)197#define CMIS_FLAG_AUX3_LOW_WARN (1 << 3)198#define CMIS_FLAG_AUX3_HIGH_WARN (1 << 2)199#define CMIS_FLAG_AUX3_LOW_ALM (1 << 1)200#define CMIS_FLAG_AUX3_HIGH_ALM (1 << 0)201202/*203* Byte 26 (CMIS_MOD_CTRL) bit definitions (Table 8-11)204*/205#define CMIS_CTRL_BANK_BCAST (1 << 7) /* BankBroadcastEnable */206#define CMIS_CTRL_LOWPWR_HW (1 << 6) /* LowPwrAllowRequestHW */207#define CMIS_CTRL_SQUELCH_METHOD (1 << 5) /* SquelchMethodSelect */208#define CMIS_CTRL_LOWPWR_SW (1 << 4) /* LowPwrRequestSW */209#define CMIS_CTRL_SW_RESET (1 << 3) /* SoftwareReset */210211/*212* Byte 27 (CMIS_MOD_CTRL2) bit definitions (Table 8-11)213*/214#define CMIS_CTRL2_MCISPEED_MASK 0x0F /* MciSpeedConfiguration, bits 3:0 */215216/*217* Bytes 31-36 mask bits mirror bytes 8-13 flag bits (Table 8-12)218* Use the same bit positions as CMIS_FLAG_* above.219*/220221/*222* Bytes 37-38 (CDB Status) bit definitions (Table 8-14)223*/224#define CMIS_CDB_BUSY (1 << 7) /* CdbIsBusy */225#define CMIS_CDB_FAILED (1 << 6) /* CdbHasFailed */226#define CMIS_CDB_RESULT_MASK 0x3F /* CdbCommandResult, bits 5:0 */227228/* Table 8-20: Media Type Encodings */229#define CMIS_MEDIA_TYPE_UNDEF 0x00 /* Undefined */230#define CMIS_MEDIA_TYPE_MMF 0x01 /* Optical: MMF */231#define CMIS_MEDIA_TYPE_SMF 0x02 /* Optical: SMF */232#define CMIS_MEDIA_TYPE_COPPER 0x03 /* Passive/Active Copper */233#define CMIS_MEDIA_TYPE_ACTIVE 0x04 /* Active Cable */234#define CMIS_MEDIA_TYPE_BASET 0x05 /* BASE-T */235236/* Application Descriptor constants */237#define CMIS_APP_DESC_SIZE 4 /* Bytes per descriptor */238#define CMIS_MAX_APP_DESC 8 /* Max descriptors in lower memory */239240/* Table 8-22: Offsets within an Application Descriptor */241#define CMIS_APP_HOST_IF_ID 0 /* HostInterfaceID */242#define CMIS_APP_MEDIA_IF_ID 1 /* MediaInterfaceID */243#define CMIS_APP_LANE_COUNT 2 /* Host[7:4], Media[3:0] */244#define CMIS_APP_HOST_ASSIGN 3 /* HostLaneAssignment */245#define CMIS_APP_HOST_LANES_MASK 0xF0 /* HostLaneCount, bits 7:4 */246#define CMIS_APP_HOST_LANES_SHIFT 4247#define CMIS_APP_MEDIA_LANES_MASK 0x0F /* MediaLaneCount, bits 3:0 */248249/*250* Table 8-26: Page 00h - Administrative Information251* Accessed with page=0x00, bank=0.252*/253enum {254CMIS_P0_ID = 128, /* SFF-8024 Identifier copy */255CMIS_P0_VENDOR_NAME = 129, /* Vendor name (16 bytes, ASCII) */256CMIS_P0_VENDOR_OUI = 145, /* Vendor IEEE OUI (3 bytes) */257CMIS_P0_VENDOR_PN = 148, /* Part number (16 bytes, ASCII) */258CMIS_P0_VENDOR_REV = 164, /* Vendor revision (2 bytes) */259CMIS_P0_VENDOR_SN = 166, /* Serial number (16 bytes, ASCII) */260CMIS_P0_DATE_CODE = 182, /* Date code (8 bytes: YYMMDDLL) */261CMIS_P0_CLEI = 190, /* CLEI code (10 bytes, ASCII) */262CMIS_P0_MOD_POWER = 200, /* Module power class */263CMIS_P0_MAX_POWER = 201, /* Max power (multiples of 0.25W) */264CMIS_P0_CABLE_LEN = 202, /* Cable assembly link length */265CMIS_P0_CONNECTOR = 203, /* Connector type (SFF-8024) */266CMIS_P0_COPPER_ATTEN = 204, /* Copper cable attenuation (6 bytes) */267CMIS_P0_MEDIA_LANE_INFO = 210, /* Supported near end media lanes */268CMIS_P0_CABLE_ASM_INFO = 211, /* Far end breakout info */269CMIS_P0_MEDIA_TECH = 212, /* Media interface technology */270CMIS_P0_MCI_ADVERT = 213, /* MCI advertisement (2 bytes) */271CMIS_P0_PAGE_CKSUM = 222, /* Page checksum (bytes 128-221) */272CMIS_P0_CUSTOM = 223, /* Custom (33 bytes) */273};274275/*276* Table 8-82: Page 11h - Lane Status and Data Path Status277* Accessed with page=0x11, bank=0 (lanes 1-8).278*/279enum {280/* Table 8-83: Data Path States (bytes 128-131) */281CMIS_P11_DPSTATE_12 = 128, /* DPState for host lanes 1-2 */282CMIS_P11_DPSTATE_34 = 129, /* DPState for host lanes 3-4 */283CMIS_P11_DPSTATE_56 = 130, /* DPState for host lanes 5-6 */284CMIS_P11_DPSTATE_78 = 131, /* DPState for host lanes 7-8 */285286/* Table 8-85: Lane Output Status (bytes 132-133) */287CMIS_P11_OUTPUT_RX = 132, /* OutputStatusRx per lane */288CMIS_P11_OUTPUT_TX = 133, /* OutputStatusTx per lane */289290/* Table 8-86: State Changed Flags (bytes 134-135) */291CMIS_P11_DPSTATE_CHGD = 134, /* DPStateChanged flags */292CMIS_P11_OUTPUT_CHGD_TX = 135, /* OutputStatusChangedTx flags*/293294/* Table 8-87: Lane-Specific Tx Flags (bytes 136-141) */295CMIS_P11_TX_FAULT = 136, /* TxFault per lane */296CMIS_P11_TX_LOS = 137, /* TxLOS per lane */297CMIS_P11_TX_CDR_LOL = 138, /* TxCDRLOL per lane */298CMIS_P11_TX_ADPT_EQ_FAIL = 139, /* TxAdaptEqFail per lane */299CMIS_P11_TX_PWR_HIGH_ALM = 140, /* TxPowerHighAlarm per lane */300CMIS_P11_TX_PWR_LOW_ALM = 141, /* TxPowerLowAlarm per lane */301CMIS_P11_TX_BIAS_HIGH_ALM = 142, /* TxBiasHighAlarm per lane */302CMIS_P11_TX_BIAS_LOW_ALM = 143, /* TxBiasLowAlarm per lane */303CMIS_P11_TX_PWR_HIGH_WARN = 144, /* TxPowerHighWarning per lane*/304CMIS_P11_TX_PWR_LOW_WARN = 145, /* TxPowerLowWarning per lane */305CMIS_P11_TX_BIAS_HIGH_WARN = 146, /* TxBiasHighWarning per lane */306CMIS_P11_TX_BIAS_LOW_WARN = 147, /* TxBiasLowWarning per lane */307308/* Table 8-88: Rx Flags (bytes 148-153) */309CMIS_P11_RX_LOS = 148, /* RxLOS per lane */310CMIS_P11_RX_CDR_LOL = 149, /* RxCDRLOL per lane */311CMIS_P11_RX_PWR_HIGH_ALM = 150, /* RxPowerHighAlarm per lane */312CMIS_P11_RX_PWR_LOW_ALM = 151, /* RxPowerLowAlarm per lane */313CMIS_P11_RX_PWR_HIGH_WARN = 152, /* RxPowerHighWarning per lane*/314CMIS_P11_RX_PWR_LOW_WARN = 153, /* RxPowerLowWarning per lane */315316/* Table 8-89: Lane-Specific Monitors (bytes 154-201) */317CMIS_P11_TX_PWR_1 = 154, /* U16 Tx optical pwr, lane 1 */318CMIS_P11_TX_PWR_2 = 156, /* (0.1 uW increments) */319CMIS_P11_TX_PWR_3 = 158,320CMIS_P11_TX_PWR_4 = 160,321CMIS_P11_TX_PWR_5 = 162,322CMIS_P11_TX_PWR_6 = 164,323CMIS_P11_TX_PWR_7 = 166,324CMIS_P11_TX_PWR_8 = 168,325CMIS_P11_TX_BIAS_1 = 170, /* U16 Tx bias current, lane 1*/326CMIS_P11_TX_BIAS_2 = 172, /* (2 uA increments) */327CMIS_P11_TX_BIAS_3 = 174,328CMIS_P11_TX_BIAS_4 = 176,329CMIS_P11_TX_BIAS_5 = 178,330CMIS_P11_TX_BIAS_6 = 180,331CMIS_P11_TX_BIAS_7 = 182,332CMIS_P11_TX_BIAS_8 = 184,333CMIS_P11_RX_PWR_1 = 186, /* U16 Rx input power, lane 1 */334CMIS_P11_RX_PWR_2 = 188, /* (0.1 uW increments) */335CMIS_P11_RX_PWR_3 = 190,336CMIS_P11_RX_PWR_4 = 192,337CMIS_P11_RX_PWR_5 = 194,338CMIS_P11_RX_PWR_6 = 196,339CMIS_P11_RX_PWR_7 = 198,340CMIS_P11_RX_PWR_8 = 200,341342/* Table 8-90: Config Command Status (bytes 202-205) */343CMIS_P11_CONFIG_STAT_12 = 202, /* ConfigStatus lanes 1-2 */344CMIS_P11_CONFIG_STAT_34 = 203, /* ConfigStatus lanes 3-4 */345CMIS_P11_CONFIG_STAT_56 = 204, /* ConfigStatus lanes 5-6 */346CMIS_P11_CONFIG_STAT_78 = 205, /* ConfigStatus lanes 7-8 */347348/* Table 8-93: Active Control Set (bytes 206-234) */349CMIS_P11_ACS_DPCONFIG1 = 206, /* DPConfigLane1 (AppSel[7:4])*/350CMIS_P11_ACS_DPCONFIG2 = 207, /* DPConfigLane2 */351CMIS_P11_ACS_DPCONFIG3 = 208, /* DPConfigLane3 */352CMIS_P11_ACS_DPCONFIG4 = 209, /* DPConfigLane4 */353CMIS_P11_ACS_DPCONFIG5 = 210, /* DPConfigLane5 */354CMIS_P11_ACS_DPCONFIG6 = 211, /* DPConfigLane6 */355CMIS_P11_ACS_DPCONFIG7 = 212, /* DPConfigLane7 */356CMIS_P11_ACS_DPCONFIG8 = 213, /* DPConfigLane8 */357CMIS_P11_ACS_TX_START = 214, /* Provisioned Tx Controls */358CMIS_P11_ACS_TX_END = 225,359CMIS_P11_ACS_RX_START = 226, /* Provisioned Rx Controls */360CMIS_P11_ACS_RX_END = 234,361362/* Table 8-96: Data Path Conditions (bytes 235-239) */363CMIS_P11_DP_COND_START = 235,364CMIS_P11_DP_COND_END = 239,365366/* Table 8-97: Media Lane Mapping (bytes 240-255) */367CMIS_P11_MEDIA_MAP_START = 240,368CMIS_P11_MEDIA_MAP_END = 255,369};370371/*372* Per-lane bit positions for Page 11h flag/status registers.373* Bytes 132-153 use bit N for lane N+1 (bit 7 = lane 8, bit 0 = lane 1).374*/375#define CMIS_LANE8 (1 << 7)376#define CMIS_LANE7 (1 << 6)377#define CMIS_LANE6 (1 << 5)378#define CMIS_LANE5 (1 << 4)379#define CMIS_LANE4 (1 << 3)380#define CMIS_LANE3 (1 << 2)381#define CMIS_LANE2 (1 << 1)382#define CMIS_LANE1 (1 << 0)383384/*385* DPState encoding within bytes 128-131 (Table 8-83).386* Each byte holds two 4-bit DPState fields:387* bits 7:4 = even lane, bits 3:0 = odd lane.388*/389#define CMIS_DPSTATE_HI_MASK 0xF0 /* Upper nibble (even lane) */390#define CMIS_DPSTATE_HI_SHIFT 4391#define CMIS_DPSTATE_LO_MASK 0x0F /* Lower nibble (odd lane) */392393/* Table 8-84: Data Path State Encoding */394#define CMIS_DPSTATE_DEACTIVATED 1 /* DPDeactivated (or unused) */395#define CMIS_DPSTATE_INIT 2 /* DPInit */396#define CMIS_DPSTATE_DEINIT 3 /* DPDeinit */397#define CMIS_DPSTATE_ACTIVATED 4 /* DPActivated */398#define CMIS_DPSTATE_TXTURNON 5 /* DPTxTurnOn */399#define CMIS_DPSTATE_TXTURNOFF 6 /* DPTxTurnOff */400#define CMIS_DPSTATE_INITIALIZED 7 /* DPInitialized */401402/*403* ConfigStatus encoding within bytes 202-205 (Table 8-90/91).404* Each byte holds two 4-bit status fields, same nibble layout as DPState.405*/406#define CMIS_CFGSTAT_UNDEFINED 0x0 /* Undefined */407#define CMIS_CFGSTAT_SUCCESS 0x1 /* ConfigSuccess */408#define CMIS_CFGSTAT_REJECTED 0x2 /* ConfigRejected */409#define CMIS_CFGSTAT_REJECTEDINV 0x3 /* ConfigRejectedInvalidAppSel*/410#define CMIS_CFGSTAT_INPROGRESS 0x4 /* ConfigInProgress */411#define CMIS_CFGSTAT_REJECTEDLANE 0x5 /* ConfigRejectedInvalidLane */412#define CMIS_CFGSTAT_REJECTEDEQ 0x6 /* ConfigRejectedInvalidEq */413414/* DPConfigLane (CMIS_P11_ACS_DPCONFIGn) bit definitions (Table 8-92/93) */415#define CMIS_ACS_APPSEL_MASK 0xF0 /* AppSel code, bits 7:4 */416#define CMIS_ACS_APPSEL_SHIFT 4417#define CMIS_ACS_DATAPATH_MASK 0x0F /* DataPathID, bits 3:0 */418419/*420* Page 00h bit definitions421*/422423/* Byte 200 (CMIS_P0_MOD_POWER) bit definitions (Table 8-31) */424#define CMIS_POWER_CLASS_MASK 0xE0 /* ModulePowerClass, bits 7:5 */425#define CMIS_POWER_CLASS_SHIFT 5426#define CMIS_POWER_CLASS_1 0 /* <=1.5W */427#define CMIS_POWER_CLASS_2 1 /* <=3.5W */428#define CMIS_POWER_CLASS_3 2 /* <=7.0W */429#define CMIS_POWER_CLASS_4 3 /* <=8.0W */430#define CMIS_POWER_CLASS_5 4 /* <=10.0W */431#define CMIS_POWER_CLASS_6 5 /* <=12.0W */432#define CMIS_POWER_CLASS_7 6 /* <=14.0W */433#define CMIS_POWER_CLASS_8 7 /* >14.0W, see MaxPower byte */434#define CMIS_POWER_MAX_IN_BYTE (1 << 4) /* MaxPowerOverride: byte 201*/435436/* Byte 202 (CMIS_P0_CABLE_LEN) bit definitions (Table 8-32) */437#define CMIS_CABLE_LEN_MULT_MASK 0xC0 /* LengthMultiplier, bits 7:6 */438#define CMIS_CABLE_LEN_MULT_SHIFT 6439#define CMIS_CABLE_LEN_VAL_MASK 0x3F /* Length value, bits 5:0 */440#define CMIS_CABLE_LEN_MULT_01 0 /* x 0.1m */441#define CMIS_CABLE_LEN_MULT_1 1 /* x 1m */442#define CMIS_CABLE_LEN_MULT_10 2 /* x 10m */443#define CMIS_CABLE_LEN_MULT_100 3 /* x 100m */444445/* Lane monitor stride (each monitor is U16 = 2 bytes per lane) */446#define CMIS_LANE_MON_SIZE 2447#define CMIS_MAX_LANES 8448449#endif /* !_NET_CMIS_H_ */450451452