/*
 * Copyright (c) Advanced Micro Devices, Inc. All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

/* This file is automatically generated. DO NOT EDIT IT. To make
 * changes, edit the .yml files under doc/mcdi/ and rebuild this file
 * with "make mcdi_headers". */

#ifndef IFOE_MCDI_HOSTAPP_H
#define IFOE_MCDI_HOSTAPP_H

/* PMA_TXEQ_CURSOR_TYPE enum: This enum defines the TXEQ parameters that can be
 * set or retrieved using the PMA_TXEQ_GET/SET commands.
 */
/* enum: Pre-cursor3 */
#define PMA_TXEQ_CURSOR_TYPE_PRE3 0x0
/* enum: Pre-cursor2 */
#define PMA_TXEQ_CURSOR_TYPE_PRE2 0x1
/* enum: Pre-cursor1 */
#define PMA_TXEQ_CURSOR_TYPE_PRE1 0x2
/* enum: Main Cursor */
#define PMA_TXEQ_CURSOR_TYPE_MAIN 0x3
/* enum: Post-cursor1 */
#define PMA_TXEQ_CURSOR_TYPE_POST1 0x4

/* PMA_POLARITY_TYPE enum: This enum defines the polarity modes that can be
 * used for PMA_CONFIGURE_LANE.
 */
/* enum: Use the default polarity for the board. */
#define PMA_POLARITY_TYPE_BOARD_DEFAULT 0x0
/* enum: Don't invert channel polarity. */
#define PMA_POLARITY_TYPE_NON_INVERTED 0x1
/* enum: Invert channel polarity. */
#define PMA_POLARITY_TYPE_INVERTED 0x2

/* PMA_RATE_SPECIFIER enum: This enum defines a combined per-lane Gbps baud
 * rates (symbol rate) and the modulation scheme for use with
 * PMA_CONFIGURE_LANE command. The rates represent lane symbol rates, not port
 * rates nor the lane frequency. `P` in the enum names indicates the decimal
 * point after gigabauds. e.g. 1P250 = 1.25 Gbd.
 */
/* enum: Power down the lane. No transmission or reception should be enabled in
 * neither direction nor internally.
 */
#define PMA_RATE_SPECIFIER_POWER_DOWN 0x0
/* enum: 1.25 Gbd NRZ */
#define PMA_RATE_SPECIFIER_1P250_NRZ 0x1
/* enum: 10.3125 Gbd NRZ */
#define PMA_RATE_SPECIFIER_10P3125_NRZ 0x2
/* enum: 25.78125 Gbd NRZ */
#define PMA_RATE_SPECIFIER_25P78125_NRZ 0x3
/* enum: 53.125 Gbd PAM4 */
#define PMA_RATE_SPECIFIER_53P125_PAM4 0x4
/* enum: 106.25 Gbd PAM4 */
#define PMA_RATE_SPECIFIER_106P25_PAM4 0x5
/* enum: 212.5 Gbd PAM4 */
#define PMA_RATE_SPECIFIER_212P5_PAM4 0x6

/* PMA_PRBS_PATTERN enum: This enum defines the PRBS patterns that can be used
 * for PMA_PRBS_TX and PMA_PRBS_RX operations.
 */
/* enum: Special enum element to indicate to turn off PRBS transmission or
 * listening (receive). I.e. This has different meanings for TX and RX.
 */
#define PMA_PRBS_PATTERN_OFF 0x0
/* enum: Special enum element to indicate to ask MC FW to use its default. This
 * eliminates the need for clients to know which PRBS patterns are supported by
 * the MC FW. This may differ between products but should remain the same
 * across different MC FW versions of the same product.
 */
#define PMA_PRBS_PATTERN_DEFAULT 0x1
#define PMA_PRBS_PATTERN_PRBS7 0x2           /* enum */
#define PMA_PRBS_PATTERN_PRBS9 0x3           /* enum */
#define PMA_PRBS_PATTERN_PRBS11 0x4          /* enum */
#define PMA_PRBS_PATTERN_PRBS13 0x5          /* enum */
#define PMA_PRBS_PATTERN_PRBS15 0x6          /* enum */
#define PMA_PRBS_PATTERN_PRBS23 0x7          /* enum */
#define PMA_PRBS_PATTERN_PRBS31 0x8          /* enum */
#define PMA_PRBS_PATTERN_QPRBS13 0x9         /* enum */
#define PMA_PRBS_PATTERN_JP03A 0xa           /* enum */
#define PMA_PRBS_PATTERN_JP03B 0xb           /* enum */
#define PMA_PRBS_PATTERN_TRANS_LINEARITY 0xc /* enum */
/* enum: USER_DEFINED pattern must be accompanied with a USER_PATTERN field */
#define PMA_PRBS_PATTERN_USER_DEFINED 0xd

