uboot/arch/mips/mach-octeon/include/mach/cvmx-agl-defs.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Copyright (C) 2020 Marvell International Ltd.
   4 *
   5 * Configuration and status register (CSR) type definitions for
   6 * Octeon agl.
   7 *
   8 */
   9
  10#ifndef __CVMX_AGL_DEFS_H__
  11#define __CVMX_AGL_DEFS_H__
  12
  13#define CVMX_AGL_GMX_BAD_REG                        (0x00011800E0000518ull)
  14#define CVMX_AGL_GMX_BIST                           (0x00011800E0000400ull)
  15#define CVMX_AGL_GMX_DRV_CTL                        (0x00011800E00007F0ull)
  16#define CVMX_AGL_GMX_INF_MODE                       (0x00011800E00007F8ull)
  17#define CVMX_AGL_GMX_PRTX_CFG(offset)               (0x00011800E0000010ull + ((offset) & 1) * 2048)
  18#define CVMX_AGL_GMX_RXX_ADR_CAM0(offset)           (0x00011800E0000180ull + ((offset) & 1) * 2048)
  19#define CVMX_AGL_GMX_RXX_ADR_CAM1(offset)           (0x00011800E0000188ull + ((offset) & 1) * 2048)
  20#define CVMX_AGL_GMX_RXX_ADR_CAM2(offset)           (0x00011800E0000190ull + ((offset) & 1) * 2048)
  21#define CVMX_AGL_GMX_RXX_ADR_CAM3(offset)           (0x00011800E0000198ull + ((offset) & 1) * 2048)
  22#define CVMX_AGL_GMX_RXX_ADR_CAM4(offset)           (0x00011800E00001A0ull + ((offset) & 1) * 2048)
  23#define CVMX_AGL_GMX_RXX_ADR_CAM5(offset)           (0x00011800E00001A8ull + ((offset) & 1) * 2048)
  24#define CVMX_AGL_GMX_RXX_ADR_CAM_EN(offset)         (0x00011800E0000108ull + ((offset) & 1) * 2048)
  25#define CVMX_AGL_GMX_RXX_ADR_CTL(offset)            (0x00011800E0000100ull + ((offset) & 1) * 2048)
  26#define CVMX_AGL_GMX_RXX_DECISION(offset)           (0x00011800E0000040ull + ((offset) & 1) * 2048)
  27#define CVMX_AGL_GMX_RXX_FRM_CHK(offset)            (0x00011800E0000020ull + ((offset) & 1) * 2048)
  28#define CVMX_AGL_GMX_RXX_FRM_CTL(offset)            (0x00011800E0000018ull + ((offset) & 1) * 2048)
  29#define CVMX_AGL_GMX_RXX_FRM_MAX(offset)            (0x00011800E0000030ull + ((offset) & 1) * 2048)
  30#define CVMX_AGL_GMX_RXX_FRM_MIN(offset)            (0x00011800E0000028ull + ((offset) & 1) * 2048)
  31#define CVMX_AGL_GMX_RXX_IFG(offset)                (0x00011800E0000058ull + ((offset) & 1) * 2048)
  32#define CVMX_AGL_GMX_RXX_INT_EN(offset)             (0x00011800E0000008ull + ((offset) & 1) * 2048)
  33#define CVMX_AGL_GMX_RXX_INT_REG(offset)            (0x00011800E0000000ull + ((offset) & 1) * 2048)
  34#define CVMX_AGL_GMX_RXX_JABBER(offset)             (0x00011800E0000038ull + ((offset) & 1) * 2048)
  35#define CVMX_AGL_GMX_RXX_PAUSE_DROP_TIME(offset)    (0x00011800E0000068ull + ((offset) & 1) * 2048)
  36#define CVMX_AGL_GMX_RXX_RX_INBND(offset)           (0x00011800E0000060ull + ((offset) & 1) * 2048)
  37#define CVMX_AGL_GMX_RXX_STATS_CTL(offset)          (0x00011800E0000050ull + ((offset) & 1) * 2048)
  38#define CVMX_AGL_GMX_RXX_STATS_OCTS(offset)         (0x00011800E0000088ull + ((offset) & 1) * 2048)
  39#define CVMX_AGL_GMX_RXX_STATS_OCTS_CTL(offset)     (0x00011800E0000098ull + ((offset) & 1) * 2048)
  40#define CVMX_AGL_GMX_RXX_STATS_OCTS_DMAC(offset)    (0x00011800E00000A8ull + ((offset) & 1) * 2048)
  41#define CVMX_AGL_GMX_RXX_STATS_OCTS_DRP(offset)     (0x00011800E00000B8ull + ((offset) & 1) * 2048)
  42#define CVMX_AGL_GMX_RXX_STATS_PKTS(offset)         (0x00011800E0000080ull + ((offset) & 1) * 2048)
  43#define CVMX_AGL_GMX_RXX_STATS_PKTS_BAD(offset)     (0x00011800E00000C0ull + ((offset) & 1) * 2048)
  44#define CVMX_AGL_GMX_RXX_STATS_PKTS_CTL(offset)     (0x00011800E0000090ull + ((offset) & 1) * 2048)
  45#define CVMX_AGL_GMX_RXX_STATS_PKTS_DMAC(offset)    (0x00011800E00000A0ull + ((offset) & 1) * 2048)
  46#define CVMX_AGL_GMX_RXX_STATS_PKTS_DRP(offset)     (0x00011800E00000B0ull + ((offset) & 1) * 2048)
  47#define CVMX_AGL_GMX_RXX_UDD_SKP(offset)            (0x00011800E0000048ull + ((offset) & 1) * 2048)
  48#define CVMX_AGL_GMX_RX_BP_DROPX(offset)            (0x00011800E0000420ull + ((offset) & 1) * 8)
  49#define CVMX_AGL_GMX_RX_BP_OFFX(offset)             (0x00011800E0000460ull + ((offset) & 1) * 8)
  50#define CVMX_AGL_GMX_RX_BP_ONX(offset)              (0x00011800E0000440ull + ((offset) & 1) * 8)
  51#define CVMX_AGL_GMX_RX_PRT_INFO                    (0x00011800E00004E8ull)
  52#define CVMX_AGL_GMX_RX_TX_STATUS                   (0x00011800E00007E8ull)
  53#define CVMX_AGL_GMX_SMACX(offset)                  (0x00011800E0000230ull + ((offset) & 1) * 2048)
  54#define CVMX_AGL_GMX_STAT_BP                        (0x00011800E0000520ull)
  55#define CVMX_AGL_GMX_TXX_APPEND(offset)             (0x00011800E0000218ull + ((offset) & 1) * 2048)
  56#define CVMX_AGL_GMX_TXX_CLK(offset)                (0x00011800E0000208ull + ((offset) & 1) * 2048)
  57#define CVMX_AGL_GMX_TXX_CTL(offset)                (0x00011800E0000270ull + ((offset) & 1) * 2048)
  58#define CVMX_AGL_GMX_TXX_MIN_PKT(offset)            (0x00011800E0000240ull + ((offset) & 1) * 2048)
  59#define CVMX_AGL_GMX_TXX_PAUSE_PKT_INTERVAL(offset) (0x00011800E0000248ull + ((offset) & 1) * 2048)
  60#define CVMX_AGL_GMX_TXX_PAUSE_PKT_TIME(offset)     (0x00011800E0000238ull + ((offset) & 1) * 2048)
  61#define CVMX_AGL_GMX_TXX_PAUSE_TOGO(offset)         (0x00011800E0000258ull + ((offset) & 1) * 2048)
  62#define CVMX_AGL_GMX_TXX_PAUSE_ZERO(offset)         (0x00011800E0000260ull + ((offset) & 1) * 2048)
  63#define CVMX_AGL_GMX_TXX_SOFT_PAUSE(offset)         (0x00011800E0000250ull + ((offset) & 1) * 2048)
  64#define CVMX_AGL_GMX_TXX_STAT0(offset)              (0x00011800E0000280ull + ((offset) & 1) * 2048)
  65#define CVMX_AGL_GMX_TXX_STAT1(offset)              (0x00011800E0000288ull + ((offset) & 1) * 2048)
  66#define CVMX_AGL_GMX_TXX_STAT2(offset)              (0x00011800E0000290ull + ((offset) & 1) * 2048)
  67#define CVMX_AGL_GMX_TXX_STAT3(offset)              (0x00011800E0000298ull + ((offset) & 1) * 2048)
  68#define CVMX_AGL_GMX_TXX_STAT4(offset)              (0x00011800E00002A0ull + ((offset) & 1) * 2048)
  69#define CVMX_AGL_GMX_TXX_STAT5(offset)              (0x00011800E00002A8ull + ((offset) & 1) * 2048)
  70#define CVMX_AGL_GMX_TXX_STAT6(offset)              (0x00011800E00002B0ull + ((offset) & 1) * 2048)
  71#define CVMX_AGL_GMX_TXX_STAT7(offset)              (0x00011800E00002B8ull + ((offset) & 1) * 2048)
  72#define CVMX_AGL_GMX_TXX_STAT8(offset)              (0x00011800E00002C0ull + ((offset) & 1) * 2048)
  73#define CVMX_AGL_GMX_TXX_STAT9(offset)              (0x00011800E00002C8ull + ((offset) & 1) * 2048)
  74#define CVMX_AGL_GMX_TXX_STATS_CTL(offset)          (0x00011800E0000268ull + ((offset) & 1) * 2048)
  75#define CVMX_AGL_GMX_TXX_THRESH(offset)             (0x00011800E0000210ull + ((offset) & 1) * 2048)
  76#define CVMX_AGL_GMX_TX_BP                          (0x00011800E00004D0ull)
  77#define CVMX_AGL_GMX_TX_COL_ATTEMPT                 (0x00011800E0000498ull)
  78#define CVMX_AGL_GMX_TX_IFG                         (0x00011800E0000488ull)
  79#define CVMX_AGL_GMX_TX_INT_EN                      (0x00011800E0000508ull)
  80#define CVMX_AGL_GMX_TX_INT_REG                     (0x00011800E0000500ull)
  81#define CVMX_AGL_GMX_TX_JAM                         (0x00011800E0000490ull)
  82#define CVMX_AGL_GMX_TX_LFSR                        (0x00011800E00004F8ull)
  83#define CVMX_AGL_GMX_TX_OVR_BP                      (0x00011800E00004C8ull)
  84#define CVMX_AGL_GMX_TX_PAUSE_PKT_DMAC              (0x00011800E00004A0ull)
  85#define CVMX_AGL_GMX_TX_PAUSE_PKT_TYPE              (0x00011800E00004A8ull)
  86#define CVMX_AGL_GMX_WOL_CTL                        (0x00011800E0000780ull)
  87#define CVMX_AGL_PRTX_CTL(offset)                   (0x00011800E0002000ull + ((offset) & 1) * 8)
  88
  89/**
  90 * cvmx_agl_gmx_bad_reg
  91 *
  92 * AGL_GMX_BAD_REG = A collection of things that have gone very, very wrong
  93 *
  94 *
  95 * Notes:
  96 * OUT_OVR[0], LOSTSTAT[0], OVRFLW, TXPOP, TXPSH    will be reset when MIX0_CTL[RESET] is set to 1.
  97 * OUT_OVR[1], LOSTSTAT[1], OVRFLW1, TXPOP1, TXPSH1 will be reset when MIX1_CTL[RESET] is set to 1.
  98 * STATOVR will be reset when both MIX0/1_CTL[RESET] are set to 1.
  99 */
 100union cvmx_agl_gmx_bad_reg {
 101        u64 u64;
 102        struct cvmx_agl_gmx_bad_reg_s {
 103                u64 reserved_38_63 : 26;
 104                u64 txpsh1 : 1;
 105                u64 txpop1 : 1;
 106                u64 ovrflw1 : 1;
 107                u64 txpsh : 1;
 108                u64 txpop : 1;
 109                u64 ovrflw : 1;
 110                u64 reserved_27_31 : 5;
 111                u64 statovr : 1;
 112                u64 reserved_24_25 : 2;
 113                u64 loststat : 2;
 114                u64 reserved_4_21 : 18;
 115                u64 out_ovr : 2;
 116                u64 reserved_0_1 : 2;
 117        } s;
 118        struct cvmx_agl_gmx_bad_reg_cn52xx {
 119                u64 reserved_38_63 : 26;
 120                u64 txpsh1 : 1;
 121                u64 txpop1 : 1;
 122                u64 ovrflw1 : 1;
 123                u64 txpsh : 1;
 124                u64 txpop : 1;
 125                u64 ovrflw : 1;
 126                u64 reserved_27_31 : 5;
 127                u64 statovr : 1;
 128                u64 reserved_23_25 : 3;
 129                u64 loststat : 1;
 130                u64 reserved_4_21 : 18;
 131                u64 out_ovr : 2;
 132                u64 reserved_0_1 : 2;
 133        } cn52xx;
 134        struct cvmx_agl_gmx_bad_reg_cn52xx cn52xxp1;
 135        struct cvmx_agl_gmx_bad_reg_cn56xx {
 136                u64 reserved_35_63 : 29;
 137                u64 txpsh : 1;
 138                u64 txpop : 1;
 139                u64 ovrflw : 1;
 140                u64 reserved_27_31 : 5;
 141                u64 statovr : 1;
 142                u64 reserved_23_25 : 3;
 143                u64 loststat : 1;
 144                u64 reserved_3_21 : 19;
 145                u64 out_ovr : 1;
 146                u64 reserved_0_1 : 2;
 147        } cn56xx;
 148        struct cvmx_agl_gmx_bad_reg_cn56xx cn56xxp1;
 149        struct cvmx_agl_gmx_bad_reg_s cn61xx;
 150        struct cvmx_agl_gmx_bad_reg_s cn63xx;
 151        struct cvmx_agl_gmx_bad_reg_s cn63xxp1;
 152        struct cvmx_agl_gmx_bad_reg_s cn66xx;
 153        struct cvmx_agl_gmx_bad_reg_s cn68xx;
 154        struct cvmx_agl_gmx_bad_reg_s cn68xxp1;
 155        struct cvmx_agl_gmx_bad_reg_cn56xx cn70xx;
 156        struct cvmx_agl_gmx_bad_reg_cn56xx cn70xxp1;
 157};
 158
 159typedef union cvmx_agl_gmx_bad_reg cvmx_agl_gmx_bad_reg_t;
 160
 161/**
 162 * cvmx_agl_gmx_bist
 163 *
 164 * AGL_GMX_BIST = GMX BIST Results
 165 *
 166 *
 167 * Notes:
 168 * Not reset when MIX*_CTL[RESET] is set to 1.
 169 *
 170 */
 171union cvmx_agl_gmx_bist {
 172        u64 u64;
 173        struct cvmx_agl_gmx_bist_s {
 174                u64 reserved_25_63 : 39;
 175                u64 status : 25;
 176        } s;
 177        struct cvmx_agl_gmx_bist_cn52xx {
 178                u64 reserved_10_63 : 54;
 179                u64 status : 10;
 180        } cn52xx;
 181        struct cvmx_agl_gmx_bist_cn52xx cn52xxp1;
 182        struct cvmx_agl_gmx_bist_cn52xx cn56xx;
 183        struct cvmx_agl_gmx_bist_cn52xx cn56xxp1;
 184        struct cvmx_agl_gmx_bist_s cn61xx;
 185        struct cvmx_agl_gmx_bist_s cn63xx;
 186        struct cvmx_agl_gmx_bist_s cn63xxp1;
 187        struct cvmx_agl_gmx_bist_s cn66xx;
 188        struct cvmx_agl_gmx_bist_s cn68xx;
 189        struct cvmx_agl_gmx_bist_s cn68xxp1;
 190        struct cvmx_agl_gmx_bist_s cn70xx;
 191        struct cvmx_agl_gmx_bist_s cn70xxp1;
 192};
 193
 194typedef union cvmx_agl_gmx_bist cvmx_agl_gmx_bist_t;
 195
 196/**
 197 * cvmx_agl_gmx_drv_ctl
 198 *
 199 * AGL_GMX_DRV_CTL = GMX Drive Control
 200 *
 201 *
 202 * Notes:
 203 * NCTL, PCTL, BYP_EN    will be reset when MIX0_CTL[RESET] is set to 1.
 204 * NCTL1, PCTL1, BYP_EN1 will be reset when MIX1_CTL[RESET] is set to 1.
 205 */
 206union cvmx_agl_gmx_drv_ctl {
 207        u64 u64;
 208        struct cvmx_agl_gmx_drv_ctl_s {
 209                u64 reserved_49_63 : 15;
 210                u64 byp_en1 : 1;
 211                u64 reserved_45_47 : 3;
 212                u64 pctl1 : 5;
 213                u64 reserved_37_39 : 3;
 214                u64 nctl1 : 5;
 215                u64 reserved_17_31 : 15;
 216                u64 byp_en : 1;
 217                u64 reserved_13_15 : 3;
 218                u64 pctl : 5;
 219                u64 reserved_5_7 : 3;
 220                u64 nctl : 5;
 221        } s;
 222        struct cvmx_agl_gmx_drv_ctl_s cn52xx;
 223        struct cvmx_agl_gmx_drv_ctl_s cn52xxp1;
 224        struct cvmx_agl_gmx_drv_ctl_cn56xx {
 225                u64 reserved_17_63 : 47;
 226                u64 byp_en : 1;
 227                u64 reserved_13_15 : 3;
 228                u64 pctl : 5;
 229                u64 reserved_5_7 : 3;
 230                u64 nctl : 5;
 231        } cn56xx;
 232        struct cvmx_agl_gmx_drv_ctl_cn56xx cn56xxp1;
 233};
 234
 235typedef union cvmx_agl_gmx_drv_ctl cvmx_agl_gmx_drv_ctl_t;
 236
 237/**
 238 * cvmx_agl_gmx_inf_mode
 239 *
 240 * AGL_GMX_INF_MODE = Interface Mode
 241 *
 242 *
 243 * Notes:
 244 * Not reset when MIX*_CTL[RESET] is set to 1.
 245 *
 246 */
 247union cvmx_agl_gmx_inf_mode {
 248        u64 u64;
 249        struct cvmx_agl_gmx_inf_mode_s {
 250                u64 reserved_2_63 : 62;
 251                u64 en : 1;
 252                u64 reserved_0_0 : 1;
 253        } s;
 254        struct cvmx_agl_gmx_inf_mode_s cn52xx;
 255        struct cvmx_agl_gmx_inf_mode_s cn52xxp1;
 256        struct cvmx_agl_gmx_inf_mode_s cn56xx;
 257        struct cvmx_agl_gmx_inf_mode_s cn56xxp1;
 258};
 259
 260typedef union cvmx_agl_gmx_inf_mode cvmx_agl_gmx_inf_mode_t;
 261
 262/**
 263 * cvmx_agl_gmx_prt#_cfg
 264 *
 265 * AGL_GMX_PRT_CFG = Port description
 266 *
 267 *
 268 * Notes:
 269 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 270 *
 271 */
 272union cvmx_agl_gmx_prtx_cfg {
 273        u64 u64;
 274        struct cvmx_agl_gmx_prtx_cfg_s {
 275                u64 reserved_14_63 : 50;
 276                u64 tx_idle : 1;
 277                u64 rx_idle : 1;
 278                u64 reserved_9_11 : 3;
 279                u64 speed_msb : 1;
 280                u64 reserved_7_7 : 1;
 281                u64 burst : 1;
 282                u64 tx_en : 1;
 283                u64 rx_en : 1;
 284                u64 slottime : 1;
 285                u64 duplex : 1;
 286                u64 speed : 1;
 287                u64 en : 1;
 288        } s;
 289        struct cvmx_agl_gmx_prtx_cfg_cn52xx {
 290                u64 reserved_6_63 : 58;
 291                u64 tx_en : 1;
 292                u64 rx_en : 1;
 293                u64 slottime : 1;
 294                u64 duplex : 1;
 295                u64 speed : 1;
 296                u64 en : 1;
 297        } cn52xx;
 298        struct cvmx_agl_gmx_prtx_cfg_cn52xx cn52xxp1;
 299        struct cvmx_agl_gmx_prtx_cfg_cn52xx cn56xx;
 300        struct cvmx_agl_gmx_prtx_cfg_cn52xx cn56xxp1;
 301        struct cvmx_agl_gmx_prtx_cfg_s cn61xx;
 302        struct cvmx_agl_gmx_prtx_cfg_s cn63xx;
 303        struct cvmx_agl_gmx_prtx_cfg_s cn63xxp1;
 304        struct cvmx_agl_gmx_prtx_cfg_s cn66xx;
 305        struct cvmx_agl_gmx_prtx_cfg_s cn68xx;
 306        struct cvmx_agl_gmx_prtx_cfg_s cn68xxp1;
 307        struct cvmx_agl_gmx_prtx_cfg_s cn70xx;
 308        struct cvmx_agl_gmx_prtx_cfg_s cn70xxp1;
 309};
 310
 311typedef union cvmx_agl_gmx_prtx_cfg cvmx_agl_gmx_prtx_cfg_t;
 312
 313/**
 314 * cvmx_agl_gmx_rx#_adr_cam0
 315 *
 316 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 317 *
 318 */
 319union cvmx_agl_gmx_rxx_adr_cam0 {
 320        u64 u64;
 321        struct cvmx_agl_gmx_rxx_adr_cam0_s {
 322                u64 adr : 64;
 323        } s;
 324        struct cvmx_agl_gmx_rxx_adr_cam0_s cn52xx;
 325        struct cvmx_agl_gmx_rxx_adr_cam0_s cn52xxp1;
 326        struct cvmx_agl_gmx_rxx_adr_cam0_s cn56xx;
 327        struct cvmx_agl_gmx_rxx_adr_cam0_s cn56xxp1;
 328        struct cvmx_agl_gmx_rxx_adr_cam0_s cn61xx;
 329        struct cvmx_agl_gmx_rxx_adr_cam0_s cn63xx;
 330        struct cvmx_agl_gmx_rxx_adr_cam0_s cn63xxp1;
 331        struct cvmx_agl_gmx_rxx_adr_cam0_s cn66xx;
 332        struct cvmx_agl_gmx_rxx_adr_cam0_s cn68xx;
 333        struct cvmx_agl_gmx_rxx_adr_cam0_s cn68xxp1;
 334        struct cvmx_agl_gmx_rxx_adr_cam0_s cn70xx;
 335        struct cvmx_agl_gmx_rxx_adr_cam0_s cn70xxp1;
 336};
 337
 338typedef union cvmx_agl_gmx_rxx_adr_cam0 cvmx_agl_gmx_rxx_adr_cam0_t;
 339
 340/**
 341 * cvmx_agl_gmx_rx#_adr_cam1
 342 *
 343 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 344 *
 345 */
 346union cvmx_agl_gmx_rxx_adr_cam1 {
 347        u64 u64;
 348        struct cvmx_agl_gmx_rxx_adr_cam1_s {
 349                u64 adr : 64;
 350        } s;
 351        struct cvmx_agl_gmx_rxx_adr_cam1_s cn52xx;
 352        struct cvmx_agl_gmx_rxx_adr_cam1_s cn52xxp1;
 353        struct cvmx_agl_gmx_rxx_adr_cam1_s cn56xx;
 354        struct cvmx_agl_gmx_rxx_adr_cam1_s cn56xxp1;
 355        struct cvmx_agl_gmx_rxx_adr_cam1_s cn61xx;
 356        struct cvmx_agl_gmx_rxx_adr_cam1_s cn63xx;
 357        struct cvmx_agl_gmx_rxx_adr_cam1_s cn63xxp1;
 358        struct cvmx_agl_gmx_rxx_adr_cam1_s cn66xx;
 359        struct cvmx_agl_gmx_rxx_adr_cam1_s cn68xx;
 360        struct cvmx_agl_gmx_rxx_adr_cam1_s cn68xxp1;
 361        struct cvmx_agl_gmx_rxx_adr_cam1_s cn70xx;
 362        struct cvmx_agl_gmx_rxx_adr_cam1_s cn70xxp1;
 363};
 364
 365typedef union cvmx_agl_gmx_rxx_adr_cam1 cvmx_agl_gmx_rxx_adr_cam1_t;
 366
 367/**
 368 * cvmx_agl_gmx_rx#_adr_cam2
 369 *
 370 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 371 *
 372 */
 373union cvmx_agl_gmx_rxx_adr_cam2 {
 374        u64 u64;
 375        struct cvmx_agl_gmx_rxx_adr_cam2_s {
 376                u64 adr : 64;
 377        } s;
 378        struct cvmx_agl_gmx_rxx_adr_cam2_s cn52xx;
 379        struct cvmx_agl_gmx_rxx_adr_cam2_s cn52xxp1;
 380        struct cvmx_agl_gmx_rxx_adr_cam2_s cn56xx;
 381        struct cvmx_agl_gmx_rxx_adr_cam2_s cn56xxp1;
 382        struct cvmx_agl_gmx_rxx_adr_cam2_s cn61xx;
 383        struct cvmx_agl_gmx_rxx_adr_cam2_s cn63xx;
 384        struct cvmx_agl_gmx_rxx_adr_cam2_s cn63xxp1;
 385        struct cvmx_agl_gmx_rxx_adr_cam2_s cn66xx;
 386        struct cvmx_agl_gmx_rxx_adr_cam2_s cn68xx;
 387        struct cvmx_agl_gmx_rxx_adr_cam2_s cn68xxp1;
 388        struct cvmx_agl_gmx_rxx_adr_cam2_s cn70xx;
 389        struct cvmx_agl_gmx_rxx_adr_cam2_s cn70xxp1;
 390};
 391
 392typedef union cvmx_agl_gmx_rxx_adr_cam2 cvmx_agl_gmx_rxx_adr_cam2_t;
 393
 394/**
 395 * cvmx_agl_gmx_rx#_adr_cam3
 396 *
 397 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 398 *
 399 */
 400union cvmx_agl_gmx_rxx_adr_cam3 {
 401        u64 u64;
 402        struct cvmx_agl_gmx_rxx_adr_cam3_s {
 403                u64 adr : 64;
 404        } s;
 405        struct cvmx_agl_gmx_rxx_adr_cam3_s cn52xx;
 406        struct cvmx_agl_gmx_rxx_adr_cam3_s cn52xxp1;
 407        struct cvmx_agl_gmx_rxx_adr_cam3_s cn56xx;
 408        struct cvmx_agl_gmx_rxx_adr_cam3_s cn56xxp1;
 409        struct cvmx_agl_gmx_rxx_adr_cam3_s cn61xx;
 410        struct cvmx_agl_gmx_rxx_adr_cam3_s cn63xx;
 411        struct cvmx_agl_gmx_rxx_adr_cam3_s cn63xxp1;
 412        struct cvmx_agl_gmx_rxx_adr_cam3_s cn66xx;
 413        struct cvmx_agl_gmx_rxx_adr_cam3_s cn68xx;
 414        struct cvmx_agl_gmx_rxx_adr_cam3_s cn68xxp1;
 415        struct cvmx_agl_gmx_rxx_adr_cam3_s cn70xx;
 416        struct cvmx_agl_gmx_rxx_adr_cam3_s cn70xxp1;
 417};
 418
 419typedef union cvmx_agl_gmx_rxx_adr_cam3 cvmx_agl_gmx_rxx_adr_cam3_t;
 420
 421/**
 422 * cvmx_agl_gmx_rx#_adr_cam4
 423 *
 424 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 425 *
 426 */
 427union cvmx_agl_gmx_rxx_adr_cam4 {
 428        u64 u64;
 429        struct cvmx_agl_gmx_rxx_adr_cam4_s {
 430                u64 adr : 64;
 431        } s;
 432        struct cvmx_agl_gmx_rxx_adr_cam4_s cn52xx;
 433        struct cvmx_agl_gmx_rxx_adr_cam4_s cn52xxp1;
 434        struct cvmx_agl_gmx_rxx_adr_cam4_s cn56xx;
 435        struct cvmx_agl_gmx_rxx_adr_cam4_s cn56xxp1;
 436        struct cvmx_agl_gmx_rxx_adr_cam4_s cn61xx;
 437        struct cvmx_agl_gmx_rxx_adr_cam4_s cn63xx;
 438        struct cvmx_agl_gmx_rxx_adr_cam4_s cn63xxp1;
 439        struct cvmx_agl_gmx_rxx_adr_cam4_s cn66xx;
 440        struct cvmx_agl_gmx_rxx_adr_cam4_s cn68xx;
 441        struct cvmx_agl_gmx_rxx_adr_cam4_s cn68xxp1;
 442        struct cvmx_agl_gmx_rxx_adr_cam4_s cn70xx;
 443        struct cvmx_agl_gmx_rxx_adr_cam4_s cn70xxp1;
 444};
 445
 446typedef union cvmx_agl_gmx_rxx_adr_cam4 cvmx_agl_gmx_rxx_adr_cam4_t;
 447
 448/**
 449 * cvmx_agl_gmx_rx#_adr_cam5
 450 *
 451 * AGL_GMX_RX_ADR_CAM = Address Filtering Control
 452 *
 453 */
 454union cvmx_agl_gmx_rxx_adr_cam5 {
 455        u64 u64;
 456        struct cvmx_agl_gmx_rxx_adr_cam5_s {
 457                u64 adr : 64;
 458        } s;
 459        struct cvmx_agl_gmx_rxx_adr_cam5_s cn52xx;
 460        struct cvmx_agl_gmx_rxx_adr_cam5_s cn52xxp1;
 461        struct cvmx_agl_gmx_rxx_adr_cam5_s cn56xx;
 462        struct cvmx_agl_gmx_rxx_adr_cam5_s cn56xxp1;
 463        struct cvmx_agl_gmx_rxx_adr_cam5_s cn61xx;
 464        struct cvmx_agl_gmx_rxx_adr_cam5_s cn63xx;
 465        struct cvmx_agl_gmx_rxx_adr_cam5_s cn63xxp1;
 466        struct cvmx_agl_gmx_rxx_adr_cam5_s cn66xx;
 467        struct cvmx_agl_gmx_rxx_adr_cam5_s cn68xx;
 468        struct cvmx_agl_gmx_rxx_adr_cam5_s cn68xxp1;
 469        struct cvmx_agl_gmx_rxx_adr_cam5_s cn70xx;
 470        struct cvmx_agl_gmx_rxx_adr_cam5_s cn70xxp1;
 471};
 472
 473typedef union cvmx_agl_gmx_rxx_adr_cam5 cvmx_agl_gmx_rxx_adr_cam5_t;
 474
 475/**
 476 * cvmx_agl_gmx_rx#_adr_cam_en
 477 *
 478 * AGL_GMX_RX_ADR_CAM_EN = Address Filtering Control Enable
 479 *
 480 *
 481 * Notes:
 482 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 483 *
 484 */
 485union cvmx_agl_gmx_rxx_adr_cam_en {
 486        u64 u64;
 487        struct cvmx_agl_gmx_rxx_adr_cam_en_s {
 488                u64 reserved_8_63 : 56;
 489                u64 en : 8;
 490        } s;
 491        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn52xx;
 492        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn52xxp1;
 493        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn56xx;
 494        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn56xxp1;
 495        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn61xx;
 496        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn63xx;
 497        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn63xxp1;
 498        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn66xx;
 499        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn68xx;
 500        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn68xxp1;
 501        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn70xx;
 502        struct cvmx_agl_gmx_rxx_adr_cam_en_s cn70xxp1;
 503};
 504
 505typedef union cvmx_agl_gmx_rxx_adr_cam_en cvmx_agl_gmx_rxx_adr_cam_en_t;
 506
 507/**
 508 * cvmx_agl_gmx_rx#_adr_ctl
 509 *
 510 * AGL_GMX_RX_ADR_CTL = Address Filtering Control
 511 *
 512 *
 513 * Notes:
 514 * * ALGORITHM
 515 *   Here is some pseudo code that represents the address filter behavior.
 516 *
 517 *      @verbatim
 518 *      bool dmac_addr_filter(uint8 prt, uint48 dmac) [
 519 *        ASSERT(prt >= 0 && prt <= 3);
 520 *        if (is_bcst(dmac))                               // broadcast accept
 521 *          return (AGL_GMX_RX[prt]_ADR_CTL[BCST] ? ACCEPT : REJECT);
 522 *        if (is_mcst(dmac) & AGL_GMX_RX[prt]_ADR_CTL[MCST] == 1)   // multicast reject
 523 *          return REJECT;
 524 *        if (is_mcst(dmac) & AGL_GMX_RX[prt]_ADR_CTL[MCST] == 2)   // multicast accept
 525 *          return ACCEPT;
 526 *
 527 *        cam_hit = 0;
 528 *
 529 *        for (i=0; i<8; i++) [
 530 *          if (AGL_GMX_RX[prt]_ADR_CAM_EN[EN<i>] == 0)
 531 *            continue;
 532 *          uint48 unswizzled_mac_adr = 0x0;
 533 *          for (j=5; j>=0; j--) [
 534 *             unswizzled_mac_adr = (unswizzled_mac_adr << 8) | AGL_GMX_RX[prt]_ADR_CAM[j][ADR<i*8+7:i*8>];
 535 *          ]
 536 *          if (unswizzled_mac_adr == dmac) [
 537 *            cam_hit = 1;
 538 *            break;
 539 *          ]
 540 *        ]
 541 *
 542 *        if (cam_hit)
 543 *          return (AGL_GMX_RX[prt]_ADR_CTL[CAM_MODE] ? ACCEPT : REJECT);
 544 *        else
 545 *          return (AGL_GMX_RX[prt]_ADR_CTL[CAM_MODE] ? REJECT : ACCEPT);
 546 *      ]
 547 *      @endverbatim
 548 *
 549 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 550 */
 551union cvmx_agl_gmx_rxx_adr_ctl {
 552        u64 u64;
 553        struct cvmx_agl_gmx_rxx_adr_ctl_s {
 554                u64 reserved_4_63 : 60;
 555                u64 cam_mode : 1;
 556                u64 mcst : 2;
 557                u64 bcst : 1;
 558        } s;
 559        struct cvmx_agl_gmx_rxx_adr_ctl_s cn52xx;
 560        struct cvmx_agl_gmx_rxx_adr_ctl_s cn52xxp1;
 561        struct cvmx_agl_gmx_rxx_adr_ctl_s cn56xx;
 562        struct cvmx_agl_gmx_rxx_adr_ctl_s cn56xxp1;
 563        struct cvmx_agl_gmx_rxx_adr_ctl_s cn61xx;
 564        struct cvmx_agl_gmx_rxx_adr_ctl_s cn63xx;
 565        struct cvmx_agl_gmx_rxx_adr_ctl_s cn63xxp1;
 566        struct cvmx_agl_gmx_rxx_adr_ctl_s cn66xx;
 567        struct cvmx_agl_gmx_rxx_adr_ctl_s cn68xx;
 568        struct cvmx_agl_gmx_rxx_adr_ctl_s cn68xxp1;
 569        struct cvmx_agl_gmx_rxx_adr_ctl_s cn70xx;
 570        struct cvmx_agl_gmx_rxx_adr_ctl_s cn70xxp1;
 571};
 572
 573typedef union cvmx_agl_gmx_rxx_adr_ctl cvmx_agl_gmx_rxx_adr_ctl_t;
 574
 575/**
 576 * cvmx_agl_gmx_rx#_decision
 577 *
 578 * AGL_GMX_RX_DECISION = The byte count to decide when to accept or filter a packet
 579 *
 580 *
 581 * Notes:
 582 * As each byte in a packet is received by GMX, the L2 byte count is compared
 583 * against the AGL_GMX_RX_DECISION[CNT].  The L2 byte count is the number of bytes
 584 * from the beginning of the L2 header (DMAC).  In normal operation, the L2
 585 * header begins after the PREAMBLE+SFD (AGL_GMX_RX_FRM_CTL[PRE_CHK]=1) and any
 586 * optional UDD skip data (AGL_GMX_RX_UDD_SKP[LEN]).
 587 *
 588 * When AGL_GMX_RX_FRM_CTL[PRE_CHK] is clear, PREAMBLE+SFD are prepended to the
 589 * packet and would require UDD skip length to account for them.
 590 *
 591 *                                                 L2 Size
 592 * Port Mode             <=AGL_GMX_RX_DECISION bytes (default=24)  >AGL_GMX_RX_DECISION bytes (default=24)
 593 *
 594 * MII/Full Duplex       accept packet                             apply filters
 595 *                       no filtering is applied                   accept packet based on DMAC and PAUSE packet filters
 596 *
 597 * MII/Half Duplex       drop packet                               apply filters
 598 *                       packet is unconditionally dropped         accept packet based on DMAC
 599 *
 600 * where l2_size = MAX(0, total_packet_size - AGL_GMX_RX_UDD_SKP[LEN] - ((AGL_GMX_RX_FRM_CTL[PRE_CHK]==1)*8)
 601 *
 602 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 603 */
 604union cvmx_agl_gmx_rxx_decision {
 605        u64 u64;
 606        struct cvmx_agl_gmx_rxx_decision_s {
 607                u64 reserved_5_63 : 59;
 608                u64 cnt : 5;
 609        } s;
 610        struct cvmx_agl_gmx_rxx_decision_s cn52xx;
 611        struct cvmx_agl_gmx_rxx_decision_s cn52xxp1;
 612        struct cvmx_agl_gmx_rxx_decision_s cn56xx;
 613        struct cvmx_agl_gmx_rxx_decision_s cn56xxp1;
 614        struct cvmx_agl_gmx_rxx_decision_s cn61xx;
 615        struct cvmx_agl_gmx_rxx_decision_s cn63xx;
 616        struct cvmx_agl_gmx_rxx_decision_s cn63xxp1;
 617        struct cvmx_agl_gmx_rxx_decision_s cn66xx;
 618        struct cvmx_agl_gmx_rxx_decision_s cn68xx;
 619        struct cvmx_agl_gmx_rxx_decision_s cn68xxp1;
 620        struct cvmx_agl_gmx_rxx_decision_s cn70xx;
 621        struct cvmx_agl_gmx_rxx_decision_s cn70xxp1;
 622};
 623
 624typedef union cvmx_agl_gmx_rxx_decision cvmx_agl_gmx_rxx_decision_t;
 625
 626/**
 627 * cvmx_agl_gmx_rx#_frm_chk
 628 *
 629 * AGL_GMX_RX_FRM_CHK = Which frame errors will set the ERR bit of the frame
 630 *
 631 *
 632 * Notes:
 633 * If AGL_GMX_RX_UDD_SKP[LEN] != 0, then LENERR will be forced to zero in HW.
 634 *
 635 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 636 */
 637union cvmx_agl_gmx_rxx_frm_chk {
 638        u64 u64;
 639        struct cvmx_agl_gmx_rxx_frm_chk_s {
 640                u64 reserved_10_63 : 54;
 641                u64 niberr : 1;
 642                u64 skperr : 1;
 643                u64 rcverr : 1;
 644                u64 lenerr : 1;
 645                u64 alnerr : 1;
 646                u64 fcserr : 1;
 647                u64 jabber : 1;
 648                u64 maxerr : 1;
 649                u64 carext : 1;
 650                u64 minerr : 1;
 651        } s;
 652        struct cvmx_agl_gmx_rxx_frm_chk_cn52xx {
 653                u64 reserved_9_63 : 55;
 654                u64 skperr : 1;
 655                u64 rcverr : 1;
 656                u64 lenerr : 1;
 657                u64 alnerr : 1;
 658                u64 fcserr : 1;
 659                u64 jabber : 1;
 660                u64 maxerr : 1;
 661                u64 reserved_1_1 : 1;
 662                u64 minerr : 1;
 663        } cn52xx;
 664        struct cvmx_agl_gmx_rxx_frm_chk_cn52xx cn52xxp1;
 665        struct cvmx_agl_gmx_rxx_frm_chk_cn52xx cn56xx;
 666        struct cvmx_agl_gmx_rxx_frm_chk_cn52xx cn56xxp1;
 667        struct cvmx_agl_gmx_rxx_frm_chk_s cn61xx;
 668        struct cvmx_agl_gmx_rxx_frm_chk_s cn63xx;
 669        struct cvmx_agl_gmx_rxx_frm_chk_s cn63xxp1;
 670        struct cvmx_agl_gmx_rxx_frm_chk_s cn66xx;
 671        struct cvmx_agl_gmx_rxx_frm_chk_s cn68xx;
 672        struct cvmx_agl_gmx_rxx_frm_chk_s cn68xxp1;
 673        struct cvmx_agl_gmx_rxx_frm_chk_s cn70xx;
 674        struct cvmx_agl_gmx_rxx_frm_chk_s cn70xxp1;
 675};
 676
 677typedef union cvmx_agl_gmx_rxx_frm_chk cvmx_agl_gmx_rxx_frm_chk_t;
 678
 679/**
 680 * cvmx_agl_gmx_rx#_frm_ctl
 681 *
 682 * AGL_GMX_RX_FRM_CTL = Frame Control
 683 *
 684 *
 685 * Notes:
 686 * * PRE_STRP
 687 *   When PRE_CHK is set (indicating that the PREAMBLE will be sent), PRE_STRP
 688 *   determines if the PREAMBLE+SFD bytes are thrown away or sent to the Octane
 689 *   core as part of the packet.
 690 *
 691 *   In either mode, the PREAMBLE+SFD bytes are not counted toward the packet
 692 *   size when checking against the MIN and MAX bounds.  Furthermore, the bytes
 693 *   are skipped when locating the start of the L2 header for DMAC and Control
 694 *   frame recognition.
 695 *
 696 * * CTL_BCK/CTL_DRP
 697 *   These bits control how the HW handles incoming PAUSE packets.  Here are
 698 *   the most common modes of operation:
 699 *     CTL_BCK=1,CTL_DRP=1   - HW does it all
 700 *     CTL_BCK=0,CTL_DRP=0   - SW sees all pause frames
 701 *     CTL_BCK=0,CTL_DRP=1   - all pause frames are completely ignored
 702 *
 703 *   These control bits should be set to CTL_BCK=0,CTL_DRP=0 in halfdup mode.
 704 *   Since PAUSE packets only apply to fulldup operation, any PAUSE packet
 705 *   would constitute an exception which should be handled by the processing
 706 *   cores.  PAUSE packets should not be forwarded.
 707 *
 708 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 709 */
 710union cvmx_agl_gmx_rxx_frm_ctl {
 711        u64 u64;
 712        struct cvmx_agl_gmx_rxx_frm_ctl_s {
 713                u64 reserved_13_63 : 51;
 714                u64 ptp_mode : 1;
 715                u64 reserved_11_11 : 1;
 716                u64 null_dis : 1;
 717                u64 pre_align : 1;
 718                u64 pad_len : 1;
 719                u64 vlan_len : 1;
 720                u64 pre_free : 1;
 721                u64 ctl_smac : 1;
 722                u64 ctl_mcst : 1;
 723                u64 ctl_bck : 1;
 724                u64 ctl_drp : 1;
 725                u64 pre_strp : 1;
 726                u64 pre_chk : 1;
 727        } s;
 728        struct cvmx_agl_gmx_rxx_frm_ctl_cn52xx {
 729                u64 reserved_10_63 : 54;
 730                u64 pre_align : 1;
 731                u64 pad_len : 1;
 732                u64 vlan_len : 1;
 733                u64 pre_free : 1;
 734                u64 ctl_smac : 1;
 735                u64 ctl_mcst : 1;
 736                u64 ctl_bck : 1;
 737                u64 ctl_drp : 1;
 738                u64 pre_strp : 1;
 739                u64 pre_chk : 1;
 740        } cn52xx;
 741        struct cvmx_agl_gmx_rxx_frm_ctl_cn52xx cn52xxp1;
 742        struct cvmx_agl_gmx_rxx_frm_ctl_cn52xx cn56xx;
 743        struct cvmx_agl_gmx_rxx_frm_ctl_cn52xx cn56xxp1;
 744        struct cvmx_agl_gmx_rxx_frm_ctl_s cn61xx;
 745        struct cvmx_agl_gmx_rxx_frm_ctl_s cn63xx;
 746        struct cvmx_agl_gmx_rxx_frm_ctl_s cn63xxp1;
 747        struct cvmx_agl_gmx_rxx_frm_ctl_s cn66xx;
 748        struct cvmx_agl_gmx_rxx_frm_ctl_s cn68xx;
 749        struct cvmx_agl_gmx_rxx_frm_ctl_s cn68xxp1;
 750        struct cvmx_agl_gmx_rxx_frm_ctl_s cn70xx;
 751        struct cvmx_agl_gmx_rxx_frm_ctl_s cn70xxp1;
 752};
 753
 754typedef union cvmx_agl_gmx_rxx_frm_ctl cvmx_agl_gmx_rxx_frm_ctl_t;
 755
 756/**
 757 * cvmx_agl_gmx_rx#_frm_max
 758 *
 759 * AGL_GMX_RX_FRM_MAX = Frame Max length
 760 *
 761 *
 762 * Notes:
 763 * When changing the LEN field, be sure that LEN does not exceed
 764 * AGL_GMX_RX_JABBER[CNT]. Failure to meet this constraint will cause packets that
 765 * are within the maximum length parameter to be rejected because they exceed
 766 * the AGL_GMX_RX_JABBER[CNT] limit.
 767 *
 768 * Notes:
 769 *
 770 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 771 */
 772union cvmx_agl_gmx_rxx_frm_max {
 773        u64 u64;
 774        struct cvmx_agl_gmx_rxx_frm_max_s {
 775                u64 reserved_16_63 : 48;
 776                u64 len : 16;
 777        } s;
 778        struct cvmx_agl_gmx_rxx_frm_max_s cn52xx;
 779        struct cvmx_agl_gmx_rxx_frm_max_s cn52xxp1;
 780        struct cvmx_agl_gmx_rxx_frm_max_s cn56xx;
 781        struct cvmx_agl_gmx_rxx_frm_max_s cn56xxp1;
 782        struct cvmx_agl_gmx_rxx_frm_max_s cn61xx;
 783        struct cvmx_agl_gmx_rxx_frm_max_s cn63xx;
 784        struct cvmx_agl_gmx_rxx_frm_max_s cn63xxp1;
 785        struct cvmx_agl_gmx_rxx_frm_max_s cn66xx;
 786        struct cvmx_agl_gmx_rxx_frm_max_s cn68xx;
 787        struct cvmx_agl_gmx_rxx_frm_max_s cn68xxp1;
 788        struct cvmx_agl_gmx_rxx_frm_max_s cn70xx;
 789        struct cvmx_agl_gmx_rxx_frm_max_s cn70xxp1;
 790};
 791
 792typedef union cvmx_agl_gmx_rxx_frm_max cvmx_agl_gmx_rxx_frm_max_t;
 793
 794/**
 795 * cvmx_agl_gmx_rx#_frm_min
 796 *
 797 * AGL_GMX_RX_FRM_MIN = Frame Min length
 798 *
 799 *
 800 * Notes:
 801 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 802 *
 803 */
 804union cvmx_agl_gmx_rxx_frm_min {
 805        u64 u64;
 806        struct cvmx_agl_gmx_rxx_frm_min_s {
 807                u64 reserved_16_63 : 48;
 808                u64 len : 16;
 809        } s;
 810        struct cvmx_agl_gmx_rxx_frm_min_s cn52xx;
 811        struct cvmx_agl_gmx_rxx_frm_min_s cn52xxp1;
 812        struct cvmx_agl_gmx_rxx_frm_min_s cn56xx;
 813        struct cvmx_agl_gmx_rxx_frm_min_s cn56xxp1;
 814        struct cvmx_agl_gmx_rxx_frm_min_s cn61xx;
 815        struct cvmx_agl_gmx_rxx_frm_min_s cn63xx;
 816        struct cvmx_agl_gmx_rxx_frm_min_s cn63xxp1;
 817        struct cvmx_agl_gmx_rxx_frm_min_s cn66xx;
 818        struct cvmx_agl_gmx_rxx_frm_min_s cn68xx;
 819        struct cvmx_agl_gmx_rxx_frm_min_s cn68xxp1;
 820        struct cvmx_agl_gmx_rxx_frm_min_s cn70xx;
 821        struct cvmx_agl_gmx_rxx_frm_min_s cn70xxp1;
 822};
 823
 824typedef union cvmx_agl_gmx_rxx_frm_min cvmx_agl_gmx_rxx_frm_min_t;
 825
 826/**
 827 * cvmx_agl_gmx_rx#_ifg
 828 *
 829 * AGL_GMX_RX_IFG = RX Min IFG
 830 *
 831 *
 832 * Notes:
 833 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 834 *
 835 */
 836union cvmx_agl_gmx_rxx_ifg {
 837        u64 u64;
 838        struct cvmx_agl_gmx_rxx_ifg_s {
 839                u64 reserved_4_63 : 60;
 840                u64 ifg : 4;
 841        } s;
 842        struct cvmx_agl_gmx_rxx_ifg_s cn52xx;
 843        struct cvmx_agl_gmx_rxx_ifg_s cn52xxp1;
 844        struct cvmx_agl_gmx_rxx_ifg_s cn56xx;
 845        struct cvmx_agl_gmx_rxx_ifg_s cn56xxp1;
 846        struct cvmx_agl_gmx_rxx_ifg_s cn61xx;
 847        struct cvmx_agl_gmx_rxx_ifg_s cn63xx;
 848        struct cvmx_agl_gmx_rxx_ifg_s cn63xxp1;
 849        struct cvmx_agl_gmx_rxx_ifg_s cn66xx;
 850        struct cvmx_agl_gmx_rxx_ifg_s cn68xx;
 851        struct cvmx_agl_gmx_rxx_ifg_s cn68xxp1;
 852        struct cvmx_agl_gmx_rxx_ifg_s cn70xx;
 853        struct cvmx_agl_gmx_rxx_ifg_s cn70xxp1;
 854};
 855
 856typedef union cvmx_agl_gmx_rxx_ifg cvmx_agl_gmx_rxx_ifg_t;
 857
 858/**
 859 * cvmx_agl_gmx_rx#_int_en
 860 *
 861 * AGL_GMX_RX_INT_EN = Interrupt Enable
 862 *
 863 *
 864 * Notes:
 865 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
 866 *
 867 */
 868union cvmx_agl_gmx_rxx_int_en {
 869        u64 u64;
 870        struct cvmx_agl_gmx_rxx_int_en_s {
 871                u64 reserved_30_63 : 34;
 872                u64 wol : 1;
 873                u64 reserved_20_28 : 9;
 874                u64 pause_drp : 1;
 875                u64 phy_dupx : 1;
 876                u64 phy_spd : 1;
 877                u64 phy_link : 1;
 878                u64 ifgerr : 1;
 879                u64 coldet : 1;
 880                u64 falerr : 1;
 881                u64 rsverr : 1;
 882                u64 pcterr : 1;
 883                u64 ovrerr : 1;
 884                u64 niberr : 1;
 885                u64 skperr : 1;
 886                u64 rcverr : 1;
 887                u64 lenerr : 1;
 888                u64 alnerr : 1;
 889                u64 fcserr : 1;
 890                u64 jabber : 1;
 891                u64 maxerr : 1;
 892                u64 carext : 1;
 893                u64 minerr : 1;
 894        } s;
 895        struct cvmx_agl_gmx_rxx_int_en_cn52xx {
 896                u64 reserved_20_63 : 44;
 897                u64 pause_drp : 1;
 898                u64 reserved_16_18 : 3;
 899                u64 ifgerr : 1;
 900                u64 coldet : 1;
 901                u64 falerr : 1;
 902                u64 rsverr : 1;
 903                u64 pcterr : 1;
 904                u64 ovrerr : 1;
 905                u64 reserved_9_9 : 1;
 906                u64 skperr : 1;
 907                u64 rcverr : 1;
 908                u64 lenerr : 1;
 909                u64 alnerr : 1;
 910                u64 fcserr : 1;
 911                u64 jabber : 1;
 912                u64 maxerr : 1;
 913                u64 reserved_1_1 : 1;
 914                u64 minerr : 1;
 915        } cn52xx;
 916        struct cvmx_agl_gmx_rxx_int_en_cn52xx cn52xxp1;
 917        struct cvmx_agl_gmx_rxx_int_en_cn52xx cn56xx;
 918        struct cvmx_agl_gmx_rxx_int_en_cn52xx cn56xxp1;
 919        struct cvmx_agl_gmx_rxx_int_en_cn61xx {
 920                u64 reserved_20_63 : 44;
 921                u64 pause_drp : 1;
 922                u64 phy_dupx : 1;
 923                u64 phy_spd : 1;
 924                u64 phy_link : 1;
 925                u64 ifgerr : 1;
 926                u64 coldet : 1;
 927                u64 falerr : 1;
 928                u64 rsverr : 1;
 929                u64 pcterr : 1;
 930                u64 ovrerr : 1;
 931                u64 niberr : 1;
 932                u64 skperr : 1;
 933                u64 rcverr : 1;
 934                u64 lenerr : 1;
 935                u64 alnerr : 1;
 936                u64 fcserr : 1;
 937                u64 jabber : 1;
 938                u64 maxerr : 1;
 939                u64 carext : 1;
 940                u64 minerr : 1;
 941        } cn61xx;
 942        struct cvmx_agl_gmx_rxx_int_en_cn61xx cn63xx;
 943        struct cvmx_agl_gmx_rxx_int_en_cn61xx cn63xxp1;
 944        struct cvmx_agl_gmx_rxx_int_en_cn61xx cn66xx;
 945        struct cvmx_agl_gmx_rxx_int_en_cn61xx cn68xx;
 946        struct cvmx_agl_gmx_rxx_int_en_cn61xx cn68xxp1;
 947        struct cvmx_agl_gmx_rxx_int_en_s cn70xx;
 948        struct cvmx_agl_gmx_rxx_int_en_s cn70xxp1;
 949};
 950
 951typedef union cvmx_agl_gmx_rxx_int_en cvmx_agl_gmx_rxx_int_en_t;
 952
 953/**
 954 * cvmx_agl_gmx_rx#_int_reg
 955 *
 956 * AGL_GMX_RX_INT_REG = Interrupt Register
 957 *
 958 *
 959 * Notes:
 960 * (1) exceptions will only be raised to the control processor if the
 961 *     corresponding bit in the AGL_GMX_RX_INT_EN register is set.
 962 *
 963 * (2) exception conditions 10:0 can also set the rcv/opcode in the received
 964 *     packet's workQ entry.  The AGL_GMX_RX_FRM_CHK register provides a bit mask
 965 *     for configuring which conditions set the error.
 966 *
 967 * (3) in half duplex operation, the expectation is that collisions will appear
 968 *     as MINERRs.
 969 *
 970 * (4) JABBER - An RX Jabber error indicates that a packet was received which
 971 *              is longer than the maximum allowed packet as defined by the
 972 *              system.  GMX will truncate the packet at the JABBER count.
 973 *              Failure to do so could lead to system instabilty.
 974 *
 975 * (6) MAXERR - for untagged frames, the total frame DA+SA+TL+DATA+PAD+FCS >
 976 *              AGL_GMX_RX_FRM_MAX.  For tagged frames, DA+SA+VLAN+TL+DATA+PAD+FCS
 977 *              > AGL_GMX_RX_FRM_MAX + 4*VLAN_VAL + 4*VLAN_STACKED.
 978 *
 979 * (7) MINERR - total frame DA+SA+TL+DATA+PAD+FCS < AGL_GMX_RX_FRM_MIN.
 980 *
 981 * (8) ALNERR - Indicates that the packet received was not an integer number of
 982 *              bytes.  If FCS checking is enabled, ALNERR will only assert if
 983 *              the FCS is bad.  If FCS checking is disabled, ALNERR will
 984 *              assert in all non-integer frame cases.
 985 *
 986 * (9) Collisions - Collisions can only occur in half-duplex mode.  A collision
 987 *                  is assumed by the receiver when the received
 988 *                  frame < AGL_GMX_RX_FRM_MIN - this is normally a MINERR
 989 *
 990 * (A) LENERR - Length errors occur when the received packet does not match the
 991 *              length field.  LENERR is only checked for packets between 64
 992 *              and 1500 bytes.  For untagged frames, the length must exact
 993 *              match.  For tagged frames the length or length+4 must match.
 994 *
 995 * (B) PCTERR - checks that the frame begins with a valid PREAMBLE sequence.
 996 *              Does not check the number of PREAMBLE cycles.
 997 *
 998 * (C) OVRERR -
 999 *
1000 *              OVRERR is an architectural assertion check internal to GMX to
1001 *              make sure no assumption was violated.  In a correctly operating
1002 *              system, this interrupt can never fire.
1003 *
1004 *              GMX has an internal arbiter which selects which of 4 ports to
1005 *              buffer in the main RX FIFO.  If we normally buffer 8 bytes,
1006 *              then each port will typically push a tick every 8 cycles - if
1007 *              the packet interface is going as fast as possible.  If there
1008 *              are four ports, they push every two cycles.  So that's the
1009 *              assumption.  That the inbound module will always be able to
1010 *              consume the tick before another is produced.  If that doesn't
1011 *              happen - that's when OVRERR will assert.
1012 *
1013 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1014 */
1015union cvmx_agl_gmx_rxx_int_reg {
1016        u64 u64;
1017        struct cvmx_agl_gmx_rxx_int_reg_s {
1018                u64 reserved_30_63 : 34;
1019                u64 wol : 1;
1020                u64 reserved_20_28 : 9;
1021                u64 pause_drp : 1;
1022                u64 phy_dupx : 1;
1023                u64 phy_spd : 1;
1024                u64 phy_link : 1;
1025                u64 ifgerr : 1;
1026                u64 coldet : 1;
1027                u64 falerr : 1;
1028                u64 rsverr : 1;
1029                u64 pcterr : 1;
1030                u64 ovrerr : 1;
1031                u64 niberr : 1;
1032                u64 skperr : 1;
1033                u64 rcverr : 1;
1034                u64 lenerr : 1;
1035                u64 alnerr : 1;
1036                u64 fcserr : 1;
1037                u64 jabber : 1;
1038                u64 maxerr : 1;
1039                u64 carext : 1;
1040                u64 minerr : 1;
1041        } s;
1042        struct cvmx_agl_gmx_rxx_int_reg_cn52xx {
1043                u64 reserved_20_63 : 44;
1044                u64 pause_drp : 1;
1045                u64 reserved_16_18 : 3;
1046                u64 ifgerr : 1;
1047                u64 coldet : 1;
1048                u64 falerr : 1;
1049                u64 rsverr : 1;
1050                u64 pcterr : 1;
1051                u64 ovrerr : 1;
1052                u64 reserved_9_9 : 1;
1053                u64 skperr : 1;
1054                u64 rcverr : 1;
1055                u64 lenerr : 1;
1056                u64 alnerr : 1;
1057                u64 fcserr : 1;
1058                u64 jabber : 1;
1059                u64 maxerr : 1;
1060                u64 reserved_1_1 : 1;
1061                u64 minerr : 1;
1062        } cn52xx;
1063        struct cvmx_agl_gmx_rxx_int_reg_cn52xx cn52xxp1;
1064        struct cvmx_agl_gmx_rxx_int_reg_cn52xx cn56xx;
1065        struct cvmx_agl_gmx_rxx_int_reg_cn52xx cn56xxp1;
1066        struct cvmx_agl_gmx_rxx_int_reg_cn61xx {
1067                u64 reserved_20_63 : 44;
1068                u64 pause_drp : 1;
1069                u64 phy_dupx : 1;
1070                u64 phy_spd : 1;
1071                u64 phy_link : 1;
1072                u64 ifgerr : 1;
1073                u64 coldet : 1;
1074                u64 falerr : 1;
1075                u64 rsverr : 1;
1076                u64 pcterr : 1;
1077                u64 ovrerr : 1;
1078                u64 niberr : 1;
1079                u64 skperr : 1;
1080                u64 rcverr : 1;
1081                u64 lenerr : 1;
1082                u64 alnerr : 1;
1083                u64 fcserr : 1;
1084                u64 jabber : 1;
1085                u64 maxerr : 1;
1086                u64 carext : 1;
1087                u64 minerr : 1;
1088        } cn61xx;
1089        struct cvmx_agl_gmx_rxx_int_reg_cn61xx cn63xx;
1090        struct cvmx_agl_gmx_rxx_int_reg_cn61xx cn63xxp1;
1091        struct cvmx_agl_gmx_rxx_int_reg_cn61xx cn66xx;
1092        struct cvmx_agl_gmx_rxx_int_reg_cn61xx cn68xx;
1093        struct cvmx_agl_gmx_rxx_int_reg_cn61xx cn68xxp1;
1094        struct cvmx_agl_gmx_rxx_int_reg_s cn70xx;
1095        struct cvmx_agl_gmx_rxx_int_reg_s cn70xxp1;
1096};
1097
1098typedef union cvmx_agl_gmx_rxx_int_reg cvmx_agl_gmx_rxx_int_reg_t;
1099
1100/**
1101 * cvmx_agl_gmx_rx#_jabber
1102 *
1103 * AGL_GMX_RX_JABBER = The max size packet after which GMX will truncate
1104 *
1105 *
1106 * Notes:
1107 * CNT must be 8-byte aligned such that CNT[2:0] == 0
1108 *
1109 *   The packet that will be sent to the packet input logic will have an
1110 *   additionl 8 bytes if AGL_GMX_RX_FRM_CTL[PRE_CHK] is set and
1111 *   AGL_GMX_RX_FRM_CTL[PRE_STRP] is clear.  The max packet that will be sent is
1112 *   defined as...
1113 *
1114 *        max_sized_packet = AGL_GMX_RX_JABBER[CNT]+((AGL_GMX_RX_FRM_CTL[PRE_CHK] & !AGL_GMX_RX_FRM_CTL[PRE_STRP])*8)
1115 *
1116 *   Be sure the CNT field value is at least as large as the
1117 *   AGL_GMX_RX_FRM_MAX[LEN] value. Failure to meet this constraint will cause
1118 *   packets that are within the AGL_GMX_RX_FRM_MAX[LEN] length to be rejected
1119 *   because they exceed the CNT limit.
1120 *
1121 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1122 */
1123union cvmx_agl_gmx_rxx_jabber {
1124        u64 u64;
1125        struct cvmx_agl_gmx_rxx_jabber_s {
1126                u64 reserved_16_63 : 48;
1127                u64 cnt : 16;
1128        } s;
1129        struct cvmx_agl_gmx_rxx_jabber_s cn52xx;
1130        struct cvmx_agl_gmx_rxx_jabber_s cn52xxp1;
1131        struct cvmx_agl_gmx_rxx_jabber_s cn56xx;
1132        struct cvmx_agl_gmx_rxx_jabber_s cn56xxp1;
1133        struct cvmx_agl_gmx_rxx_jabber_s cn61xx;
1134        struct cvmx_agl_gmx_rxx_jabber_s cn63xx;
1135        struct cvmx_agl_gmx_rxx_jabber_s cn63xxp1;
1136        struct cvmx_agl_gmx_rxx_jabber_s cn66xx;
1137        struct cvmx_agl_gmx_rxx_jabber_s cn68xx;
1138        struct cvmx_agl_gmx_rxx_jabber_s cn68xxp1;
1139        struct cvmx_agl_gmx_rxx_jabber_s cn70xx;
1140        struct cvmx_agl_gmx_rxx_jabber_s cn70xxp1;
1141};
1142
1143typedef union cvmx_agl_gmx_rxx_jabber cvmx_agl_gmx_rxx_jabber_t;
1144
1145/**
1146 * cvmx_agl_gmx_rx#_pause_drop_time
1147 *
1148 * AGL_GMX_RX_PAUSE_DROP_TIME = The TIME field in a PAUSE Packet which was dropped due to GMX RX FIFO full condition
1149 *
1150 *
1151 * Notes:
1152 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1153 *
1154 */
1155union cvmx_agl_gmx_rxx_pause_drop_time {
1156        u64 u64;
1157        struct cvmx_agl_gmx_rxx_pause_drop_time_s {
1158                u64 reserved_16_63 : 48;
1159                u64 status : 16;
1160        } s;
1161        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn52xx;
1162        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn52xxp1;
1163        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn56xx;
1164        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn56xxp1;
1165        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn61xx;
1166        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn63xx;
1167        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn63xxp1;
1168        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn66xx;
1169        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn68xx;
1170        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn68xxp1;
1171        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn70xx;
1172        struct cvmx_agl_gmx_rxx_pause_drop_time_s cn70xxp1;
1173};
1174
1175typedef union cvmx_agl_gmx_rxx_pause_drop_time cvmx_agl_gmx_rxx_pause_drop_time_t;
1176
1177/**
1178 * cvmx_agl_gmx_rx#_rx_inbnd
1179 *
1180 * AGL_GMX_RX_INBND = RGMII InBand Link Status
1181 *
1182 */
1183union cvmx_agl_gmx_rxx_rx_inbnd {
1184        u64 u64;
1185        struct cvmx_agl_gmx_rxx_rx_inbnd_s {
1186                u64 reserved_4_63 : 60;
1187                u64 duplex : 1;
1188                u64 speed : 2;
1189                u64 status : 1;
1190        } s;
1191        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn61xx;
1192        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn63xx;
1193        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn63xxp1;
1194        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn66xx;
1195        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn68xx;
1196        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn68xxp1;
1197        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn70xx;
1198        struct cvmx_agl_gmx_rxx_rx_inbnd_s cn70xxp1;
1199};
1200
1201typedef union cvmx_agl_gmx_rxx_rx_inbnd cvmx_agl_gmx_rxx_rx_inbnd_t;
1202
1203/**
1204 * cvmx_agl_gmx_rx#_stats_ctl
1205 *
1206 * AGL_GMX_RX_STATS_CTL = RX Stats Control register
1207 *
1208 *
1209 * Notes:
1210 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1211 *
1212 */
1213union cvmx_agl_gmx_rxx_stats_ctl {
1214        u64 u64;
1215        struct cvmx_agl_gmx_rxx_stats_ctl_s {
1216                u64 reserved_1_63 : 63;
1217                u64 rd_clr : 1;
1218        } s;
1219        struct cvmx_agl_gmx_rxx_stats_ctl_s cn52xx;
1220        struct cvmx_agl_gmx_rxx_stats_ctl_s cn52xxp1;
1221        struct cvmx_agl_gmx_rxx_stats_ctl_s cn56xx;
1222        struct cvmx_agl_gmx_rxx_stats_ctl_s cn56xxp1;
1223        struct cvmx_agl_gmx_rxx_stats_ctl_s cn61xx;
1224        struct cvmx_agl_gmx_rxx_stats_ctl_s cn63xx;
1225        struct cvmx_agl_gmx_rxx_stats_ctl_s cn63xxp1;
1226        struct cvmx_agl_gmx_rxx_stats_ctl_s cn66xx;
1227        struct cvmx_agl_gmx_rxx_stats_ctl_s cn68xx;
1228        struct cvmx_agl_gmx_rxx_stats_ctl_s cn68xxp1;
1229        struct cvmx_agl_gmx_rxx_stats_ctl_s cn70xx;
1230        struct cvmx_agl_gmx_rxx_stats_ctl_s cn70xxp1;
1231};
1232
1233typedef union cvmx_agl_gmx_rxx_stats_ctl cvmx_agl_gmx_rxx_stats_ctl_t;
1234
1235/**
1236 * cvmx_agl_gmx_rx#_stats_octs
1237 *
1238 * Notes:
1239 * - Cleared either by a write (of any value) or a read when AGL_GMX_RX_STATS_CTL[RD_CLR] is set
1240 * - Counters will wrap
1241 * - Not reset when MIX*_CTL[RESET] is set to 1.
1242 */
1243union cvmx_agl_gmx_rxx_stats_octs {
1244        u64 u64;
1245        struct cvmx_agl_gmx_rxx_stats_octs_s {
1246                u64 reserved_48_63 : 16;
1247                u64 cnt : 48;
1248        } s;
1249        struct cvmx_agl_gmx_rxx_stats_octs_s cn52xx;
1250        struct cvmx_agl_gmx_rxx_stats_octs_s cn52xxp1;
1251        struct cvmx_agl_gmx_rxx_stats_octs_s cn56xx;
1252        struct cvmx_agl_gmx_rxx_stats_octs_s cn56xxp1;
1253        struct cvmx_agl_gmx_rxx_stats_octs_s cn61xx;
1254        struct cvmx_agl_gmx_rxx_stats_octs_s cn63xx;
1255        struct cvmx_agl_gmx_rxx_stats_octs_s cn63xxp1;
1256        struct cvmx_agl_gmx_rxx_stats_octs_s cn66xx;
1257        struct cvmx_agl_gmx_rxx_stats_octs_s cn68xx;
1258        struct cvmx_agl_gmx_rxx_stats_octs_s cn68xxp1;
1259        struct cvmx_agl_gmx_rxx_stats_octs_s cn70xx;
1260        struct cvmx_agl_gmx_rxx_stats_octs_s cn70xxp1;
1261};
1262
1263typedef union cvmx_agl_gmx_rxx_stats_octs cvmx_agl_gmx_rxx_stats_octs_t;
1264
1265/**
1266 * cvmx_agl_gmx_rx#_stats_octs_ctl
1267 *
1268 * Notes:
1269 * - Cleared either by a write (of any value) or a read when AGL_GMX_RX_STATS_CTL[RD_CLR] is set
1270 * - Counters will wrap
1271 * - Not reset when MIX*_CTL[RESET] is set to 1.
1272 */
1273union cvmx_agl_gmx_rxx_stats_octs_ctl {
1274        u64 u64;
1275        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s {
1276                u64 reserved_48_63 : 16;
1277                u64 cnt : 48;
1278        } s;
1279        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn52xx;
1280        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn52xxp1;
1281        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn56xx;
1282        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn56xxp1;
1283        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn61xx;
1284        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn63xx;
1285        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn63xxp1;
1286        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn66xx;
1287        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn68xx;
1288        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn68xxp1;
1289        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn70xx;
1290        struct cvmx_agl_gmx_rxx_stats_octs_ctl_s cn70xxp1;
1291};
1292
1293typedef union cvmx_agl_gmx_rxx_stats_octs_ctl cvmx_agl_gmx_rxx_stats_octs_ctl_t;
1294
1295/**
1296 * cvmx_agl_gmx_rx#_stats_octs_dmac
1297 *
1298 * Notes:
1299 * - Cleared either by a write (of any value) or a read when AGL_GMX_RX_STATS_CTL[RD_CLR] is set
1300 * - Counters will wrap
1301 * - Not reset when MIX*_CTL[RESET] is set to 1.
1302 */
1303union cvmx_agl_gmx_rxx_stats_octs_dmac {
1304        u64 u64;
1305        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s {
1306                u64 reserved_48_63 : 16;
1307                u64 cnt : 48;
1308        } s;
1309        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn52xx;
1310        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn52xxp1;
1311        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn56xx;
1312        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn56xxp1;
1313        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn61xx;
1314        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn63xx;
1315        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn63xxp1;
1316        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn66xx;
1317        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn68xx;
1318        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn68xxp1;
1319        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn70xx;
1320        struct cvmx_agl_gmx_rxx_stats_octs_dmac_s cn70xxp1;
1321};
1322
1323typedef union cvmx_agl_gmx_rxx_stats_octs_dmac cvmx_agl_gmx_rxx_stats_octs_dmac_t;
1324
1325/**
1326 * cvmx_agl_gmx_rx#_stats_octs_drp
1327 *
1328 * Notes:
1329 * - Cleared either by a write (of any value) or a read when AGL_GMX_RX_STATS_CTL[RD_CLR] is set
1330 * - Counters will wrap
1331 * - Not reset when MIX*_CTL[RESET] is set to 1.
1332 */
1333union cvmx_agl_gmx_rxx_stats_octs_drp {
1334        u64 u64;
1335        struct cvmx_agl_gmx_rxx_stats_octs_drp_s {
1336                u64 reserved_48_63 : 16;
1337                u64 cnt : 48;
1338        } s;
1339        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn52xx;
1340        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn52xxp1;
1341        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn56xx;
1342        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn56xxp1;
1343        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn61xx;
1344        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn63xx;
1345        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn63xxp1;
1346        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn66xx;
1347        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn68xx;
1348        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn68xxp1;
1349        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn70xx;
1350        struct cvmx_agl_gmx_rxx_stats_octs_drp_s cn70xxp1;
1351};
1352
1353typedef union cvmx_agl_gmx_rxx_stats_octs_drp cvmx_agl_gmx_rxx_stats_octs_drp_t;
1354
1355/**
1356 * cvmx_agl_gmx_rx#_stats_pkts
1357 *
1358 * Count of good received packets - packets that are not recognized as PAUSE
1359 * packets, dropped due the DMAC filter, dropped due FIFO full status, or
1360 * have any other OPCODE (FCS, Length, etc).
1361 */
1362union cvmx_agl_gmx_rxx_stats_pkts {
1363        u64 u64;
1364        struct cvmx_agl_gmx_rxx_stats_pkts_s {
1365                u64 reserved_32_63 : 32;
1366                u64 cnt : 32;
1367        } s;
1368        struct cvmx_agl_gmx_rxx_stats_pkts_s cn52xx;
1369        struct cvmx_agl_gmx_rxx_stats_pkts_s cn52xxp1;
1370        struct cvmx_agl_gmx_rxx_stats_pkts_s cn56xx;
1371        struct cvmx_agl_gmx_rxx_stats_pkts_s cn56xxp1;
1372        struct cvmx_agl_gmx_rxx_stats_pkts_s cn61xx;
1373        struct cvmx_agl_gmx_rxx_stats_pkts_s cn63xx;
1374        struct cvmx_agl_gmx_rxx_stats_pkts_s cn63xxp1;
1375        struct cvmx_agl_gmx_rxx_stats_pkts_s cn66xx;
1376        struct cvmx_agl_gmx_rxx_stats_pkts_s cn68xx;
1377        struct cvmx_agl_gmx_rxx_stats_pkts_s cn68xxp1;
1378        struct cvmx_agl_gmx_rxx_stats_pkts_s cn70xx;
1379        struct cvmx_agl_gmx_rxx_stats_pkts_s cn70xxp1;
1380};
1381
1382typedef union cvmx_agl_gmx_rxx_stats_pkts cvmx_agl_gmx_rxx_stats_pkts_t;
1383
1384/**
1385 * cvmx_agl_gmx_rx#_stats_pkts_bad
1386 *
1387 * Count of all packets received with some error that were not dropped
1388 * either due to the dmac filter or lack of room in the receive FIFO.
1389 */
1390union cvmx_agl_gmx_rxx_stats_pkts_bad {
1391        u64 u64;
1392        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s {
1393                u64 reserved_32_63 : 32;
1394                u64 cnt : 32;
1395        } s;
1396        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn52xx;
1397        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn52xxp1;
1398        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn56xx;
1399        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn56xxp1;
1400        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn61xx;
1401        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn63xx;
1402        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn63xxp1;
1403        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn66xx;
1404        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn68xx;
1405        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn68xxp1;
1406        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn70xx;
1407        struct cvmx_agl_gmx_rxx_stats_pkts_bad_s cn70xxp1;
1408};
1409
1410typedef union cvmx_agl_gmx_rxx_stats_pkts_bad cvmx_agl_gmx_rxx_stats_pkts_bad_t;
1411
1412/**
1413 * cvmx_agl_gmx_rx#_stats_pkts_ctl
1414 *
1415 * Count of all packets received that were recognized as Flow Control or
1416 * PAUSE packets.  PAUSE packets with any kind of error are counted in
1417 * AGL_GMX_RX_STATS_PKTS_BAD.  Pause packets can be optionally dropped or
1418 * forwarded based on the AGL_GMX_RX_FRM_CTL[CTL_DRP] bit.  This count
1419 * increments regardless of whether the packet is dropped.  Pause packets
1420 * will never be counted in AGL_GMX_RX_STATS_PKTS.  Packets dropped due the dmac
1421 * filter will be counted in AGL_GMX_RX_STATS_PKTS_DMAC and not here.
1422 */
1423union cvmx_agl_gmx_rxx_stats_pkts_ctl {
1424        u64 u64;
1425        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s {
1426                u64 reserved_32_63 : 32;
1427                u64 cnt : 32;
1428        } s;
1429        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn52xx;
1430        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn52xxp1;
1431        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn56xx;
1432        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn56xxp1;
1433        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn61xx;
1434        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn63xx;
1435        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn63xxp1;
1436        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn66xx;
1437        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn68xx;
1438        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn68xxp1;
1439        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn70xx;
1440        struct cvmx_agl_gmx_rxx_stats_pkts_ctl_s cn70xxp1;
1441};
1442
1443typedef union cvmx_agl_gmx_rxx_stats_pkts_ctl cvmx_agl_gmx_rxx_stats_pkts_ctl_t;
1444
1445/**
1446 * cvmx_agl_gmx_rx#_stats_pkts_dmac
1447 *
1448 * Count of all packets received that were dropped by the dmac filter.
1449 * Packets that match the DMAC will be dropped and counted here regardless
1450 * of if they were bad packets.  These packets will never be counted in
1451 * AGL_GMX_RX_STATS_PKTS.
1452 * Some packets that were not able to satisify the DECISION_CNT may not
1453 * actually be dropped by Octeon, but they will be counted here as if they
1454 * were dropped.
1455 */
1456union cvmx_agl_gmx_rxx_stats_pkts_dmac {
1457        u64 u64;
1458        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s {
1459                u64 reserved_32_63 : 32;
1460                u64 cnt : 32;
1461        } s;
1462        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn52xx;
1463        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn52xxp1;
1464        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn56xx;
1465        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn56xxp1;
1466        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn61xx;
1467        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn63xx;
1468        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn63xxp1;
1469        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn66xx;
1470        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn68xx;
1471        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn68xxp1;
1472        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn70xx;
1473        struct cvmx_agl_gmx_rxx_stats_pkts_dmac_s cn70xxp1;
1474};
1475
1476typedef union cvmx_agl_gmx_rxx_stats_pkts_dmac cvmx_agl_gmx_rxx_stats_pkts_dmac_t;
1477
1478/**
1479 * cvmx_agl_gmx_rx#_stats_pkts_drp
1480 *
1481 * Count of all packets received that were dropped due to a full receive
1482 * FIFO.  This counts good and bad packets received - all packets dropped by
1483 * the FIFO.  It does not count packets dropped by the dmac or pause packet
1484 * filters.
1485 */
1486union cvmx_agl_gmx_rxx_stats_pkts_drp {
1487        u64 u64;
1488        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s {
1489                u64 reserved_32_63 : 32;
1490                u64 cnt : 32;
1491        } s;
1492        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn52xx;
1493        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn52xxp1;
1494        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn56xx;
1495        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn56xxp1;
1496        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn61xx;
1497        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn63xx;
1498        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn63xxp1;
1499        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn66xx;
1500        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn68xx;
1501        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn68xxp1;
1502        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn70xx;
1503        struct cvmx_agl_gmx_rxx_stats_pkts_drp_s cn70xxp1;
1504};
1505
1506typedef union cvmx_agl_gmx_rxx_stats_pkts_drp cvmx_agl_gmx_rxx_stats_pkts_drp_t;
1507
1508/**
1509 * cvmx_agl_gmx_rx#_udd_skp
1510 *
1511 * AGL_GMX_RX_UDD_SKP = Amount of User-defined data before the start of the L2 data
1512 *
1513 *
1514 * Notes:
1515 * (1) The skip bytes are part of the packet and will be sent down the NCB
1516 *     packet interface and will be handled by PKI.
1517 *
1518 * (2) The system can determine if the UDD bytes are included in the FCS check
1519 *     by using the FCSSEL field - if the FCS check is enabled.
1520 *
1521 * (3) Assume that the preamble/sfd is always at the start of the frame - even
1522 *     before UDD bytes.  In most cases, there will be no preamble in these
1523 *     cases since it will be MII to MII communication without a PHY
1524 *     involved.
1525 *
1526 * (4) We can still do address filtering and control packet filtering is the
1527 *     user desires.
1528 *
1529 * (5) UDD_SKP must be 0 in half-duplex operation unless
1530 *     AGL_GMX_RX_FRM_CTL[PRE_CHK] is clear.  If AGL_GMX_RX_FRM_CTL[PRE_CHK] is set,
1531 *     then UDD_SKP will normally be 8.
1532 *
1533 * (6) In all cases, the UDD bytes will be sent down the packet interface as
1534 *     part of the packet.  The UDD bytes are never stripped from the actual
1535 *     packet.
1536 *
1537 * (7) If LEN != 0, then AGL_GMX_RX_FRM_CHK[LENERR] will be disabled and AGL_GMX_RX_INT_REG[LENERR] will be zero
1538 *
1539 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1540 */
1541union cvmx_agl_gmx_rxx_udd_skp {
1542        u64 u64;
1543        struct cvmx_agl_gmx_rxx_udd_skp_s {
1544                u64 reserved_9_63 : 55;
1545                u64 fcssel : 1;
1546                u64 reserved_7_7 : 1;
1547                u64 len : 7;
1548        } s;
1549        struct cvmx_agl_gmx_rxx_udd_skp_s cn52xx;
1550        struct cvmx_agl_gmx_rxx_udd_skp_s cn52xxp1;
1551        struct cvmx_agl_gmx_rxx_udd_skp_s cn56xx;
1552        struct cvmx_agl_gmx_rxx_udd_skp_s cn56xxp1;
1553        struct cvmx_agl_gmx_rxx_udd_skp_s cn61xx;
1554        struct cvmx_agl_gmx_rxx_udd_skp_s cn63xx;
1555        struct cvmx_agl_gmx_rxx_udd_skp_s cn63xxp1;
1556        struct cvmx_agl_gmx_rxx_udd_skp_s cn66xx;
1557        struct cvmx_agl_gmx_rxx_udd_skp_s cn68xx;
1558        struct cvmx_agl_gmx_rxx_udd_skp_s cn68xxp1;
1559        struct cvmx_agl_gmx_rxx_udd_skp_s cn70xx;
1560        struct cvmx_agl_gmx_rxx_udd_skp_s cn70xxp1;
1561};
1562
1563typedef union cvmx_agl_gmx_rxx_udd_skp cvmx_agl_gmx_rxx_udd_skp_t;
1564
1565/**
1566 * cvmx_agl_gmx_rx_bp_drop#
1567 *
1568 * AGL_GMX_RX_BP_DROP = FIFO mark for packet drop
1569 *
1570 *
1571 * Notes:
1572 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1573 *
1574 */
1575union cvmx_agl_gmx_rx_bp_dropx {
1576        u64 u64;
1577        struct cvmx_agl_gmx_rx_bp_dropx_s {
1578                u64 reserved_6_63 : 58;
1579                u64 mark : 6;
1580        } s;
1581        struct cvmx_agl_gmx_rx_bp_dropx_s cn52xx;
1582        struct cvmx_agl_gmx_rx_bp_dropx_s cn52xxp1;
1583        struct cvmx_agl_gmx_rx_bp_dropx_s cn56xx;
1584        struct cvmx_agl_gmx_rx_bp_dropx_s cn56xxp1;
1585        struct cvmx_agl_gmx_rx_bp_dropx_s cn61xx;
1586        struct cvmx_agl_gmx_rx_bp_dropx_s cn63xx;
1587        struct cvmx_agl_gmx_rx_bp_dropx_s cn63xxp1;
1588        struct cvmx_agl_gmx_rx_bp_dropx_s cn66xx;
1589        struct cvmx_agl_gmx_rx_bp_dropx_s cn68xx;
1590        struct cvmx_agl_gmx_rx_bp_dropx_s cn68xxp1;
1591        struct cvmx_agl_gmx_rx_bp_dropx_s cn70xx;
1592        struct cvmx_agl_gmx_rx_bp_dropx_s cn70xxp1;
1593};
1594
1595typedef union cvmx_agl_gmx_rx_bp_dropx cvmx_agl_gmx_rx_bp_dropx_t;
1596
1597/**
1598 * cvmx_agl_gmx_rx_bp_off#
1599 *
1600 * AGL_GMX_RX_BP_OFF = Lowater mark for packet drop
1601 *
1602 *
1603 * Notes:
1604 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1605 *
1606 */
1607union cvmx_agl_gmx_rx_bp_offx {
1608        u64 u64;
1609        struct cvmx_agl_gmx_rx_bp_offx_s {
1610                u64 reserved_6_63 : 58;
1611                u64 mark : 6;
1612        } s;
1613        struct cvmx_agl_gmx_rx_bp_offx_s cn52xx;
1614        struct cvmx_agl_gmx_rx_bp_offx_s cn52xxp1;
1615        struct cvmx_agl_gmx_rx_bp_offx_s cn56xx;
1616        struct cvmx_agl_gmx_rx_bp_offx_s cn56xxp1;
1617        struct cvmx_agl_gmx_rx_bp_offx_s cn61xx;
1618        struct cvmx_agl_gmx_rx_bp_offx_s cn63xx;
1619        struct cvmx_agl_gmx_rx_bp_offx_s cn63xxp1;
1620        struct cvmx_agl_gmx_rx_bp_offx_s cn66xx;
1621        struct cvmx_agl_gmx_rx_bp_offx_s cn68xx;
1622        struct cvmx_agl_gmx_rx_bp_offx_s cn68xxp1;
1623        struct cvmx_agl_gmx_rx_bp_offx_s cn70xx;
1624        struct cvmx_agl_gmx_rx_bp_offx_s cn70xxp1;
1625};
1626
1627typedef union cvmx_agl_gmx_rx_bp_offx cvmx_agl_gmx_rx_bp_offx_t;
1628
1629/**
1630 * cvmx_agl_gmx_rx_bp_on#
1631 *
1632 * AGL_GMX_RX_BP_ON = Hiwater mark for port/interface backpressure
1633 *
1634 *
1635 * Notes:
1636 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1637 *
1638 */
1639union cvmx_agl_gmx_rx_bp_onx {
1640        u64 u64;
1641        struct cvmx_agl_gmx_rx_bp_onx_s {
1642                u64 reserved_9_63 : 55;
1643                u64 mark : 9;
1644        } s;
1645        struct cvmx_agl_gmx_rx_bp_onx_s cn52xx;
1646        struct cvmx_agl_gmx_rx_bp_onx_s cn52xxp1;
1647        struct cvmx_agl_gmx_rx_bp_onx_s cn56xx;
1648        struct cvmx_agl_gmx_rx_bp_onx_s cn56xxp1;
1649        struct cvmx_agl_gmx_rx_bp_onx_s cn61xx;
1650        struct cvmx_agl_gmx_rx_bp_onx_s cn63xx;
1651        struct cvmx_agl_gmx_rx_bp_onx_s cn63xxp1;
1652        struct cvmx_agl_gmx_rx_bp_onx_s cn66xx;
1653        struct cvmx_agl_gmx_rx_bp_onx_s cn68xx;
1654        struct cvmx_agl_gmx_rx_bp_onx_s cn68xxp1;
1655        struct cvmx_agl_gmx_rx_bp_onx_s cn70xx;
1656        struct cvmx_agl_gmx_rx_bp_onx_s cn70xxp1;
1657};
1658
1659typedef union cvmx_agl_gmx_rx_bp_onx cvmx_agl_gmx_rx_bp_onx_t;
1660
1661/**
1662 * cvmx_agl_gmx_rx_prt_info
1663 *
1664 * AGL_GMX_RX_PRT_INFO = state information for the ports
1665 *
1666 *
1667 * Notes:
1668 * COMMIT[0], DROP[0] will be reset when MIX0_CTL[RESET] is set to 1.
1669 * COMMIT[1], DROP[1] will be reset when MIX1_CTL[RESET] is set to 1.
1670 */
1671union cvmx_agl_gmx_rx_prt_info {
1672        u64 u64;
1673        struct cvmx_agl_gmx_rx_prt_info_s {
1674                u64 reserved_18_63 : 46;
1675                u64 drop : 2;
1676                u64 reserved_2_15 : 14;
1677                u64 commit : 2;
1678        } s;
1679        struct cvmx_agl_gmx_rx_prt_info_s cn52xx;
1680        struct cvmx_agl_gmx_rx_prt_info_s cn52xxp1;
1681        struct cvmx_agl_gmx_rx_prt_info_cn56xx {
1682                u64 reserved_17_63 : 47;
1683                u64 drop : 1;
1684                u64 reserved_1_15 : 15;
1685                u64 commit : 1;
1686        } cn56xx;
1687        struct cvmx_agl_gmx_rx_prt_info_cn56xx cn56xxp1;
1688        struct cvmx_agl_gmx_rx_prt_info_s cn61xx;
1689        struct cvmx_agl_gmx_rx_prt_info_s cn63xx;
1690        struct cvmx_agl_gmx_rx_prt_info_s cn63xxp1;
1691        struct cvmx_agl_gmx_rx_prt_info_s cn66xx;
1692        struct cvmx_agl_gmx_rx_prt_info_s cn68xx;
1693        struct cvmx_agl_gmx_rx_prt_info_s cn68xxp1;
1694        struct cvmx_agl_gmx_rx_prt_info_cn56xx cn70xx;
1695        struct cvmx_agl_gmx_rx_prt_info_cn56xx cn70xxp1;
1696};
1697
1698typedef union cvmx_agl_gmx_rx_prt_info cvmx_agl_gmx_rx_prt_info_t;
1699
1700/**
1701 * cvmx_agl_gmx_rx_tx_status
1702 *
1703 * AGL_GMX_RX_TX_STATUS = GMX RX/TX Status
1704 *
1705 *
1706 * Notes:
1707 * RX[0], TX[0] will be reset when MIX0_CTL[RESET] is set to 1.
1708 * RX[1], TX[1] will be reset when MIX1_CTL[RESET] is set to 1.
1709 */
1710union cvmx_agl_gmx_rx_tx_status {
1711        u64 u64;
1712        struct cvmx_agl_gmx_rx_tx_status_s {
1713                u64 reserved_6_63 : 58;
1714                u64 tx : 2;
1715                u64 reserved_2_3 : 2;
1716                u64 rx : 2;
1717        } s;
1718        struct cvmx_agl_gmx_rx_tx_status_s cn52xx;
1719        struct cvmx_agl_gmx_rx_tx_status_s cn52xxp1;
1720        struct cvmx_agl_gmx_rx_tx_status_cn56xx {
1721                u64 reserved_5_63 : 59;
1722                u64 tx : 1;
1723                u64 reserved_1_3 : 3;
1724                u64 rx : 1;
1725        } cn56xx;
1726        struct cvmx_agl_gmx_rx_tx_status_cn56xx cn56xxp1;
1727        struct cvmx_agl_gmx_rx_tx_status_s cn61xx;
1728        struct cvmx_agl_gmx_rx_tx_status_s cn63xx;
1729        struct cvmx_agl_gmx_rx_tx_status_s cn63xxp1;
1730        struct cvmx_agl_gmx_rx_tx_status_s cn66xx;
1731        struct cvmx_agl_gmx_rx_tx_status_s cn68xx;
1732        struct cvmx_agl_gmx_rx_tx_status_s cn68xxp1;
1733        struct cvmx_agl_gmx_rx_tx_status_cn56xx cn70xx;
1734        struct cvmx_agl_gmx_rx_tx_status_cn56xx cn70xxp1;
1735};
1736
1737typedef union cvmx_agl_gmx_rx_tx_status cvmx_agl_gmx_rx_tx_status_t;
1738
1739/**
1740 * cvmx_agl_gmx_smac#
1741 *
1742 * AGL_GMX_SMAC = Packet SMAC
1743 *
1744 *
1745 * Notes:
1746 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1747 *
1748 */
1749union cvmx_agl_gmx_smacx {
1750        u64 u64;
1751        struct cvmx_agl_gmx_smacx_s {
1752                u64 reserved_48_63 : 16;
1753                u64 smac : 48;
1754        } s;
1755        struct cvmx_agl_gmx_smacx_s cn52xx;
1756        struct cvmx_agl_gmx_smacx_s cn52xxp1;
1757        struct cvmx_agl_gmx_smacx_s cn56xx;
1758        struct cvmx_agl_gmx_smacx_s cn56xxp1;
1759        struct cvmx_agl_gmx_smacx_s cn61xx;
1760        struct cvmx_agl_gmx_smacx_s cn63xx;
1761        struct cvmx_agl_gmx_smacx_s cn63xxp1;
1762        struct cvmx_agl_gmx_smacx_s cn66xx;
1763        struct cvmx_agl_gmx_smacx_s cn68xx;
1764        struct cvmx_agl_gmx_smacx_s cn68xxp1;
1765        struct cvmx_agl_gmx_smacx_s cn70xx;
1766        struct cvmx_agl_gmx_smacx_s cn70xxp1;
1767};
1768
1769typedef union cvmx_agl_gmx_smacx cvmx_agl_gmx_smacx_t;
1770
1771/**
1772 * cvmx_agl_gmx_stat_bp
1773 *
1774 * AGL_GMX_STAT_BP = Number of cycles that the TX/Stats block has help up operation
1775 *
1776 *
1777 * Notes:
1778 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
1779 *
1780 *
1781 *
1782 * It has no relationship with the TX FIFO per se.  The TX engine sends packets
1783 * from PKO and upon completion, sends a command to the TX stats block for an
1784 * update based on the packet size.  The stats operation can take a few cycles -
1785 * normally not enough to be visible considering the 64B min packet size that is
1786 * ethernet convention.
1787 *
1788 * In the rare case in which SW attempted to schedule really, really, small packets
1789 * or the sclk (6xxx) is running ass-slow, then the stats updates may not happen in
1790 * real time and can back up the TX engine.
1791 *
1792 * This counter is the number of cycles in which the TX engine was stalled.  In
1793 * normal operation, it should always be zeros.
1794 */
1795union cvmx_agl_gmx_stat_bp {
1796        u64 u64;
1797        struct cvmx_agl_gmx_stat_bp_s {
1798                u64 reserved_17_63 : 47;
1799                u64 bp : 1;
1800                u64 cnt : 16;
1801        } s;
1802        struct cvmx_agl_gmx_stat_bp_s cn52xx;
1803        struct cvmx_agl_gmx_stat_bp_s cn52xxp1;
1804        struct cvmx_agl_gmx_stat_bp_s cn56xx;
1805        struct cvmx_agl_gmx_stat_bp_s cn56xxp1;
1806        struct cvmx_agl_gmx_stat_bp_s cn61xx;
1807        struct cvmx_agl_gmx_stat_bp_s cn63xx;
1808        struct cvmx_agl_gmx_stat_bp_s cn63xxp1;
1809        struct cvmx_agl_gmx_stat_bp_s cn66xx;
1810        struct cvmx_agl_gmx_stat_bp_s cn68xx;
1811        struct cvmx_agl_gmx_stat_bp_s cn68xxp1;
1812        struct cvmx_agl_gmx_stat_bp_s cn70xx;
1813        struct cvmx_agl_gmx_stat_bp_s cn70xxp1;
1814};
1815
1816typedef union cvmx_agl_gmx_stat_bp cvmx_agl_gmx_stat_bp_t;
1817
1818/**
1819 * cvmx_agl_gmx_tx#_append
1820 *
1821 * AGL_GMX_TX_APPEND = Packet TX Append Control
1822 *
1823 *
1824 * Notes:
1825 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1826 *
1827 */
1828union cvmx_agl_gmx_txx_append {
1829        u64 u64;
1830        struct cvmx_agl_gmx_txx_append_s {
1831                u64 reserved_4_63 : 60;
1832                u64 force_fcs : 1;
1833                u64 fcs : 1;
1834                u64 pad : 1;
1835                u64 preamble : 1;
1836        } s;
1837        struct cvmx_agl_gmx_txx_append_s cn52xx;
1838        struct cvmx_agl_gmx_txx_append_s cn52xxp1;
1839        struct cvmx_agl_gmx_txx_append_s cn56xx;
1840        struct cvmx_agl_gmx_txx_append_s cn56xxp1;
1841        struct cvmx_agl_gmx_txx_append_s cn61xx;
1842        struct cvmx_agl_gmx_txx_append_s cn63xx;
1843        struct cvmx_agl_gmx_txx_append_s cn63xxp1;
1844        struct cvmx_agl_gmx_txx_append_s cn66xx;
1845        struct cvmx_agl_gmx_txx_append_s cn68xx;
1846        struct cvmx_agl_gmx_txx_append_s cn68xxp1;
1847        struct cvmx_agl_gmx_txx_append_s cn70xx;
1848        struct cvmx_agl_gmx_txx_append_s cn70xxp1;
1849};
1850
1851typedef union cvmx_agl_gmx_txx_append cvmx_agl_gmx_txx_append_t;
1852
1853/**
1854 * cvmx_agl_gmx_tx#_clk
1855 *
1856 * AGL_GMX_TX_CLK = RGMII TX Clock Generation Register
1857 *
1858 *
1859 * Notes:
1860 * Normal Programming Values:
1861 *  (1) RGMII, 1000Mbs   (AGL_GMX_PRT_CFG[SPEED]==1), CLK_CNT == 1
1862 *  (2) RGMII, 10/100Mbs (AGL_GMX_PRT_CFG[SPEED]==0), CLK_CNT == 50/5
1863 *  (3) MII,   10/100Mbs (AGL_GMX_PRT_CFG[SPEED]==0), CLK_CNT == 1
1864 *
1865 * RGMII Example:
1866 *  Given a 125MHz PLL reference clock...
1867 *   CLK_CNT ==  1 ==> 125.0MHz TXC clock period (8ns* 1)
1868 *   CLK_CNT ==  5 ==>  25.0MHz TXC clock period (8ns* 5)
1869 *   CLK_CNT == 50 ==>   2.5MHz TXC clock period (8ns*50)
1870 *
1871 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1872 */
1873union cvmx_agl_gmx_txx_clk {
1874        u64 u64;
1875        struct cvmx_agl_gmx_txx_clk_s {
1876                u64 reserved_6_63 : 58;
1877                u64 clk_cnt : 6;
1878        } s;
1879        struct cvmx_agl_gmx_txx_clk_s cn61xx;
1880        struct cvmx_agl_gmx_txx_clk_s cn63xx;
1881        struct cvmx_agl_gmx_txx_clk_s cn63xxp1;
1882        struct cvmx_agl_gmx_txx_clk_s cn66xx;
1883        struct cvmx_agl_gmx_txx_clk_s cn68xx;
1884        struct cvmx_agl_gmx_txx_clk_s cn68xxp1;
1885        struct cvmx_agl_gmx_txx_clk_s cn70xx;
1886        struct cvmx_agl_gmx_txx_clk_s cn70xxp1;
1887};
1888
1889typedef union cvmx_agl_gmx_txx_clk cvmx_agl_gmx_txx_clk_t;
1890
1891/**
1892 * cvmx_agl_gmx_tx#_ctl
1893 *
1894 * AGL_GMX_TX_CTL = TX Control register
1895 *
1896 *
1897 * Notes:
1898 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1899 *
1900 */
1901union cvmx_agl_gmx_txx_ctl {
1902        u64 u64;
1903        struct cvmx_agl_gmx_txx_ctl_s {
1904                u64 reserved_2_63 : 62;
1905                u64 xsdef_en : 1;
1906                u64 xscol_en : 1;
1907        } s;
1908        struct cvmx_agl_gmx_txx_ctl_s cn52xx;
1909        struct cvmx_agl_gmx_txx_ctl_s cn52xxp1;
1910        struct cvmx_agl_gmx_txx_ctl_s cn56xx;
1911        struct cvmx_agl_gmx_txx_ctl_s cn56xxp1;
1912        struct cvmx_agl_gmx_txx_ctl_s cn61xx;
1913        struct cvmx_agl_gmx_txx_ctl_s cn63xx;
1914        struct cvmx_agl_gmx_txx_ctl_s cn63xxp1;
1915        struct cvmx_agl_gmx_txx_ctl_s cn66xx;
1916        struct cvmx_agl_gmx_txx_ctl_s cn68xx;
1917        struct cvmx_agl_gmx_txx_ctl_s cn68xxp1;
1918        struct cvmx_agl_gmx_txx_ctl_s cn70xx;
1919        struct cvmx_agl_gmx_txx_ctl_s cn70xxp1;
1920};
1921
1922typedef union cvmx_agl_gmx_txx_ctl cvmx_agl_gmx_txx_ctl_t;
1923
1924/**
1925 * cvmx_agl_gmx_tx#_min_pkt
1926 *
1927 * AGL_GMX_TX_MIN_PKT = Packet TX Min Size Packet (PAD upto min size)
1928 *
1929 *
1930 * Notes:
1931 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1932 *
1933 */
1934union cvmx_agl_gmx_txx_min_pkt {
1935        u64 u64;
1936        struct cvmx_agl_gmx_txx_min_pkt_s {
1937                u64 reserved_8_63 : 56;
1938                u64 min_size : 8;
1939        } s;
1940        struct cvmx_agl_gmx_txx_min_pkt_s cn52xx;
1941        struct cvmx_agl_gmx_txx_min_pkt_s cn52xxp1;
1942        struct cvmx_agl_gmx_txx_min_pkt_s cn56xx;
1943        struct cvmx_agl_gmx_txx_min_pkt_s cn56xxp1;
1944        struct cvmx_agl_gmx_txx_min_pkt_s cn61xx;
1945        struct cvmx_agl_gmx_txx_min_pkt_s cn63xx;
1946        struct cvmx_agl_gmx_txx_min_pkt_s cn63xxp1;
1947        struct cvmx_agl_gmx_txx_min_pkt_s cn66xx;
1948        struct cvmx_agl_gmx_txx_min_pkt_s cn68xx;
1949        struct cvmx_agl_gmx_txx_min_pkt_s cn68xxp1;
1950        struct cvmx_agl_gmx_txx_min_pkt_s cn70xx;
1951        struct cvmx_agl_gmx_txx_min_pkt_s cn70xxp1;
1952};
1953
1954typedef union cvmx_agl_gmx_txx_min_pkt cvmx_agl_gmx_txx_min_pkt_t;
1955
1956/**
1957 * cvmx_agl_gmx_tx#_pause_pkt_interval
1958 *
1959 * AGL_GMX_TX_PAUSE_PKT_INTERVAL = Packet TX Pause Packet transmission interval - how often PAUSE packets will be sent
1960 *
1961 *
1962 * Notes:
1963 * Choosing proper values of AGL_GMX_TX_PAUSE_PKT_TIME[TIME] and
1964 * AGL_GMX_TX_PAUSE_PKT_INTERVAL[INTERVAL] can be challenging to the system
1965 * designer.  It is suggested that TIME be much greater than INTERVAL and
1966 * AGL_GMX_TX_PAUSE_ZERO[SEND] be set.  This allows a periodic refresh of the PAUSE
1967 * count and then when the backpressure condition is lifted, a PAUSE packet
1968 * with TIME==0 will be sent indicating that Octane is ready for additional
1969 * data.
1970 *
1971 * If the system chooses to not set AGL_GMX_TX_PAUSE_ZERO[SEND], then it is
1972 * suggested that TIME and INTERVAL are programmed such that they satisify the
1973 * following rule...
1974 *
1975 *    INTERVAL <= TIME - (largest_pkt_size + IFG + pause_pkt_size)
1976 *
1977 * where largest_pkt_size is that largest packet that the system can send
1978 * (normally 1518B), IFG is the interframe gap and pause_pkt_size is the size
1979 * of the PAUSE packet (normally 64B).
1980 *
1981 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
1982 */
1983union cvmx_agl_gmx_txx_pause_pkt_interval {
1984        u64 u64;
1985        struct cvmx_agl_gmx_txx_pause_pkt_interval_s {
1986                u64 reserved_16_63 : 48;
1987                u64 interval : 16;
1988        } s;
1989        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn52xx;
1990        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn52xxp1;
1991        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn56xx;
1992        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn56xxp1;
1993        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn61xx;
1994        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn63xx;
1995        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn63xxp1;
1996        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn66xx;
1997        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn68xx;
1998        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn68xxp1;
1999        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn70xx;
2000        struct cvmx_agl_gmx_txx_pause_pkt_interval_s cn70xxp1;
2001};
2002
2003typedef union cvmx_agl_gmx_txx_pause_pkt_interval cvmx_agl_gmx_txx_pause_pkt_interval_t;
2004
2005/**
2006 * cvmx_agl_gmx_tx#_pause_pkt_time
2007 *
2008 * AGL_GMX_TX_PAUSE_PKT_TIME = Packet TX Pause Packet pause_time field
2009 *
2010 *
2011 * Notes:
2012 * Choosing proper values of AGL_GMX_TX_PAUSE_PKT_TIME[TIME] and
2013 * AGL_GMX_TX_PAUSE_PKT_INTERVAL[INTERVAL] can be challenging to the system
2014 * designer.  It is suggested that TIME be much greater than INTERVAL and
2015 * AGL_GMX_TX_PAUSE_ZERO[SEND] be set.  This allows a periodic refresh of the PAUSE
2016 * count and then when the backpressure condition is lifted, a PAUSE packet
2017 * with TIME==0 will be sent indicating that Octane is ready for additional
2018 * data.
2019 *
2020 * If the system chooses to not set AGL_GMX_TX_PAUSE_ZERO[SEND], then it is
2021 * suggested that TIME and INTERVAL are programmed such that they satisify the
2022 * following rule...
2023 *
2024 *    INTERVAL <= TIME - (largest_pkt_size + IFG + pause_pkt_size)
2025 *
2026 * where largest_pkt_size is that largest packet that the system can send
2027 * (normally 1518B), IFG is the interframe gap and pause_pkt_size is the size
2028 * of the PAUSE packet (normally 64B).
2029 *
2030 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2031 */
2032union cvmx_agl_gmx_txx_pause_pkt_time {
2033        u64 u64;
2034        struct cvmx_agl_gmx_txx_pause_pkt_time_s {
2035                u64 reserved_16_63 : 48;
2036                u64 time : 16;
2037        } s;
2038        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn52xx;
2039        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn52xxp1;
2040        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn56xx;
2041        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn56xxp1;
2042        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn61xx;
2043        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn63xx;
2044        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn63xxp1;
2045        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn66xx;
2046        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn68xx;
2047        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn68xxp1;
2048        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn70xx;
2049        struct cvmx_agl_gmx_txx_pause_pkt_time_s cn70xxp1;
2050};
2051
2052typedef union cvmx_agl_gmx_txx_pause_pkt_time cvmx_agl_gmx_txx_pause_pkt_time_t;
2053
2054/**
2055 * cvmx_agl_gmx_tx#_pause_togo
2056 *
2057 * AGL_GMX_TX_PAUSE_TOGO = Packet TX Amount of time remaining to backpressure
2058 *
2059 *
2060 * Notes:
2061 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2062 *
2063 */
2064union cvmx_agl_gmx_txx_pause_togo {
2065        u64 u64;
2066        struct cvmx_agl_gmx_txx_pause_togo_s {
2067                u64 reserved_16_63 : 48;
2068                u64 time : 16;
2069        } s;
2070        struct cvmx_agl_gmx_txx_pause_togo_s cn52xx;
2071        struct cvmx_agl_gmx_txx_pause_togo_s cn52xxp1;
2072        struct cvmx_agl_gmx_txx_pause_togo_s cn56xx;
2073        struct cvmx_agl_gmx_txx_pause_togo_s cn56xxp1;
2074        struct cvmx_agl_gmx_txx_pause_togo_s cn61xx;
2075        struct cvmx_agl_gmx_txx_pause_togo_s cn63xx;
2076        struct cvmx_agl_gmx_txx_pause_togo_s cn63xxp1;
2077        struct cvmx_agl_gmx_txx_pause_togo_s cn66xx;
2078        struct cvmx_agl_gmx_txx_pause_togo_s cn68xx;
2079        struct cvmx_agl_gmx_txx_pause_togo_s cn68xxp1;
2080        struct cvmx_agl_gmx_txx_pause_togo_s cn70xx;
2081        struct cvmx_agl_gmx_txx_pause_togo_s cn70xxp1;
2082};
2083
2084typedef union cvmx_agl_gmx_txx_pause_togo cvmx_agl_gmx_txx_pause_togo_t;
2085
2086/**
2087 * cvmx_agl_gmx_tx#_pause_zero
2088 *
2089 * AGL_GMX_TX_PAUSE_ZERO = Packet TX Amount of time remaining to backpressure
2090 *
2091 *
2092 * Notes:
2093 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2094 *
2095 */
2096union cvmx_agl_gmx_txx_pause_zero {
2097        u64 u64;
2098        struct cvmx_agl_gmx_txx_pause_zero_s {
2099                u64 reserved_1_63 : 63;
2100                u64 send : 1;
2101        } s;
2102        struct cvmx_agl_gmx_txx_pause_zero_s cn52xx;
2103        struct cvmx_agl_gmx_txx_pause_zero_s cn52xxp1;
2104        struct cvmx_agl_gmx_txx_pause_zero_s cn56xx;
2105        struct cvmx_agl_gmx_txx_pause_zero_s cn56xxp1;
2106        struct cvmx_agl_gmx_txx_pause_zero_s cn61xx;
2107        struct cvmx_agl_gmx_txx_pause_zero_s cn63xx;
2108        struct cvmx_agl_gmx_txx_pause_zero_s cn63xxp1;
2109        struct cvmx_agl_gmx_txx_pause_zero_s cn66xx;
2110        struct cvmx_agl_gmx_txx_pause_zero_s cn68xx;
2111        struct cvmx_agl_gmx_txx_pause_zero_s cn68xxp1;
2112        struct cvmx_agl_gmx_txx_pause_zero_s cn70xx;
2113        struct cvmx_agl_gmx_txx_pause_zero_s cn70xxp1;
2114};
2115
2116typedef union cvmx_agl_gmx_txx_pause_zero cvmx_agl_gmx_txx_pause_zero_t;
2117
2118/**
2119 * cvmx_agl_gmx_tx#_soft_pause
2120 *
2121 * AGL_GMX_TX_SOFT_PAUSE = Packet TX Software Pause
2122 *
2123 *
2124 * Notes:
2125 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2126 *
2127 */
2128union cvmx_agl_gmx_txx_soft_pause {
2129        u64 u64;
2130        struct cvmx_agl_gmx_txx_soft_pause_s {
2131                u64 reserved_16_63 : 48;
2132                u64 time : 16;
2133        } s;
2134        struct cvmx_agl_gmx_txx_soft_pause_s cn52xx;
2135        struct cvmx_agl_gmx_txx_soft_pause_s cn52xxp1;
2136        struct cvmx_agl_gmx_txx_soft_pause_s cn56xx;
2137        struct cvmx_agl_gmx_txx_soft_pause_s cn56xxp1;
2138        struct cvmx_agl_gmx_txx_soft_pause_s cn61xx;
2139        struct cvmx_agl_gmx_txx_soft_pause_s cn63xx;
2140        struct cvmx_agl_gmx_txx_soft_pause_s cn63xxp1;
2141        struct cvmx_agl_gmx_txx_soft_pause_s cn66xx;
2142        struct cvmx_agl_gmx_txx_soft_pause_s cn68xx;
2143        struct cvmx_agl_gmx_txx_soft_pause_s cn68xxp1;
2144        struct cvmx_agl_gmx_txx_soft_pause_s cn70xx;
2145        struct cvmx_agl_gmx_txx_soft_pause_s cn70xxp1;
2146};
2147
2148typedef union cvmx_agl_gmx_txx_soft_pause cvmx_agl_gmx_txx_soft_pause_t;
2149
2150/**
2151 * cvmx_agl_gmx_tx#_stat0
2152 *
2153 * AGL_GMX_TX_STAT0 = AGL_GMX_TX_STATS_XSDEF / AGL_GMX_TX_STATS_XSCOL
2154 *
2155 *
2156 * Notes:
2157 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2158 * - Counters will wrap
2159 * - Not reset when MIX*_CTL[RESET] is set to 1.
2160 */
2161union cvmx_agl_gmx_txx_stat0 {
2162        u64 u64;
2163        struct cvmx_agl_gmx_txx_stat0_s {
2164                u64 xsdef : 32;
2165                u64 xscol : 32;
2166        } s;
2167        struct cvmx_agl_gmx_txx_stat0_s cn52xx;
2168        struct cvmx_agl_gmx_txx_stat0_s cn52xxp1;
2169        struct cvmx_agl_gmx_txx_stat0_s cn56xx;
2170        struct cvmx_agl_gmx_txx_stat0_s cn56xxp1;
2171        struct cvmx_agl_gmx_txx_stat0_s cn61xx;
2172        struct cvmx_agl_gmx_txx_stat0_s cn63xx;
2173        struct cvmx_agl_gmx_txx_stat0_s cn63xxp1;
2174        struct cvmx_agl_gmx_txx_stat0_s cn66xx;
2175        struct cvmx_agl_gmx_txx_stat0_s cn68xx;
2176        struct cvmx_agl_gmx_txx_stat0_s cn68xxp1;
2177        struct cvmx_agl_gmx_txx_stat0_s cn70xx;
2178        struct cvmx_agl_gmx_txx_stat0_s cn70xxp1;
2179};
2180
2181typedef union cvmx_agl_gmx_txx_stat0 cvmx_agl_gmx_txx_stat0_t;
2182
2183/**
2184 * cvmx_agl_gmx_tx#_stat1
2185 *
2186 * AGL_GMX_TX_STAT1 = AGL_GMX_TX_STATS_SCOL  / AGL_GMX_TX_STATS_MCOL
2187 *
2188 *
2189 * Notes:
2190 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2191 * - Counters will wrap
2192 * - Not reset when MIX*_CTL[RESET] is set to 1.
2193 */
2194union cvmx_agl_gmx_txx_stat1 {
2195        u64 u64;
2196        struct cvmx_agl_gmx_txx_stat1_s {
2197                u64 scol : 32;
2198                u64 mcol : 32;
2199        } s;
2200        struct cvmx_agl_gmx_txx_stat1_s cn52xx;
2201        struct cvmx_agl_gmx_txx_stat1_s cn52xxp1;
2202        struct cvmx_agl_gmx_txx_stat1_s cn56xx;
2203        struct cvmx_agl_gmx_txx_stat1_s cn56xxp1;
2204        struct cvmx_agl_gmx_txx_stat1_s cn61xx;
2205        struct cvmx_agl_gmx_txx_stat1_s cn63xx;
2206        struct cvmx_agl_gmx_txx_stat1_s cn63xxp1;
2207        struct cvmx_agl_gmx_txx_stat1_s cn66xx;
2208        struct cvmx_agl_gmx_txx_stat1_s cn68xx;
2209        struct cvmx_agl_gmx_txx_stat1_s cn68xxp1;
2210        struct cvmx_agl_gmx_txx_stat1_s cn70xx;
2211        struct cvmx_agl_gmx_txx_stat1_s cn70xxp1;
2212};
2213
2214typedef union cvmx_agl_gmx_txx_stat1 cvmx_agl_gmx_txx_stat1_t;
2215
2216/**
2217 * cvmx_agl_gmx_tx#_stat2
2218 *
2219 * AGL_GMX_TX_STAT2 = AGL_GMX_TX_STATS_OCTS
2220 *
2221 *
2222 * Notes:
2223 * - Octect counts are the sum of all data transmitted on the wire including
2224 *   packet data, pad bytes, fcs bytes, pause bytes, and jam bytes.  The octect
2225 *   counts do not include PREAMBLE byte or EXTEND cycles.
2226 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2227 * - Counters will wrap
2228 * - Not reset when MIX*_CTL[RESET] is set to 1.
2229 */
2230union cvmx_agl_gmx_txx_stat2 {
2231        u64 u64;
2232        struct cvmx_agl_gmx_txx_stat2_s {
2233                u64 reserved_48_63 : 16;
2234                u64 octs : 48;
2235        } s;
2236        struct cvmx_agl_gmx_txx_stat2_s cn52xx;
2237        struct cvmx_agl_gmx_txx_stat2_s cn52xxp1;
2238        struct cvmx_agl_gmx_txx_stat2_s cn56xx;
2239        struct cvmx_agl_gmx_txx_stat2_s cn56xxp1;
2240        struct cvmx_agl_gmx_txx_stat2_s cn61xx;
2241        struct cvmx_agl_gmx_txx_stat2_s cn63xx;
2242        struct cvmx_agl_gmx_txx_stat2_s cn63xxp1;
2243        struct cvmx_agl_gmx_txx_stat2_s cn66xx;
2244        struct cvmx_agl_gmx_txx_stat2_s cn68xx;
2245        struct cvmx_agl_gmx_txx_stat2_s cn68xxp1;
2246        struct cvmx_agl_gmx_txx_stat2_s cn70xx;
2247        struct cvmx_agl_gmx_txx_stat2_s cn70xxp1;
2248};
2249
2250typedef union cvmx_agl_gmx_txx_stat2 cvmx_agl_gmx_txx_stat2_t;
2251
2252/**
2253 * cvmx_agl_gmx_tx#_stat3
2254 *
2255 * AGL_GMX_TX_STAT3 = AGL_GMX_TX_STATS_PKTS
2256 *
2257 *
2258 * Notes:
2259 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2260 * - Counters will wrap
2261 * - Not reset when MIX*_CTL[RESET] is set to 1.
2262 */
2263union cvmx_agl_gmx_txx_stat3 {
2264        u64 u64;
2265        struct cvmx_agl_gmx_txx_stat3_s {
2266                u64 reserved_32_63 : 32;
2267                u64 pkts : 32;
2268        } s;
2269        struct cvmx_agl_gmx_txx_stat3_s cn52xx;
2270        struct cvmx_agl_gmx_txx_stat3_s cn52xxp1;
2271        struct cvmx_agl_gmx_txx_stat3_s cn56xx;
2272        struct cvmx_agl_gmx_txx_stat3_s cn56xxp1;
2273        struct cvmx_agl_gmx_txx_stat3_s cn61xx;
2274        struct cvmx_agl_gmx_txx_stat3_s cn63xx;
2275        struct cvmx_agl_gmx_txx_stat3_s cn63xxp1;
2276        struct cvmx_agl_gmx_txx_stat3_s cn66xx;
2277        struct cvmx_agl_gmx_txx_stat3_s cn68xx;
2278        struct cvmx_agl_gmx_txx_stat3_s cn68xxp1;
2279        struct cvmx_agl_gmx_txx_stat3_s cn70xx;
2280        struct cvmx_agl_gmx_txx_stat3_s cn70xxp1;
2281};
2282
2283typedef union cvmx_agl_gmx_txx_stat3 cvmx_agl_gmx_txx_stat3_t;
2284
2285/**
2286 * cvmx_agl_gmx_tx#_stat4
2287 *
2288 * AGL_GMX_TX_STAT4 = AGL_GMX_TX_STATS_HIST1 (64) / AGL_GMX_TX_STATS_HIST0 (<64)
2289 *
2290 *
2291 * Notes:
2292 * - Packet length is the sum of all data transmitted on the wire for the given
2293 *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
2294 *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
2295 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2296 * - Counters will wrap
2297 * - Not reset when MIX*_CTL[RESET] is set to 1.
2298 */
2299union cvmx_agl_gmx_txx_stat4 {
2300        u64 u64;
2301        struct cvmx_agl_gmx_txx_stat4_s {
2302                u64 hist1 : 32;
2303                u64 hist0 : 32;
2304        } s;
2305        struct cvmx_agl_gmx_txx_stat4_s cn52xx;
2306        struct cvmx_agl_gmx_txx_stat4_s cn52xxp1;
2307        struct cvmx_agl_gmx_txx_stat4_s cn56xx;
2308        struct cvmx_agl_gmx_txx_stat4_s cn56xxp1;
2309        struct cvmx_agl_gmx_txx_stat4_s cn61xx;
2310        struct cvmx_agl_gmx_txx_stat4_s cn63xx;
2311        struct cvmx_agl_gmx_txx_stat4_s cn63xxp1;
2312        struct cvmx_agl_gmx_txx_stat4_s cn66xx;
2313        struct cvmx_agl_gmx_txx_stat4_s cn68xx;
2314        struct cvmx_agl_gmx_txx_stat4_s cn68xxp1;
2315        struct cvmx_agl_gmx_txx_stat4_s cn70xx;
2316        struct cvmx_agl_gmx_txx_stat4_s cn70xxp1;
2317};
2318
2319typedef union cvmx_agl_gmx_txx_stat4 cvmx_agl_gmx_txx_stat4_t;
2320
2321/**
2322 * cvmx_agl_gmx_tx#_stat5
2323 *
2324 * AGL_GMX_TX_STAT5 = AGL_GMX_TX_STATS_HIST3 (128- 255) / AGL_GMX_TX_STATS_HIST2 (65- 127)
2325 *
2326 *
2327 * Notes:
2328 * - Packet length is the sum of all data transmitted on the wire for the given
2329 *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
2330 *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
2331 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2332 * - Counters will wrap
2333 * - Not reset when MIX*_CTL[RESET] is set to 1.
2334 */
2335union cvmx_agl_gmx_txx_stat5 {
2336        u64 u64;
2337        struct cvmx_agl_gmx_txx_stat5_s {
2338                u64 hist3 : 32;
2339                u64 hist2 : 32;
2340        } s;
2341        struct cvmx_agl_gmx_txx_stat5_s cn52xx;
2342        struct cvmx_agl_gmx_txx_stat5_s cn52xxp1;
2343        struct cvmx_agl_gmx_txx_stat5_s cn56xx;
2344        struct cvmx_agl_gmx_txx_stat5_s cn56xxp1;
2345        struct cvmx_agl_gmx_txx_stat5_s cn61xx;
2346        struct cvmx_agl_gmx_txx_stat5_s cn63xx;
2347        struct cvmx_agl_gmx_txx_stat5_s cn63xxp1;
2348        struct cvmx_agl_gmx_txx_stat5_s cn66xx;
2349        struct cvmx_agl_gmx_txx_stat5_s cn68xx;
2350        struct cvmx_agl_gmx_txx_stat5_s cn68xxp1;
2351        struct cvmx_agl_gmx_txx_stat5_s cn70xx;
2352        struct cvmx_agl_gmx_txx_stat5_s cn70xxp1;
2353};
2354
2355typedef union cvmx_agl_gmx_txx_stat5 cvmx_agl_gmx_txx_stat5_t;
2356
2357/**
2358 * cvmx_agl_gmx_tx#_stat6
2359 *
2360 * AGL_GMX_TX_STAT6 = AGL_GMX_TX_STATS_HIST5 (512-1023) / AGL_GMX_TX_STATS_HIST4 (256-511)
2361 *
2362 *
2363 * Notes:
2364 * - Packet length is the sum of all data transmitted on the wire for the given
2365 *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
2366 *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
2367 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2368 * - Counters will wrap
2369 * - Not reset when MIX*_CTL[RESET] is set to 1.
2370 */
2371union cvmx_agl_gmx_txx_stat6 {
2372        u64 u64;
2373        struct cvmx_agl_gmx_txx_stat6_s {
2374                u64 hist5 : 32;
2375                u64 hist4 : 32;
2376        } s;
2377        struct cvmx_agl_gmx_txx_stat6_s cn52xx;
2378        struct cvmx_agl_gmx_txx_stat6_s cn52xxp1;
2379        struct cvmx_agl_gmx_txx_stat6_s cn56xx;
2380        struct cvmx_agl_gmx_txx_stat6_s cn56xxp1;
2381        struct cvmx_agl_gmx_txx_stat6_s cn61xx;
2382        struct cvmx_agl_gmx_txx_stat6_s cn63xx;
2383        struct cvmx_agl_gmx_txx_stat6_s cn63xxp1;
2384        struct cvmx_agl_gmx_txx_stat6_s cn66xx;
2385        struct cvmx_agl_gmx_txx_stat6_s cn68xx;
2386        struct cvmx_agl_gmx_txx_stat6_s cn68xxp1;
2387        struct cvmx_agl_gmx_txx_stat6_s cn70xx;
2388        struct cvmx_agl_gmx_txx_stat6_s cn70xxp1;
2389};
2390
2391typedef union cvmx_agl_gmx_txx_stat6 cvmx_agl_gmx_txx_stat6_t;
2392
2393/**
2394 * cvmx_agl_gmx_tx#_stat7
2395 *
2396 * AGL_GMX_TX_STAT7 = AGL_GMX_TX_STATS_HIST7 (1024-1518) / AGL_GMX_TX_STATS_HIST6 (>1518)
2397 *
2398 *
2399 * Notes:
2400 * - Packet length is the sum of all data transmitted on the wire for the given
2401 *   packet including packet data, pad bytes, fcs bytes, pause bytes, and jam
2402 *   bytes.  The octect counts do not include PREAMBLE byte or EXTEND cycles.
2403 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2404 * - Counters will wrap
2405 * - Not reset when MIX*_CTL[RESET] is set to 1.
2406 */
2407union cvmx_agl_gmx_txx_stat7 {
2408        u64 u64;
2409        struct cvmx_agl_gmx_txx_stat7_s {
2410                u64 hist7 : 32;
2411                u64 hist6 : 32;
2412        } s;
2413        struct cvmx_agl_gmx_txx_stat7_s cn52xx;
2414        struct cvmx_agl_gmx_txx_stat7_s cn52xxp1;
2415        struct cvmx_agl_gmx_txx_stat7_s cn56xx;
2416        struct cvmx_agl_gmx_txx_stat7_s cn56xxp1;
2417        struct cvmx_agl_gmx_txx_stat7_s cn61xx;
2418        struct cvmx_agl_gmx_txx_stat7_s cn63xx;
2419        struct cvmx_agl_gmx_txx_stat7_s cn63xxp1;
2420        struct cvmx_agl_gmx_txx_stat7_s cn66xx;
2421        struct cvmx_agl_gmx_txx_stat7_s cn68xx;
2422        struct cvmx_agl_gmx_txx_stat7_s cn68xxp1;
2423        struct cvmx_agl_gmx_txx_stat7_s cn70xx;
2424        struct cvmx_agl_gmx_txx_stat7_s cn70xxp1;
2425};
2426
2427typedef union cvmx_agl_gmx_txx_stat7 cvmx_agl_gmx_txx_stat7_t;
2428
2429/**
2430 * cvmx_agl_gmx_tx#_stat8
2431 *
2432 * AGL_GMX_TX_STAT8 = AGL_GMX_TX_STATS_MCST  / AGL_GMX_TX_STATS_BCST
2433 *
2434 *
2435 * Notes:
2436 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2437 * - Counters will wrap
2438 * - Note, GMX determines if the packet is MCST or BCST from the DMAC of the
2439 *   packet.  GMX assumes that the DMAC lies in the first 6 bytes of the packet
2440 *   as per the 802.3 frame definition.  If the system requires additional data
2441 *   before the L2 header, then the MCST and BCST counters may not reflect
2442 *   reality and should be ignored by software.
2443 * - Not reset when MIX*_CTL[RESET] is set to 1.
2444 */
2445union cvmx_agl_gmx_txx_stat8 {
2446        u64 u64;
2447        struct cvmx_agl_gmx_txx_stat8_s {
2448                u64 mcst : 32;
2449                u64 bcst : 32;
2450        } s;
2451        struct cvmx_agl_gmx_txx_stat8_s cn52xx;
2452        struct cvmx_agl_gmx_txx_stat8_s cn52xxp1;
2453        struct cvmx_agl_gmx_txx_stat8_s cn56xx;
2454        struct cvmx_agl_gmx_txx_stat8_s cn56xxp1;
2455        struct cvmx_agl_gmx_txx_stat8_s cn61xx;
2456        struct cvmx_agl_gmx_txx_stat8_s cn63xx;
2457        struct cvmx_agl_gmx_txx_stat8_s cn63xxp1;
2458        struct cvmx_agl_gmx_txx_stat8_s cn66xx;
2459        struct cvmx_agl_gmx_txx_stat8_s cn68xx;
2460        struct cvmx_agl_gmx_txx_stat8_s cn68xxp1;
2461        struct cvmx_agl_gmx_txx_stat8_s cn70xx;
2462        struct cvmx_agl_gmx_txx_stat8_s cn70xxp1;
2463};
2464
2465typedef union cvmx_agl_gmx_txx_stat8 cvmx_agl_gmx_txx_stat8_t;
2466
2467/**
2468 * cvmx_agl_gmx_tx#_stat9
2469 *
2470 * AGL_GMX_TX_STAT9 = AGL_GMX_TX_STATS_UNDFLW / AGL_GMX_TX_STATS_CTL
2471 *
2472 *
2473 * Notes:
2474 * - Cleared either by a write (of any value) or a read when AGL_GMX_TX_STATS_CTL[RD_CLR] is set
2475 * - Counters will wrap
2476 * - Not reset when MIX*_CTL[RESET] is set to 1.
2477 */
2478union cvmx_agl_gmx_txx_stat9 {
2479        u64 u64;
2480        struct cvmx_agl_gmx_txx_stat9_s {
2481                u64 undflw : 32;
2482                u64 ctl : 32;
2483        } s;
2484        struct cvmx_agl_gmx_txx_stat9_s cn52xx;
2485        struct cvmx_agl_gmx_txx_stat9_s cn52xxp1;
2486        struct cvmx_agl_gmx_txx_stat9_s cn56xx;
2487        struct cvmx_agl_gmx_txx_stat9_s cn56xxp1;
2488        struct cvmx_agl_gmx_txx_stat9_s cn61xx;
2489        struct cvmx_agl_gmx_txx_stat9_s cn63xx;
2490        struct cvmx_agl_gmx_txx_stat9_s cn63xxp1;
2491        struct cvmx_agl_gmx_txx_stat9_s cn66xx;
2492        struct cvmx_agl_gmx_txx_stat9_s cn68xx;
2493        struct cvmx_agl_gmx_txx_stat9_s cn68xxp1;
2494        struct cvmx_agl_gmx_txx_stat9_s cn70xx;
2495        struct cvmx_agl_gmx_txx_stat9_s cn70xxp1;
2496};
2497
2498typedef union cvmx_agl_gmx_txx_stat9 cvmx_agl_gmx_txx_stat9_t;
2499
2500/**
2501 * cvmx_agl_gmx_tx#_stats_ctl
2502 *
2503 * AGL_GMX_TX_STATS_CTL = TX Stats Control register
2504 *
2505 *
2506 * Notes:
2507 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2508 *
2509 */
2510union cvmx_agl_gmx_txx_stats_ctl {
2511        u64 u64;
2512        struct cvmx_agl_gmx_txx_stats_ctl_s {
2513                u64 reserved_1_63 : 63;
2514                u64 rd_clr : 1;
2515        } s;
2516        struct cvmx_agl_gmx_txx_stats_ctl_s cn52xx;
2517        struct cvmx_agl_gmx_txx_stats_ctl_s cn52xxp1;
2518        struct cvmx_agl_gmx_txx_stats_ctl_s cn56xx;
2519        struct cvmx_agl_gmx_txx_stats_ctl_s cn56xxp1;
2520        struct cvmx_agl_gmx_txx_stats_ctl_s cn61xx;
2521        struct cvmx_agl_gmx_txx_stats_ctl_s cn63xx;
2522        struct cvmx_agl_gmx_txx_stats_ctl_s cn63xxp1;
2523        struct cvmx_agl_gmx_txx_stats_ctl_s cn66xx;
2524        struct cvmx_agl_gmx_txx_stats_ctl_s cn68xx;
2525        struct cvmx_agl_gmx_txx_stats_ctl_s cn68xxp1;
2526        struct cvmx_agl_gmx_txx_stats_ctl_s cn70xx;
2527        struct cvmx_agl_gmx_txx_stats_ctl_s cn70xxp1;
2528};
2529
2530typedef union cvmx_agl_gmx_txx_stats_ctl cvmx_agl_gmx_txx_stats_ctl_t;
2531
2532/**
2533 * cvmx_agl_gmx_tx#_thresh
2534 *
2535 * AGL_GMX_TX_THRESH = Packet TX Threshold
2536 *
2537 *
2538 * Notes:
2539 * Additionally reset when MIX<prt>_CTL[RESET] is set to 1.
2540 *
2541 */
2542union cvmx_agl_gmx_txx_thresh {
2543        u64 u64;
2544        struct cvmx_agl_gmx_txx_thresh_s {
2545                u64 reserved_6_63 : 58;
2546                u64 cnt : 6;
2547        } s;
2548        struct cvmx_agl_gmx_txx_thresh_s cn52xx;
2549        struct cvmx_agl_gmx_txx_thresh_s cn52xxp1;
2550        struct cvmx_agl_gmx_txx_thresh_s cn56xx;
2551        struct cvmx_agl_gmx_txx_thresh_s cn56xxp1;
2552        struct cvmx_agl_gmx_txx_thresh_s cn61xx;
2553        struct cvmx_agl_gmx_txx_thresh_s cn63xx;
2554        struct cvmx_agl_gmx_txx_thresh_s cn63xxp1;
2555        struct cvmx_agl_gmx_txx_thresh_s cn66xx;
2556        struct cvmx_agl_gmx_txx_thresh_s cn68xx;
2557        struct cvmx_agl_gmx_txx_thresh_s cn68xxp1;
2558        struct cvmx_agl_gmx_txx_thresh_s cn70xx;
2559        struct cvmx_agl_gmx_txx_thresh_s cn70xxp1;
2560};
2561
2562typedef union cvmx_agl_gmx_txx_thresh cvmx_agl_gmx_txx_thresh_t;
2563
2564/**
2565 * cvmx_agl_gmx_tx_bp
2566 *
2567 * AGL_GMX_TX_BP = Packet TX BackPressure Register
2568 *
2569 *
2570 * Notes:
2571 * BP[0] will be reset when MIX0_CTL[RESET] is set to 1.
2572 * BP[1] will be reset when MIX1_CTL[RESET] is set to 1.
2573 */
2574union cvmx_agl_gmx_tx_bp {
2575        u64 u64;
2576        struct cvmx_agl_gmx_tx_bp_s {
2577                u64 reserved_2_63 : 62;
2578                u64 bp : 2;
2579        } s;
2580        struct cvmx_agl_gmx_tx_bp_s cn52xx;
2581        struct cvmx_agl_gmx_tx_bp_s cn52xxp1;
2582        struct cvmx_agl_gmx_tx_bp_cn56xx {
2583                u64 reserved_1_63 : 63;
2584                u64 bp : 1;
2585        } cn56xx;
2586        struct cvmx_agl_gmx_tx_bp_cn56xx cn56xxp1;
2587        struct cvmx_agl_gmx_tx_bp_s cn61xx;
2588        struct cvmx_agl_gmx_tx_bp_s cn63xx;
2589        struct cvmx_agl_gmx_tx_bp_s cn63xxp1;
2590        struct cvmx_agl_gmx_tx_bp_s cn66xx;
2591        struct cvmx_agl_gmx_tx_bp_s cn68xx;
2592        struct cvmx_agl_gmx_tx_bp_s cn68xxp1;
2593        struct cvmx_agl_gmx_tx_bp_cn56xx cn70xx;
2594        struct cvmx_agl_gmx_tx_bp_cn56xx cn70xxp1;
2595};
2596
2597typedef union cvmx_agl_gmx_tx_bp cvmx_agl_gmx_tx_bp_t;
2598
2599/**
2600 * cvmx_agl_gmx_tx_col_attempt
2601 *
2602 * AGL_GMX_TX_COL_ATTEMPT = Packet TX collision attempts before dropping frame
2603 *
2604 *
2605 * Notes:
2606 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
2607 *
2608 */
2609union cvmx_agl_gmx_tx_col_attempt {
2610        u64 u64;
2611        struct cvmx_agl_gmx_tx_col_attempt_s {
2612                u64 reserved_5_63 : 59;
2613                u64 limit : 5;
2614        } s;
2615        struct cvmx_agl_gmx_tx_col_attempt_s cn52xx;
2616        struct cvmx_agl_gmx_tx_col_attempt_s cn52xxp1;
2617        struct cvmx_agl_gmx_tx_col_attempt_s cn56xx;
2618        struct cvmx_agl_gmx_tx_col_attempt_s cn56xxp1;
2619        struct cvmx_agl_gmx_tx_col_attempt_s cn61xx;
2620        struct cvmx_agl_gmx_tx_col_attempt_s cn63xx;
2621        struct cvmx_agl_gmx_tx_col_attempt_s cn63xxp1;
2622        struct cvmx_agl_gmx_tx_col_attempt_s cn66xx;
2623        struct cvmx_agl_gmx_tx_col_attempt_s cn68xx;
2624        struct cvmx_agl_gmx_tx_col_attempt_s cn68xxp1;
2625        struct cvmx_agl_gmx_tx_col_attempt_s cn70xx;
2626        struct cvmx_agl_gmx_tx_col_attempt_s cn70xxp1;
2627};
2628
2629typedef union cvmx_agl_gmx_tx_col_attempt cvmx_agl_gmx_tx_col_attempt_t;
2630
2631/**
2632 * cvmx_agl_gmx_tx_ifg
2633 *
2634 * Common
2635 * AGL_GMX_TX_IFG = Packet TX Interframe Gap
2636 */
2637union cvmx_agl_gmx_tx_ifg {
2638        u64 u64;
2639        struct cvmx_agl_gmx_tx_ifg_s {
2640                u64 reserved_8_63 : 56;
2641                u64 ifg2 : 4;
2642                u64 ifg1 : 4;
2643        } s;
2644        struct cvmx_agl_gmx_tx_ifg_s cn52xx;
2645        struct cvmx_agl_gmx_tx_ifg_s cn52xxp1;
2646        struct cvmx_agl_gmx_tx_ifg_s cn56xx;
2647        struct cvmx_agl_gmx_tx_ifg_s cn56xxp1;
2648        struct cvmx_agl_gmx_tx_ifg_s cn61xx;
2649        struct cvmx_agl_gmx_tx_ifg_s cn63xx;
2650        struct cvmx_agl_gmx_tx_ifg_s cn63xxp1;
2651        struct cvmx_agl_gmx_tx_ifg_s cn66xx;
2652        struct cvmx_agl_gmx_tx_ifg_s cn68xx;
2653        struct cvmx_agl_gmx_tx_ifg_s cn68xxp1;
2654        struct cvmx_agl_gmx_tx_ifg_s cn70xx;
2655        struct cvmx_agl_gmx_tx_ifg_s cn70xxp1;
2656};
2657
2658typedef union cvmx_agl_gmx_tx_ifg cvmx_agl_gmx_tx_ifg_t;
2659
2660/**
2661 * cvmx_agl_gmx_tx_int_en
2662 *
2663 * AGL_GMX_TX_INT_EN = Interrupt Enable
2664 *
2665 *
2666 * Notes:
2667 * UNDFLW[0], XSCOL[0], XSDEF[0], LATE_COL[0], PTP_LOST[0] will be reset when MIX0_CTL[RESET] is set to 1.
2668 * UNDFLW[1], XSCOL[1], XSDEF[1], LATE_COL[1], PTP_LOST[1] will be reset when MIX1_CTL[RESET] is set to 1.
2669 * PKO_NXA will bee reset when both MIX0/1_CTL[RESET] are set to 1.
2670 */
2671union cvmx_agl_gmx_tx_int_en {
2672        u64 u64;
2673        struct cvmx_agl_gmx_tx_int_en_s {
2674                u64 reserved_22_63 : 42;
2675                u64 ptp_lost : 2;
2676                u64 reserved_18_19 : 2;
2677                u64 late_col : 2;
2678                u64 reserved_14_15 : 2;
2679                u64 xsdef : 2;
2680                u64 reserved_10_11 : 2;
2681                u64 xscol : 2;
2682                u64 reserved_4_7 : 4;
2683                u64 undflw : 2;
2684                u64 reserved_1_1 : 1;
2685                u64 pko_nxa : 1;
2686        } s;
2687        struct cvmx_agl_gmx_tx_int_en_cn52xx {
2688                u64 reserved_18_63 : 46;
2689                u64 late_col : 2;
2690                u64 reserved_14_15 : 2;
2691                u64 xsdef : 2;
2692                u64 reserved_10_11 : 2;
2693                u64 xscol : 2;
2694                u64 reserved_4_7 : 4;
2695                u64 undflw : 2;
2696                u64 reserved_1_1 : 1;
2697                u64 pko_nxa : 1;
2698        } cn52xx;
2699        struct cvmx_agl_gmx_tx_int_en_cn52xx cn52xxp1;
2700        struct cvmx_agl_gmx_tx_int_en_cn56xx {
2701                u64 reserved_17_63 : 47;
2702                u64 late_col : 1;
2703                u64 reserved_13_15 : 3;
2704                u64 xsdef : 1;
2705                u64 reserved_9_11 : 3;
2706                u64 xscol : 1;
2707                u64 reserved_3_7 : 5;
2708                u64 undflw : 1;
2709                u64 reserved_1_1 : 1;
2710                u64 pko_nxa : 1;
2711        } cn56xx;
2712        struct cvmx_agl_gmx_tx_int_en_cn56xx cn56xxp1;
2713        struct cvmx_agl_gmx_tx_int_en_s cn61xx;
2714        struct cvmx_agl_gmx_tx_int_en_s cn63xx;
2715        struct cvmx_agl_gmx_tx_int_en_s cn63xxp1;
2716        struct cvmx_agl_gmx_tx_int_en_s cn66xx;
2717        struct cvmx_agl_gmx_tx_int_en_s cn68xx;
2718        struct cvmx_agl_gmx_tx_int_en_s cn68xxp1;
2719        struct cvmx_agl_gmx_tx_int_en_cn70xx {
2720                u64 reserved_21_63 : 43;
2721                u64 ptp_lost : 1;
2722                u64 reserved_17_19 : 3;
2723                u64 late_col : 1;
2724                u64 reserved_13_15 : 3;
2725                u64 xsdef : 1;
2726                u64 reserved_9_11 : 3;
2727                u64 xscol : 1;
2728                u64 reserved_3_7 : 5;
2729                u64 undflw : 1;
2730                u64 reserved_1_1 : 1;
2731                u64 pko_nxa : 1;
2732        } cn70xx;
2733        struct cvmx_agl_gmx_tx_int_en_cn70xx cn70xxp1;
2734};
2735
2736typedef union cvmx_agl_gmx_tx_int_en cvmx_agl_gmx_tx_int_en_t;
2737
2738/**
2739 * cvmx_agl_gmx_tx_int_reg
2740 *
2741 * AGL_GMX_TX_INT_REG = Interrupt Register
2742 *
2743 *
2744 * Notes:
2745 * UNDFLW[0], XSCOL[0], XSDEF[0], LATE_COL[0], PTP_LOST[0] will be reset when MIX0_CTL[RESET] is set to 1.
2746 * UNDFLW[1], XSCOL[1], XSDEF[1], LATE_COL[1], PTP_LOST[1] will be reset when MIX1_CTL[RESET] is set to 1.
2747 * PKO_NXA will bee reset when both MIX0/1_CTL[RESET] are set to 1.
2748 */
2749union cvmx_agl_gmx_tx_int_reg {
2750        u64 u64;
2751        struct cvmx_agl_gmx_tx_int_reg_s {
2752                u64 reserved_22_63 : 42;
2753                u64 ptp_lost : 2;
2754                u64 reserved_18_19 : 2;
2755                u64 late_col : 2;
2756                u64 reserved_14_15 : 2;
2757                u64 xsdef : 2;
2758                u64 reserved_10_11 : 2;
2759                u64 xscol : 2;
2760                u64 reserved_4_7 : 4;
2761                u64 undflw : 2;
2762                u64 reserved_1_1 : 1;
2763                u64 pko_nxa : 1;
2764        } s;
2765        struct cvmx_agl_gmx_tx_int_reg_cn52xx {
2766                u64 reserved_18_63 : 46;
2767                u64 late_col : 2;
2768                u64 reserved_14_15 : 2;
2769                u64 xsdef : 2;
2770                u64 reserved_10_11 : 2;
2771                u64 xscol : 2;
2772                u64 reserved_4_7 : 4;
2773                u64 undflw : 2;
2774                u64 reserved_1_1 : 1;
2775                u64 pko_nxa : 1;
2776        } cn52xx;
2777        struct cvmx_agl_gmx_tx_int_reg_cn52xx cn52xxp1;
2778        struct cvmx_agl_gmx_tx_int_reg_cn56xx {
2779                u64 reserved_17_63 : 47;
2780                u64 late_col : 1;
2781                u64 reserved_13_15 : 3;
2782                u64 xsdef : 1;
2783                u64 reserved_9_11 : 3;
2784                u64 xscol : 1;
2785                u64 reserved_3_7 : 5;
2786                u64 undflw : 1;
2787                u64 reserved_1_1 : 1;
2788                u64 pko_nxa : 1;
2789        } cn56xx;
2790        struct cvmx_agl_gmx_tx_int_reg_cn56xx cn56xxp1;
2791        struct cvmx_agl_gmx_tx_int_reg_s cn61xx;
2792        struct cvmx_agl_gmx_tx_int_reg_s cn63xx;
2793        struct cvmx_agl_gmx_tx_int_reg_s cn63xxp1;
2794        struct cvmx_agl_gmx_tx_int_reg_s cn66xx;
2795        struct cvmx_agl_gmx_tx_int_reg_s cn68xx;
2796        struct cvmx_agl_gmx_tx_int_reg_s cn68xxp1;
2797        struct cvmx_agl_gmx_tx_int_reg_cn70xx {
2798                u64 reserved_21_63 : 43;
2799                u64 ptp_lost : 1;
2800                u64 reserved_17_19 : 3;
2801                u64 late_col : 1;
2802                u64 reserved_13_15 : 3;
2803                u64 xsdef : 1;
2804                u64 reserved_9_11 : 3;
2805                u64 xscol : 1;
2806                u64 reserved_3_7 : 5;
2807                u64 undflw : 1;
2808                u64 reserved_1_1 : 1;
2809                u64 pko_nxa : 1;
2810        } cn70xx;
2811        struct cvmx_agl_gmx_tx_int_reg_cn70xx cn70xxp1;
2812};
2813
2814typedef union cvmx_agl_gmx_tx_int_reg cvmx_agl_gmx_tx_int_reg_t;
2815
2816/**
2817 * cvmx_agl_gmx_tx_jam
2818 *
2819 * AGL_GMX_TX_JAM = Packet TX Jam Pattern
2820 *
2821 *
2822 * Notes:
2823 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
2824 *
2825 */
2826union cvmx_agl_gmx_tx_jam {
2827        u64 u64;
2828        struct cvmx_agl_gmx_tx_jam_s {
2829                u64 reserved_8_63 : 56;
2830                u64 jam : 8;
2831        } s;
2832        struct cvmx_agl_gmx_tx_jam_s cn52xx;
2833        struct cvmx_agl_gmx_tx_jam_s cn52xxp1;
2834        struct cvmx_agl_gmx_tx_jam_s cn56xx;
2835        struct cvmx_agl_gmx_tx_jam_s cn56xxp1;
2836        struct cvmx_agl_gmx_tx_jam_s cn61xx;
2837        struct cvmx_agl_gmx_tx_jam_s cn63xx;
2838        struct cvmx_agl_gmx_tx_jam_s cn63xxp1;
2839        struct cvmx_agl_gmx_tx_jam_s cn66xx;
2840        struct cvmx_agl_gmx_tx_jam_s cn68xx;
2841        struct cvmx_agl_gmx_tx_jam_s cn68xxp1;
2842        struct cvmx_agl_gmx_tx_jam_s cn70xx;
2843        struct cvmx_agl_gmx_tx_jam_s cn70xxp1;
2844};
2845
2846typedef union cvmx_agl_gmx_tx_jam cvmx_agl_gmx_tx_jam_t;
2847
2848/**
2849 * cvmx_agl_gmx_tx_lfsr
2850 *
2851 * AGL_GMX_TX_LFSR = LFSR used to implement truncated binary exponential backoff
2852 *
2853 *
2854 * Notes:
2855 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
2856 *
2857 */
2858union cvmx_agl_gmx_tx_lfsr {
2859        u64 u64;
2860        struct cvmx_agl_gmx_tx_lfsr_s {
2861                u64 reserved_16_63 : 48;
2862                u64 lfsr : 16;
2863        } s;
2864        struct cvmx_agl_gmx_tx_lfsr_s cn52xx;
2865        struct cvmx_agl_gmx_tx_lfsr_s cn52xxp1;
2866        struct cvmx_agl_gmx_tx_lfsr_s cn56xx;
2867        struct cvmx_agl_gmx_tx_lfsr_s cn56xxp1;
2868        struct cvmx_agl_gmx_tx_lfsr_s cn61xx;
2869        struct cvmx_agl_gmx_tx_lfsr_s cn63xx;
2870        struct cvmx_agl_gmx_tx_lfsr_s cn63xxp1;
2871        struct cvmx_agl_gmx_tx_lfsr_s cn66xx;
2872        struct cvmx_agl_gmx_tx_lfsr_s cn68xx;
2873        struct cvmx_agl_gmx_tx_lfsr_s cn68xxp1;
2874        struct cvmx_agl_gmx_tx_lfsr_s cn70xx;
2875        struct cvmx_agl_gmx_tx_lfsr_s cn70xxp1;
2876};
2877
2878typedef union cvmx_agl_gmx_tx_lfsr cvmx_agl_gmx_tx_lfsr_t;
2879
2880/**
2881 * cvmx_agl_gmx_tx_ovr_bp
2882 *
2883 * AGL_GMX_TX_OVR_BP = Packet TX Override BackPressure
2884 *
2885 *
2886 * Notes:
2887 * IGN_FULL[0], BP[0], EN[0] will be reset when MIX0_CTL[RESET] is set to 1.
2888 * IGN_FULL[1], BP[1], EN[1] will be reset when MIX1_CTL[RESET] is set to 1.
2889 */
2890union cvmx_agl_gmx_tx_ovr_bp {
2891        u64 u64;
2892        struct cvmx_agl_gmx_tx_ovr_bp_s {
2893                u64 reserved_10_63 : 54;
2894                u64 en : 2;
2895                u64 reserved_6_7 : 2;
2896                u64 bp : 2;
2897                u64 reserved_2_3 : 2;
2898                u64 ign_full : 2;
2899        } s;
2900        struct cvmx_agl_gmx_tx_ovr_bp_s cn52xx;
2901        struct cvmx_agl_gmx_tx_ovr_bp_s cn52xxp1;
2902        struct cvmx_agl_gmx_tx_ovr_bp_cn56xx {
2903                u64 reserved_9_63 : 55;
2904                u64 en : 1;
2905                u64 reserved_5_7 : 3;
2906                u64 bp : 1;
2907                u64 reserved_1_3 : 3;
2908                u64 ign_full : 1;
2909        } cn56xx;
2910        struct cvmx_agl_gmx_tx_ovr_bp_cn56xx cn56xxp1;
2911        struct cvmx_agl_gmx_tx_ovr_bp_s cn61xx;
2912        struct cvmx_agl_gmx_tx_ovr_bp_s cn63xx;
2913        struct cvmx_agl_gmx_tx_ovr_bp_s cn63xxp1;
2914        struct cvmx_agl_gmx_tx_ovr_bp_s cn66xx;
2915        struct cvmx_agl_gmx_tx_ovr_bp_s cn68xx;
2916        struct cvmx_agl_gmx_tx_ovr_bp_s cn68xxp1;
2917        struct cvmx_agl_gmx_tx_ovr_bp_cn56xx cn70xx;
2918        struct cvmx_agl_gmx_tx_ovr_bp_cn56xx cn70xxp1;
2919};
2920
2921typedef union cvmx_agl_gmx_tx_ovr_bp cvmx_agl_gmx_tx_ovr_bp_t;
2922
2923/**
2924 * cvmx_agl_gmx_tx_pause_pkt_dmac
2925 *
2926 * AGL_GMX_TX_PAUSE_PKT_DMAC = Packet TX Pause Packet DMAC field
2927 *
2928 *
2929 * Notes:
2930 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
2931 *
2932 */
2933union cvmx_agl_gmx_tx_pause_pkt_dmac {
2934        u64 u64;
2935        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s {
2936                u64 reserved_48_63 : 16;
2937                u64 dmac : 48;
2938        } s;
2939        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn52xx;
2940        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn52xxp1;
2941        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn56xx;
2942        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn56xxp1;
2943        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn61xx;
2944        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn63xx;
2945        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn63xxp1;
2946        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn66xx;
2947        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn68xx;
2948        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn68xxp1;
2949        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn70xx;
2950        struct cvmx_agl_gmx_tx_pause_pkt_dmac_s cn70xxp1;
2951};
2952
2953typedef union cvmx_agl_gmx_tx_pause_pkt_dmac cvmx_agl_gmx_tx_pause_pkt_dmac_t;
2954
2955/**
2956 * cvmx_agl_gmx_tx_pause_pkt_type
2957 *
2958 * AGL_GMX_TX_PAUSE_PKT_TYPE = Packet TX Pause Packet TYPE field
2959 *
2960 *
2961 * Notes:
2962 * Additionally reset when both MIX0/1_CTL[RESET] are set to 1.
2963 *
2964 */
2965union cvmx_agl_gmx_tx_pause_pkt_type {
2966        u64 u64;
2967        struct cvmx_agl_gmx_tx_pause_pkt_type_s {
2968                u64 reserved_16_63 : 48;
2969                u64 type : 16;
2970        } s;
2971        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn52xx;
2972        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn52xxp1;
2973        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn56xx;
2974        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn56xxp1;
2975        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn61xx;
2976        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn63xx;
2977        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn63xxp1;
2978        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn66xx;
2979        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn68xx;
2980        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn68xxp1;
2981        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn70xx;
2982        struct cvmx_agl_gmx_tx_pause_pkt_type_s cn70xxp1;
2983};
2984
2985typedef union cvmx_agl_gmx_tx_pause_pkt_type cvmx_agl_gmx_tx_pause_pkt_type_t;
2986
2987/**
2988 * cvmx_agl_gmx_wol_ctl
2989 */
2990union cvmx_agl_gmx_wol_ctl {
2991        u64 u64;
2992        struct cvmx_agl_gmx_wol_ctl_s {
2993                u64 reserved_33_63 : 31;
2994                u64 magic_en : 1;
2995                u64 reserved_17_31 : 15;
2996                u64 direct_en : 1;
2997                u64 reserved_1_15 : 15;
2998                u64 en : 1;
2999        } s;
3000        struct cvmx_agl_gmx_wol_ctl_s cn70xx;
3001        struct cvmx_agl_gmx_wol_ctl_s cn70xxp1;
3002};
3003
3004typedef union cvmx_agl_gmx_wol_ctl cvmx_agl_gmx_wol_ctl_t;
3005
3006/**
3007 * cvmx_agl_prt#_ctl
3008 *
3009 * AGL_PRT_CTL = AGL Port Control
3010 *
3011 *
3012 * Notes:
3013 * The RGMII timing specification requires that devices transmit clock and
3014 * data synchronously. The specification requires external sources (namely
3015 * the PC board trace routes) to introduce the appropriate 1.5 to 2.0 ns of
3016 * delay.
3017 *
3018 * To eliminate the need for the PC board delays, the MIX RGMII interface
3019 * has optional onboard DLL's for both transmit and receive. For correct
3020 * operation, at most one of the transmitter, board, or receiver involved
3021 * in an RGMII link should introduce delay. By default/reset,
3022 * the MIX RGMII receivers delay the received clock, and the MIX
3023 * RGMII transmitters do not delay the transmitted clock. Whether this
3024 * default works as-is with a given link partner depends on the behavior
3025 * of the link partner and the PC board.
3026 *
3027 * These are the possible modes of MIX RGMII receive operation:
3028 *  o AGL_PRTx_CTL[CLKRX_BYP] = 0 (reset value) - The OCTEON MIX RGMII
3029 *    receive interface introduces clock delay using its internal DLL.
3030 *    This mode is appropriate if neither the remote
3031 *    transmitter nor the PC board delays the clock.
3032 *  o AGL_PRTx_CTL[CLKRX_BYP] = 1, [CLKRX_SET] = 0x0 - The OCTEON MIX
3033 *    RGMII receive interface introduces no clock delay. This mode
3034 *    is appropriate if either the remote transmitter or the PC board
3035 *    delays the clock.
3036 *
3037 * These are the possible modes of MIX RGMII transmit operation:
3038 *  o AGL_PRTx_CTL[CLKTX_BYP] = 1, [CLKTX_SET] = 0x0 (reset value) -
3039 *    The OCTEON MIX RGMII transmit interface introduces no clock
3040 *    delay. This mode is appropriate is either the remote receiver
3041 *    or the PC board delays the clock.
3042 *  o AGL_PRTx_CTL[CLKTX_BYP] = 0 - The OCTEON MIX RGMII transmit
3043 *    interface introduces clock delay using its internal DLL.
3044 *    This mode is appropriate if neither the remote receiver
3045 *    nor the PC board delays the clock.
3046 *
3047 * AGL_PRT0_CTL will be reset when MIX0_CTL[RESET] is set to 1.
3048 * AGL_PRT1_CTL will be reset when MIX1_CTL[RESET] is set to 1.
3049 */
3050union cvmx_agl_prtx_ctl {
3051        u64 u64;
3052        struct cvmx_agl_prtx_ctl_s {
3053                u64 drv_byp : 1;
3054                u64 reserved_62_62 : 1;
3055                u64 cmp_pctl : 6;
3056                u64 reserved_54_55 : 2;
3057                u64 cmp_nctl : 6;
3058                u64 reserved_46_47 : 2;
3059                u64 drv_pctl : 6;
3060                u64 reserved_38_39 : 2;
3061                u64 drv_nctl : 6;
3062                u64 reserved_31_31 : 1;
3063                u64 clk_set : 7;
3064                u64 clkrx_byp : 1;
3065                u64 clkrx_set : 7;
3066                u64 clktx_byp : 1;
3067                u64 clktx_set : 7;
3068                u64 refclk_sel : 2;
3069                u64 reserved_5_5 : 1;
3070                u64 dllrst : 1;
3071                u64 comp : 1;
3072                u64 enable : 1;
3073                u64 clkrst : 1;
3074                u64 mode : 1;
3075        } s;
3076        struct cvmx_agl_prtx_ctl_cn61xx {
3077                u64 drv_byp : 1;
3078                u64 reserved_62_62 : 1;
3079                u64 cmp_pctl : 6;
3080                u64 reserved_54_55 : 2;
3081                u64 cmp_nctl : 6;
3082                u64 reserved_46_47 : 2;
3083                u64 drv_pctl : 6;
3084                u64 reserved_38_39 : 2;
3085                u64 drv_nctl : 6;
3086                u64 reserved_29_31 : 3;
3087                u64 clk_set : 5;
3088                u64 clkrx_byp : 1;
3089                u64 reserved_21_22 : 2;
3090                u64 clkrx_set : 5;
3091                u64 clktx_byp : 1;
3092                u64 reserved_13_14 : 2;
3093                u64 clktx_set : 5;
3094                u64 reserved_5_7 : 3;
3095                u64 dllrst : 1;
3096                u64 comp : 1;
3097                u64 enable : 1;
3098                u64 clkrst : 1;
3099                u64 mode : 1;
3100        } cn61xx;
3101        struct cvmx_agl_prtx_ctl_cn61xx cn63xx;
3102        struct cvmx_agl_prtx_ctl_cn61xx cn63xxp1;
3103        struct cvmx_agl_prtx_ctl_cn61xx cn66xx;
3104        struct cvmx_agl_prtx_ctl_cn61xx cn68xx;
3105        struct cvmx_agl_prtx_ctl_cn61xx cn68xxp1;
3106        struct cvmx_agl_prtx_ctl_cn70xx {
3107                u64 drv_byp : 1;
3108                u64 reserved_61_62 : 2;
3109                u64 cmp_pctl : 5;
3110                u64 reserved_53_55 : 3;
3111                u64 cmp_nctl : 5;
3112                u64 reserved_45_47 : 3;
3113                u64 drv_pctl : 5;
3114                u64 reserved_37_39 : 3;
3115                u64 drv_nctl : 5;
3116                u64 reserved_31_31 : 1;
3117                u64 clk_set : 7;
3118                u64 clkrx_byp : 1;
3119                u64 clkrx_set : 7;
3120                u64 clktx_byp : 1;
3121                u64 clktx_set : 7;
3122                u64 refclk_sel : 2;
3123                u64 reserved_5_5 : 1;
3124                u64 dllrst : 1;
3125                u64 comp : 1;
3126                u64 enable : 1;
3127                u64 clkrst : 1;
3128                u64 mode : 1;
3129        } cn70xx;
3130        struct cvmx_agl_prtx_ctl_cn70xx cn70xxp1;
3131};
3132
3133typedef union cvmx_agl_prtx_ctl cvmx_agl_prtx_ctl_t;
3134
3135#endif
3136