/* AN_TYPE structuredef: Auto-negotiation types defined in IEEE802.3 */
#define AN_TYPE_LEN 4
#define AN_TYPE_TYPE_OFST 0
#define AN_TYPE_TYPE_LEN 4
/* enum: None, AN disabled or not supported */
#define MC_CMD_AN_NONE 0x0
/* enum: Clause 28 - BASE-T */
#define MC_CMD_AN_CLAUSE28 0x1
/* enum: Clause 37 - BASE-X */
#define MC_CMD_AN_CLAUSE37 0x2
/* enum: Clause 73 - BASE-R startup protocol for backplane and copper cable
 * assemblies. Includes Clause 72/Clause 92 link-training.
 */
#define MC_CMD_AN_CLAUSE73 0x3
#define AN_TYPE_TYPE_LBN 0
#define AN_TYPE_TYPE_WIDTH 32

/* FEC_TYPE structuredef: Forward error correction types defined in IEEE802.3
 */
#define FEC_TYPE_LEN 4
#define FEC_TYPE_TYPE_OFST 0
#define FEC_TYPE_TYPE_LEN 4
/* enum: No FEC */
#define MC_CMD_FEC_NONE 0x0
/* enum: IEEE 802.3, Clause 74 BASE-R FEC (a.k.a Firecode) */
#define MC_CMD_FEC_BASER 0x1
/* enum: IEEE 802.3, Clause 91/Clause 108 Reed-Solomon FEC */
#define MC_CMD_FEC_RS 0x2
/* enum: IEEE 802.3, Clause 161, interleaved RS-FEC sublayer for 100GBASE-R
 * PHYs
 */
#define MC_CMD_FEC_IEEE_RS_INT 0x3
/* enum: Ethernet Consortium, Low Latency RS-FEC. RS(272, 258). Replaces FEC
 * specified in Clause 119 for 100/200G PHY. Replaces FEC specified in Clause
 * 134 for 50G PHY.
 */
#define MC_CMD_FEC_ETCS_RS_LL 0x4
/* enum: FEC mode selected automatically */
#define MC_CMD_FEC_AUTO 0x5
#define FEC_TYPE_TYPE_LBN 0
#define FEC_TYPE_TYPE_WIDTH 32

/* MC_CMD_ETH_TECH structuredef: Ethernet technology as defined by IEEE802.3,
 * Ethernet Technology Consortium, proprietary technologies. The driver must
 * not use technologies labelled NONE and AUTO.
 */
#define MC_CMD_ETH_TECH_LEN 16
/* The enums in this field can be used either as bitwise indices into a tech
 * mask (e.g. see MC_CMD_ETH_AN_FIELDS/TECH_MASK for example) or as regular
 * enums (e.g. see MC_CMD_LINK_CTRL_IN/ADVERTISED_TECH_ABILITIES_MASK). This
 * structure must be updated to add new technologies when projects that need
 * them arise. An incomplete list of possible expansion in the future include:
 * 100GBASE_KP4, 800GBASE_CR8, 800GBASE_KR8, 800GBASE_DR8, 800GBASE_SR8
 * 800GBASE_VR8
 */
#define MC_CMD_ETH_TECH_TECH_OFST 0
#define MC_CMD_ETH_TECH_TECH_LEN 16
/* enum: 1000BASE-KX - 1000BASE-X PCS/PMA over an electrical backplane PMD. See
 * IEEE 802.3 Clause 70
 */
#define MC_CMD_ETH_TECH_1000BASE_KX 0x0
/* enum: Compatibility alias for 1000BASE_KX. Do not use in new code. */
#define MC_CMD_ETH_TECH_1000BASEKX 0x0
/* enum: 10GBASE-R - PCS/PMA over an electrical backplane PMD. Refer to IEEE
 * 802.3 Clause 72
 */
#define MC_CMD_ETH_TECH_10GBASE_KR 0x1
/* enum: 40GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 84.
 */
#define MC_CMD_ETH_TECH_40GBASE_KR4 0x2
/* enum: 40GBASE-R PCS/PMA over 4 lane shielded copper balanced cable PMD. See
 * IEEE 802.3 Clause 85
 */
#define MC_CMD_ETH_TECH_40GBASE_CR4 0x3
/* enum: 40GBASE-R PCS/PMA over 4 lane multimode fiber PMD as specified in
 * Clause 86
 */
#define MC_CMD_ETH_TECH_40GBASE_SR4 0x4
/* enum: 40GBASE-R PCS/PMA over 4 WDM lane single mode fiber PMD with long
 * reach. See IEEE 802.3 Clause 87
 */
#define MC_CMD_ETH_TECH_40GBASE_LR4 0x5
/* enum: 25GBASE-R PCS/PMA over shielded balanced copper cable PMD. See IEEE
 * 802.3 Clause 110
 */
#define MC_CMD_ETH_TECH_25GBASE_CR 0x6
/* enum: 25GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 111
 */
#define MC_CMD_ETH_TECH_25GBASE_KR 0x7
/* enum: 25GBASE-R PCS/PMA over multimode fiber PMD. Refer to IEEE 802.3 Clause
 * 112
 */
#define MC_CMD_ETH_TECH_25GBASE_SR 0x8
/* enum: An Ethernet Physical layer operating at 50 Gb/s on twin-axial copper
 * cable. Refer to Ethernet Technology Consortium 25/50G Ethernet Spec.
 */
#define MC_CMD_ETH_TECH_50GBASE_CR2 0x9
/* enum: An Ethernet Physical layer operating at 50 Gb/s on copper backplane.
 * Refer to Ethernet Technology Consortium 25/50G Ethernet Spec.
 */
#define MC_CMD_ETH_TECH_50GBASE_KR2 0xa
/* enum: 100GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 93
 */
#define MC_CMD_ETH_TECH_100GBASE_KR4 0xb
/* enum: 100GBASE-R PCS/PMA over 4 lane multimode fiber PMD. See IEEE 802.3
 * Clause 95
 */
#define MC_CMD_ETH_TECH_100GBASE_SR4 0xc
/* enum: 100GBASE-R PCS/PMA over 4 lane shielded copper balanced cable PMD. See
 * IEEE 802.3 Clause 92
 */
#define MC_CMD_ETH_TECH_100GBASE_CR4 0xd
/* enum: 100GBASE-R PCS/PMA over 4 WDM lane single mode fiber PMD, with
 * long/extended reach,. See IEEE 802.3 Clause 88
 */
#define MC_CMD_ETH_TECH_100GBASE_LR4_ER4 0xe
/* enum: An Ethernet Physical layer operating at 50 Gb/s on short reach fiber.
 * Refer to Ethernet Technology Consortium 25/50G Ethernet Spec.
 */
#define MC_CMD_ETH_TECH_50GBASE_SR2 0xf
/* enum: 1000BASEX PCS/PMA. See IEEE 802.3 Clause 36 over undefined PMD, duplex
 * mode unknown
 */
#define MC_CMD_ETH_TECH_1000BASE_X 0x10
/* enum: Compatibility alias for 1000BASE_X. Do not use in new code. */
#define MC_CMD_ETH_TECH_1000BASEX 0x10
/* enum: Non-standardised. 10G direct attach */
#define MC_CMD_ETH_TECH_10GBASE_CR 0x11
/* enum: 10GBASE-SR fiber over 850nm optics. See IEEE 802.3 Clause 52 */
#define MC_CMD_ETH_TECH_10GBASE_SR 0x12
/* enum: 10GBASE-LR fiber over 1310nm optics. See IEEE 802.3 Clause 52 */
#define MC_CMD_ETH_TECH_10GBASE_LR 0x13
/* enum: 10GBASE-LRM fiber over 1310 nm optics. See IEEE 802.3 Clause 68 */
#define MC_CMD_ETH_TECH_10GBASE_LRM 0x14
/* enum: 10GBASE-ER fiber over 1550nm optics. See IEEE 802.3 Clause 52 */
#define MC_CMD_ETH_TECH_10GBASE_ER 0x15
/* enum: 50GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 137
 */
#define MC_CMD_ETH_TECH_50GBASE_KR 0x16
/* enum: 50GBASE-SR PCS/PMA over multimode fiber PMD as specified in Clause 138
 */
#define MC_CMD_ETH_TECH_50GBASE_SR 0x17
/* enum: 50GBASE-CR PCS/PMA over shielded copper balanced cable PMD. See IEEE
 * 802.3 Clause 136
 */
#define MC_CMD_ETH_TECH_50GBASE_CR 0x18
/* enum: 50GBASE-R PCS/PMA over single mode fiber PMD as specified in Clause
 * 139.
 */
#define MC_CMD_ETH_TECH_50GBASE_LR_ER_FR 0x19
/* enum: 100 Gb/s PHY using 100GBASE-R encoding over single-mode fiber with
 * reach up to at least 500 m (see IEEE 802.3 Clause 140)
 */
#define MC_CMD_ETH_TECH_50GBASE_DR 0x1a
/* enum: 100GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 137
 */
#define MC_CMD_ETH_TECH_100GBASE_KR2 0x1b
/* enum: 100GBASE-R PCS/PMA over 2 lane multimode fiber PMD. See IEEE 802.3
 * Clause 138
 */
#define MC_CMD_ETH_TECH_100GBASE_SR2 0x1c
/* enum: 100GBASE-R PCS/PMA over 2 lane shielded copper balanced cable PMD. See
 * IEEE 802.3 Clause 136
 */
#define MC_CMD_ETH_TECH_100GBASE_CR2 0x1d
/* enum: Unknown source */
#define MC_CMD_ETH_TECH_100GBASE_LR2_ER2_FR2 0x1e
/* enum: Unknown source */
#define MC_CMD_ETH_TECH_100GBASE_DR2 0x1f
/* enum: 200GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 137
 */
#define MC_CMD_ETH_TECH_200GBASE_KR4 0x20
/* enum: 200GBASE-R PCS/PMA over 4 lane multimode fiber PMD. See IEEE 802.3
 * Clause 138
 */
#define MC_CMD_ETH_TECH_200GBASE_SR4 0x21
/* enum: 200GBASE-R PCS/PMA over 4 WDM lane single-mode fiber PMD as specified
 * in Clause 122
 */
#define MC_CMD_ETH_TECH_200GBASE_LR4_ER4_FR4 0x22
/* enum: 200GBASE-R PCS/PMA over 4-lane single-mode fiber PMD. See IEEE 802.3
 * Clause 121
 */
#define MC_CMD_ETH_TECH_200GBASE_DR4 0x23
/* enum: 200GBASE-R PCS/PMA over 4 lane shielded copper balanced cable PMD as
 * specified in Clause 136
 */
#define MC_CMD_ETH_TECH_200GBASE_CR4 0x24
/* enum: Ethernet Technology Consortium 400G AN Spec. 400GBASE-KR8 PMD uses
 * 802.3 Clause 137, but the number PMD lanes is 8.
 */
#define MC_CMD_ETH_TECH_400GBASE_KR8 0x25
/* enum: 400GBASE-R PCS/PMA over 8-lane multimode fiber PMD. See IEEE 802.3
 * Clause 138
 */
#define MC_CMD_ETH_TECH_400GBASE_SR8 0x26
/* enum: 400GBASE-R PCS/PMA over 8 WDM lane single-mode fiber PMD. See IEEE
 * 802.3 Clause 122
 */
#define MC_CMD_ETH_TECH_400GBASE_LR8_ER8_FR8 0x27
/* enum: Unknown source */
#define MC_CMD_ETH_TECH_400GBASE_DR8 0x28
/* enum: Ethernet Technology Consortium 400G AN Spec. 400GBASE-CR8 PMD uses
 * IEEE 802.3 Clause 136, but the number PMD lanes is 8.
 */
#define MC_CMD_ETH_TECH_400GBASE_CR8 0x29
/* enum: 100GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3ck
 * Clause 163.
 */
#define MC_CMD_ETH_TECH_100GBASE_KR 0x2a
/* enum: IEEE 802.3ck. 100G PHY with PMD as specified in Clause 167 over short
 * reach fiber
 */
#define MC_CMD_ETH_TECH_100GBASE_SR 0x2b
/* enum: 100G PMD together with single-mode fiber medium. See IEEE 802.3 Clause
 * 140
 */
#define MC_CMD_ETH_TECH_100GBASE_LR_ER_FR 0x2c
/* enum: 100GBASE-R PCS/PMA over shielded balanced copper cable PMD. See IEEE
 * 802.3 in Clause 162 IEEE 802.3ck.
 */
#define MC_CMD_ETH_TECH_100GBASE_CR 0x2d
/* enum: 100G PMD together with single-mode fiber medium. See IEEE 802.3 Clause
 * 140
 */
#define MC_CMD_ETH_TECH_100GBASE_DR 0x2e
/* enum: 200GBASE-R PCS/PMA over an electrical backplane PMD as specified in
 * Clause 163 IEEE 802.3ck
 */
#define MC_CMD_ETH_TECH_200GBASE_KR2 0x2f
/* enum: 200G PHY with PMD as specified in Clause 167 over short reach fiber
 * IEEE 802.3ck
 */
#define MC_CMD_ETH_TECH_200GBASE_SR2 0x30
/* enum: Unknown source */
#define MC_CMD_ETH_TECH_200GBASE_LR2_ER2_FR2 0x31
/* enum: Unknown source */
#define MC_CMD_ETH_TECH_200GBASE_DR2 0x32
/* enum: 200GBASE-R PCS/PMA over 2 lane shielded balanced copper cable PMD as
 * specified in Clause 162 IEEE 802.3ck.
 */
#define MC_CMD_ETH_TECH_200GBASE_CR2 0x33
/* enum: 400GBASE-R PCS/PMA over an electrical backplane PMD. See IEEE 802.3
 * Clause 163 IEEE 802.3ck.
 */
#define MC_CMD_ETH_TECH_400GBASE_KR4 0x34
/* enum: 400G PHY with PMD over short reach fiber. See Clause 167 of IEEE
 * 802.3ck.
 */
#define MC_CMD_ETH_TECH_400GBASE_SR4 0x35
/* enum: 400GBASE-R PCS/PMA over 4 WDM lane single-mode fiber PMD. See IEEE
 * 802.3 Clause 151
 */
#define MC_CMD_ETH_TECH_400GBASE_LR4_ER4_FR4 0x36
/* enum: 400GBASE-R PCS/PMA over 4-lane single-mode fiber PMD as specified in
 * Clause 124
 */
#define MC_CMD_ETH_TECH_400GBASE_DR4 0x37
/* enum: 400GBASE-R PCS/PMA over 4 lane shielded balanced copper cable PMD as
 * specified in Clause 162 of IEEE 802.3ck.
 */
#define MC_CMD_ETH_TECH_400GBASE_CR4 0x38
/* enum: Automatic tech mode. The driver must not use this. */
#define MC_CMD_ETH_TECH_AUTO 0x39
/* enum: See IEEE 802.3cc-2017 Clause 114 */
#define MC_CMD_ETH_TECH_25GBASE_LR_ER 0x3a
/* enum: Up to 7 m over twinaxial copper cable assembly (10 lanes, 10 Gbit/s
 * each) See IEEE 802.3ba-2010 Clause 85
 */
#define MC_CMD_ETH_TECH_100GBASE_CR10 0x3b
/* enum: 800GBASE-R PCS/PMA over an electrical backplane PMD. 8-lane backplane;
 * clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_KR8 0x3c
/* enum: 800GBASE-R PCS/PMA over 8 lane shielded balanced copper cable PMD
 * (twinax). Clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_CR8 0x3d
/* enum: 800GBASE-R PCS/PMA over 8-lane multimode fiber PMD (short reach).
 * Clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_SR8 0x3e
/* enum: 800GBASE-R PCS/PMA over 8-lane single-mode fiber PMD (direct reach).
 * Clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_DR8 0x3f
/* enum: 800GBASE-R PCS/PMA over 8-lane very short reach medium (e.g., copper
 * or fiber). Clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_VR8 0x40
/* enum: 800GBASE-R PCS/PMA over an electrical backplane PMD. 4-lane backplane
 * at 200 Gb/s per lane; clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_KR4 0x41
/* enum: 800GBASE-R PCS/PMA over 4-lane shielded balanced copper cable PMD
 * (twinax), 200 Gb/s per lane; clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_CR4 0x42
/* enum: 800GBASE-R PCS/PMA over 4-lane single-mode fiber PMD (direct reach),
 * 200 Gb/s per lane; clause TBD (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_800GBASE_DR4 0x43
/* enum: 10BASE-T PCS/PMA over twisted-pair copper cable. Refer to IEEE 802.3
 * Clause 14
 */
#define MC_CMD_ETH_TECH_10BASE_T 0x44
/* enum: 100BASEX PCS/PMA. See IEEE 802.3 Clause 24 over undefined PMD, duplex
 * mode unknown.
 */
#define MC_CMD_ETH_TECH_100BASE_X 0x45
/* enum: 1000BASE-SX PCS/PMA using short wavelength laser devices over
 * multimode fiber. Refer to IEEE 802.3 Clause 38
 */
#define MC_CMD_ETH_TECH_1000BASE_SX 0x46
/* enum: 1000BASE-LX PCS/PMA using long wavelength laser devices over multimode
 * and single-mode fiber. Refer to IEEE 802.3 Clause 38
 */
#define MC_CMD_ETH_TECH_1000BASE_LX 0x47
/* enum: 1000BASE-LX10 PCS/PMA for point-to-point link over two single-mode or
 * multimode optical fibers. Refer to IEEE 802.3 Clause 59 and Clause 66
 */
#define MC_CMD_ETH_TECH_1000BASE_LX10 0x48
/* enum: 1000BASE-BX10 PCS/PMA for point-to-point link over one single-mode
 * optical fiber. Refer to IEEE 802.3 Clause 59 and Clause 66
 */
#define MC_CMD_ETH_TECH_1000BASE_BX10 0x49
/* enum: 2.5GBASE-KX PCS/PMA over an electrical backplane PMD. Refer to IEEE
 * 802.3 Clause 128
 */
#define MC_CMD_ETH_TECH_2500BASE_KX 0x4a
/* enum: 5GBASE-KR PCS/PMA over an electrical backplane PMD. Refer to IEEE
 * 802.3 Clause 130
 */
#define MC_CMD_ETH_TECH_5GBASE_KR 0x4b
/* enum: 200GBASE-R PCS/PMA over an electrical backplane PMD. Clause 170 (IEEE
 * 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_200GBASE_KR1 0x4c
/* enum: 200GBASE-R PCS/PMA over 1 lane shielded balanced copper cable PMD.
 * Clause 179 (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_200GBASE_CR1 0x4d
/* enum: 200GBASE-R PCS/PMA over 1-lane single-mode fiber PMD. Clause 180 (IEEE
 * 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_200GBASE_DR1 0x4e
/* enum: 400GBASE-R PCS/PMA over an electrical backplane PMD. Clause 178 (IEEE
 * 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_400GBASE_KR2 0x4f
/* enum: 400GBASE-R PCS/PMA over 2 lane shielded balanced copper cable PMD.
 * Clause 179 (IEEE 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_400GBASE_CR2 0x50
/* enum: 400GBASE-R PCS/PMA over 2-lane single-mode fiber PMD. Clause 180 (IEEE
 * 802.3dj draft)
 */
#define MC_CMD_ETH_TECH_400GBASE_DR2 0x51
/* enum: Invalid tech mode. The driver must not use this. */
#define MC_CMD_ETH_TECH_NONE 0x7f
#define MC_CMD_ETH_TECH_TECH_LBN 0
#define MC_CMD_ETH_TECH_TECH_WIDTH 128

/* MC_CMD_LINK_STATUS_FLAGS structuredef */
#define MC_CMD_LINK_STATUS_FLAGS_LEN 8
/* Flags used to report the current configuration/state of the link. */
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_OFST 0
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LEN 8
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LO_OFST 0
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LO_LEN 4
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LO_LBN 0
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LO_WIDTH 32
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_HI_OFST 4
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_HI_LEN 4
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_HI_LBN 32
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_HI_WIDTH 32
/* enum property: bitshift */
/* enum: Whether we have overall link up */
#define MC_CMD_LINK_STATUS_FLAGS_LINK_UP 0x0
/* enum: If set, the PHY has no external RX link synchronisation */
#define MC_CMD_LINK_STATUS_FLAGS_NO_PHY_LINK 0x1
/* enum: If set, PMD/MDI is not connected (e.g. cable disconnected, module cage
 * empty)
 */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_MDI_DISCONNECTED 0x2
/* enum: Set on error while decoding module data (e.g. module EEPROM does not
 * contain valid values, has checksum errors, etc.)
 */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_BAD 0x3
/* enum: Set when module unsupported (e.g. unsupported link rate or link
 * technology)
 */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_UNSUPPORTED 0x4
/* enum: Set on error while communicating with the module (e.g. I2C errors
 * while reading EEPROM)
 */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_COMMS_FAULT 0x5
/* enum: Set on module overcurrent/overvoltage condition */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_POWER_FAULT 0x6
/* enum: Set on module overtemperature condition */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_THERMAL_FAULT 0x7
/* enum: If set, the module is indicating Loss of Signal */
#define MC_CMD_LINK_STATUS_FLAGS_PMD_LOS 0x8
/* enum: If set, PMA is indicating loss of CDR lock (clock sync) */
#define MC_CMD_LINK_STATUS_FLAGS_PMA_NO_CDR_LOCK 0x9
/* enum: If set, PMA is indicating loss of analog signal */
#define MC_CMD_LINK_STATUS_FLAGS_PMA_LOS 0xa
/* enum: If set, PCS is indicating loss of block lock */
#define MC_CMD_LINK_STATUS_FLAGS_PCS_NO_BLOCK_LOCK 0xb
/* enum: If set, PCS is indicating loss of alignment marker lock on one or more
 * lanes
 */
#define MC_CMD_LINK_STATUS_FLAGS_PCS_NO_AM_LOCK 0xc
/* enum: If set, PCS is indicating loss of overall alignment lock */
#define MC_CMD_LINK_STATUS_FLAGS_PCS_NO_ALIGN_LOCK 0xd
/* enum: If set, PCS is indicating high bit error rate condition. */
#define MC_CMD_LINK_STATUS_FLAGS_PCS_HI_BER 0xe
/* enum: If set, FEC is indicating loss of FEC lock */
#define MC_CMD_LINK_STATUS_FLAGS_FEC_NO_LOCK 0xf
/* enum: If set, indicates that the number of symbol errors in a 8192-codeword
 * window has exceeded the threshold K (417).
 */
#define MC_CMD_LINK_STATUS_FLAGS_FEC_HI_SER 0x10
/* enum: If set, the receiver has detected the local FEC has degraded. */
#define MC_CMD_LINK_STATUS_FLAGS_FEC_LOCAL_DEGRADED 0x11
/* enum: If set, the receiver has detected the remote FEC has degraded. */
#define MC_CMD_LINK_STATUS_FLAGS_FEC_RM_DEGRADED 0x12
/* enum: If set, the number of symbol errors is over an internal threshold. */
#define MC_CMD_LINK_STATUS_FLAGS_FEC_DEGRADED_SER 0x13
/* enum: If set, autonegotiation has detected an auto-negotiation capable link
 * partner
 */
#define MC_CMD_LINK_STATUS_FLAGS_AN_ABLE 0x14
/* enum: If set, autonegotiation base page exchange has failed */
#define MC_CMD_LINK_STATUS_FLAGS_AN_BP_FAILED 0x15
/* enum: If set, autonegotiation next page exchange has failed */
#define MC_CMD_LINK_STATUS_FLAGS_AN_NP_FAILED 0x16
/* enum: If set, autonegotiation has failed to negotiate a common set of
 * capabilities
 */
#define MC_CMD_LINK_STATUS_FLAGS_AN_NO_HCD 0x17
/* enum: If set, local end link training has failed to establish link training
 * frame lock on one or more lanes
 */
#define MC_CMD_LINK_STATUS_FLAGS_LT_NO_LOCAL_FRAME_LOCK 0x18
/* enum: If set, remote end link training has failed to establish link training
 * frame lock on one or more lanes
 */
#define MC_CMD_LINK_STATUS_FLAGS_LT_NO_RM_FRAME_LOCK 0x19
/* enum: If set, remote end has failed to assert Receiver Ready (link training
 * success) within the designated timeout
 */
#define MC_CMD_LINK_STATUS_FLAGS_LT_NO_RX_READY 0x1a
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_LBN 0
#define MC_CMD_LINK_STATUS_FLAGS_STATUS_FLAGS_WIDTH 64

/* MC_CMD_PAUSE_MODE structuredef */
#define MC_CMD_PAUSE_MODE_LEN 1
#define MC_CMD_PAUSE_MODE_TYPE_OFST 0
#define MC_CMD_PAUSE_MODE_TYPE_LEN 1
/* enum: See IEEE 802.3 Clause 73.6.6 */
#define MC_CMD_PAUSE_MODE_AN_PAUSE 0x0
/* enum: See IEEE 802.3 Clause 73.6.6 */
#define MC_CMD_PAUSE_MODE_AN_ASYM_DIR 0x1
#define MC_CMD_PAUSE_MODE_TYPE_LBN 0
#define MC_CMD_PAUSE_MODE_TYPE_WIDTH 8

/* MC_CMD_LOOPBACK_V2 structuredef: Loopback modes for use with the new
 * MC_CMD_LINK_CTRL and MC_CMD_LINK_STATE. These loopback modes are not
 * supported in other getlink/setlink commands.
 */
#define MC_CMD_LOOPBACK_V2_LEN 4
#define MC_CMD_LOOPBACK_V2_MODE_OFST 0
#define MC_CMD_LOOPBACK_V2_MODE_LEN 4
/* enum: No loopback */
#define MC_CMD_LOOPBACK_V2_NONE 0x0
/* enum: Let firmware choose a supported loopback mode */
#define MC_CMD_LOOPBACK_V2_AUTO 0x1
/* enum: Loopback after the MAC */
#define MC_CMD_LOOPBACK_V2_POST_MAC 0x2
/* enum: Loopback after the PCS */
#define MC_CMD_LOOPBACK_V2_POST_PCS 0x3
/* enum: Loopback after the PMA */
#define MC_CMD_LOOPBACK_V2_POST_PMA 0x4
/* enum: Loopback after the MDI Wireside */
#define MC_CMD_LOOPBACK_V2_POST_MDI_WS 0x5
/* enum: Loopback after the PMA Wireside */
#define MC_CMD_LOOPBACK_V2_POST_PMA_WS 0x6
/* enum: Loopback after the PCS Wireside */
#define MC_CMD_LOOPBACK_V2_POST_PCS_WS 0x7
/* enum: Loopback after the MAC Wireside */
#define MC_CMD_LOOPBACK_V2_POST_MAC_WS 0x8
/* enum: Loopback after the MAC FIFOs (before the MAC) */
#define MC_CMD_LOOPBACK_V2_PRE_MAC 0x9
#define MC_CMD_LOOPBACK_V2_MODE_LBN 0
#define MC_CMD_LOOPBACK_V2_MODE_WIDTH 32

/* MC_CMD_FCNTL structuredef */
#define MC_CMD_FCNTL_LEN 4
#define MC_CMD_FCNTL_MASK_OFST 0
#define MC_CMD_FCNTL_MASK_LEN 4
/* enum: Flow control is off. */
#define MC_CMD_FCNTL_OFF 0x0
/* enum: Respond to flow control. */
#define MC_CMD_FCNTL_RESPOND 0x1
/* enum: Respond to and Issue flow control. */
#define MC_CMD_FCNTL_BIDIR 0x2
/* enum: Auto negotiate flow control. */
#define MC_CMD_FCNTL_AUTO 0x3
/* enum: Priority flow control. This is only supported on KSB. */
#define MC_CMD_FCNTL_QBB 0x4
/* enum: Issue flow control. */
#define MC_CMD_FCNTL_GENERATE 0x5
#define MC_CMD_FCNTL_MASK_LBN 0
#define MC_CMD_FCNTL_MASK_WIDTH 32

/* MC_CMD_LINK_FLAGS structuredef */
#define MC_CMD_LINK_FLAGS_LEN 4
/* The enums defined in this field are used as indices into the
 * MC_CMD_LINK_FLAGS bitmask.
 */
#define MC_CMD_LINK_FLAGS_MASK_OFST 0
#define MC_CMD_LINK_FLAGS_MASK_LEN 4
/* enum property: bitshift */
/* enum: Enable auto-negotiation. If AN is enabled, link technology and FEC
 * mode are determined by advertised capabilities and requested FEC modes,
 * combined with link partner capabilities. If AN is disabled, link technology
 * is forced to LINK_TECHNOLOGY and FEC mode is forced to FEC_MODE. Not valid
 * if loopback is enabled
 */
#define MC_CMD_LINK_FLAGS_AUTONEG_EN 0x0
/* enum: Enable parallel detect. In addition to AN, try to sense partner forced
 * speed/FEC mode (when partner AN disabled). Only valid if AN is enabled.
 */
#define MC_CMD_LINK_FLAGS_PARALLEL_DETECT_EN 0x1
/* enum: Force link down, in electrical idle. */
#define MC_CMD_LINK_FLAGS_LINK_DISABLE 0x2
/* enum: Ignore the sequence number and always apply. */
#define MC_CMD_LINK_FLAGS_IGNORE_MODULE_SEQ 0x3
/* enum: Power off the network port hardware. Low power capabilities vary
 * between different hardware solution but typically this will power down the
 * PHY, disable high speed I/O and gate the associated clocks.
 */
#define MC_CMD_LINK_FLAGS_POWER_OFF 0x4
#define MC_CMD_LINK_FLAGS_MASK_LBN 0
#define MC_CMD_LINK_FLAGS_MASK_WIDTH 32

/* PMA_TXEQ_CURSOR structuredef: This structure is used to represent the TXEQ
 * parameters for a given lane. It is used for PMA_TXEQ_GET/SET commands. Must
 * be 4-byte aligned so that arrays and arguments of the commands can be 32-bit
 * aligned.
 */
#define PMA_TXEQ_CURSOR_LEN 8
/* TXEQ cursor type describing the weight/coefficient/tap */
#define PMA_TXEQ_CURSOR_TYPE_OFST 0
#define PMA_TXEQ_CURSOR_TYPE_LEN 4
/* enum property: value */
/*            Enum values, see field(s): */
/*               PMA_TXEQ_CURSOR_TYPE */
#define PMA_TXEQ_CURSOR_TYPE_LBN 0
#define PMA_TXEQ_CURSOR_TYPE_WIDTH 32
/* TXEQ cursor value (weight/coefficient/tap etc.) */
#define PMA_TXEQ_CURSOR_VALUE_OFST 4
#define PMA_TXEQ_CURSOR_VALUE_LEN 4
#define PMA_TXEQ_CURSOR_VALUE_LBN 32
#define PMA_TXEQ_CURSOR_VALUE_WIDTH 32

#endif /* IFOE_MCDI_HOSTAPP_H */
