cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cvmx-pcsx-defs.h (26539B)


      1/***********************license start***************
      2 * Author: Cavium Networks
      3 *
      4 * Contact: support@caviumnetworks.com
      5 * This file is part of the OCTEON SDK
      6 *
      7 * Copyright (C) 2003-2018 Cavium, Inc.
      8 *
      9 * This file is free software; you can redistribute it and/or modify
     10 * it under the terms of the GNU General Public License, Version 2, as
     11 * published by the Free Software Foundation.
     12 *
     13 * This file is distributed in the hope that it will be useful, but
     14 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
     15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
     16 * NONINFRINGEMENT.  See the GNU General Public License for more
     17 * details.
     18 *
     19 * You should have received a copy of the GNU General Public License
     20 * along with this file; if not, write to the Free Software
     21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
     22 * or visit http://www.gnu.org/licenses/.
     23 *
     24 * This file may also be available under a different license from Cavium.
     25 * Contact Cavium Networks for more information
     26 ***********************license end**************************************/
     27
     28#ifndef __CVMX_PCSX_DEFS_H__
     29#define __CVMX_PCSX_DEFS_H__
     30
     31static inline uint64_t CVMX_PCSX_ANX_ADV_REG(unsigned long offset, unsigned long block_id)
     32{
     33	switch (cvmx_get_octeon_family()) {
     34	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
     35		return CVMX_ADD_IO_SEG(0x00011800B0001010ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     36	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
     37	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
     38		return CVMX_ADD_IO_SEG(0x00011800B0001010ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     39	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
     40	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
     41	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
     42		return CVMX_ADD_IO_SEG(0x00011800B0001010ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     43	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
     44		return CVMX_ADD_IO_SEG(0x00011800B0001010ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
     45	}
     46	return CVMX_ADD_IO_SEG(0x00011800B0001010ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     47}
     48
     49static inline uint64_t CVMX_PCSX_ANX_EXT_ST_REG(unsigned long offset, unsigned long block_id)
     50{
     51	switch (cvmx_get_octeon_family()) {
     52	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
     53		return CVMX_ADD_IO_SEG(0x00011800B0001028ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     54	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
     55	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
     56		return CVMX_ADD_IO_SEG(0x00011800B0001028ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     57	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
     58	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
     59	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
     60		return CVMX_ADD_IO_SEG(0x00011800B0001028ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     61	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
     62		return CVMX_ADD_IO_SEG(0x00011800B0001028ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
     63	}
     64	return CVMX_ADD_IO_SEG(0x00011800B0001028ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     65}
     66
     67static inline uint64_t CVMX_PCSX_ANX_LP_ABIL_REG(unsigned long offset, unsigned long block_id)
     68{
     69	switch (cvmx_get_octeon_family()) {
     70	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
     71		return CVMX_ADD_IO_SEG(0x00011800B0001018ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     72	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
     73	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
     74		return CVMX_ADD_IO_SEG(0x00011800B0001018ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     75	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
     76	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
     77	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
     78		return CVMX_ADD_IO_SEG(0x00011800B0001018ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     79	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
     80		return CVMX_ADD_IO_SEG(0x00011800B0001018ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
     81	}
     82	return CVMX_ADD_IO_SEG(0x00011800B0001018ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     83}
     84
     85static inline uint64_t CVMX_PCSX_ANX_RESULTS_REG(unsigned long offset, unsigned long block_id)
     86{
     87	switch (cvmx_get_octeon_family()) {
     88	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
     89		return CVMX_ADD_IO_SEG(0x00011800B0001020ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     90	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
     91	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
     92		return CVMX_ADD_IO_SEG(0x00011800B0001020ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     93	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
     94	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
     95	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
     96		return CVMX_ADD_IO_SEG(0x00011800B0001020ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
     97	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
     98		return CVMX_ADD_IO_SEG(0x00011800B0001020ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
     99	}
    100	return CVMX_ADD_IO_SEG(0x00011800B0001020ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    101}
    102
    103static inline uint64_t CVMX_PCSX_INTX_EN_REG(unsigned long offset, unsigned long block_id)
    104{
    105	switch (cvmx_get_octeon_family()) {
    106	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    107		return CVMX_ADD_IO_SEG(0x00011800B0001088ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    108	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    109	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    110		return CVMX_ADD_IO_SEG(0x00011800B0001088ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    111	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    112	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    113	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    114		return CVMX_ADD_IO_SEG(0x00011800B0001088ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    115	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    116		return CVMX_ADD_IO_SEG(0x00011800B0001088ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    117	}
    118	return CVMX_ADD_IO_SEG(0x00011800B0001088ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    119}
    120
    121static inline uint64_t CVMX_PCSX_INTX_REG(unsigned long offset, unsigned long block_id)
    122{
    123	switch (cvmx_get_octeon_family()) {
    124	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    125		return CVMX_ADD_IO_SEG(0x00011800B0001080ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    126	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    127	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    128		return CVMX_ADD_IO_SEG(0x00011800B0001080ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    129	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    130	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    131	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    132		return CVMX_ADD_IO_SEG(0x00011800B0001080ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    133	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    134		return CVMX_ADD_IO_SEG(0x00011800B0001080ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    135	}
    136	return CVMX_ADD_IO_SEG(0x00011800B0001080ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    137}
    138
    139static inline uint64_t CVMX_PCSX_LINKX_TIMER_COUNT_REG(unsigned long offset, unsigned long block_id)
    140{
    141	switch (cvmx_get_octeon_family()) {
    142	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    143		return CVMX_ADD_IO_SEG(0x00011800B0001040ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    144	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    145	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    146		return CVMX_ADD_IO_SEG(0x00011800B0001040ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    147	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    148	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    149	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    150		return CVMX_ADD_IO_SEG(0x00011800B0001040ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    151	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    152		return CVMX_ADD_IO_SEG(0x00011800B0001040ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    153	}
    154	return CVMX_ADD_IO_SEG(0x00011800B0001040ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    155}
    156
    157static inline uint64_t CVMX_PCSX_LOG_ANLX_REG(unsigned long offset, unsigned long block_id)
    158{
    159	switch (cvmx_get_octeon_family()) {
    160	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    161		return CVMX_ADD_IO_SEG(0x00011800B0001090ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    162	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    163	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    164		return CVMX_ADD_IO_SEG(0x00011800B0001090ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    165	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    166	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    167	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    168		return CVMX_ADD_IO_SEG(0x00011800B0001090ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    169	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    170		return CVMX_ADD_IO_SEG(0x00011800B0001090ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    171	}
    172	return CVMX_ADD_IO_SEG(0x00011800B0001090ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    173}
    174
    175static inline uint64_t CVMX_PCSX_MISCX_CTL_REG(unsigned long offset, unsigned long block_id)
    176{
    177	switch (cvmx_get_octeon_family()) {
    178	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    179		return CVMX_ADD_IO_SEG(0x00011800B0001078ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    180	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    181	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    182		return CVMX_ADD_IO_SEG(0x00011800B0001078ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    183	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    184	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    185	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    186		return CVMX_ADD_IO_SEG(0x00011800B0001078ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    187	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    188		return CVMX_ADD_IO_SEG(0x00011800B0001078ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    189	}
    190	return CVMX_ADD_IO_SEG(0x00011800B0001078ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    191}
    192
    193static inline uint64_t CVMX_PCSX_MRX_CONTROL_REG(unsigned long offset, unsigned long block_id)
    194{
    195	switch (cvmx_get_octeon_family()) {
    196	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    197		return CVMX_ADD_IO_SEG(0x00011800B0001000ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    198	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    199	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    200		return CVMX_ADD_IO_SEG(0x00011800B0001000ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    201	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    202	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    203	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    204		return CVMX_ADD_IO_SEG(0x00011800B0001000ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    205	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    206		return CVMX_ADD_IO_SEG(0x00011800B0001000ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    207	}
    208	return CVMX_ADD_IO_SEG(0x00011800B0001000ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    209}
    210
    211static inline uint64_t CVMX_PCSX_MRX_STATUS_REG(unsigned long offset, unsigned long block_id)
    212{
    213	switch (cvmx_get_octeon_family()) {
    214	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    215		return CVMX_ADD_IO_SEG(0x00011800B0001008ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    216	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    217	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    218		return CVMX_ADD_IO_SEG(0x00011800B0001008ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    219	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    220	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    221	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    222		return CVMX_ADD_IO_SEG(0x00011800B0001008ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    223	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    224		return CVMX_ADD_IO_SEG(0x00011800B0001008ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    225	}
    226	return CVMX_ADD_IO_SEG(0x00011800B0001008ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    227}
    228
    229static inline uint64_t CVMX_PCSX_RXX_STATES_REG(unsigned long offset, unsigned long block_id)
    230{
    231	switch (cvmx_get_octeon_family()) {
    232	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    233		return CVMX_ADD_IO_SEG(0x00011800B0001058ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    234	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    235	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    236		return CVMX_ADD_IO_SEG(0x00011800B0001058ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    237	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    238	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    239	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    240		return CVMX_ADD_IO_SEG(0x00011800B0001058ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    241	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    242		return CVMX_ADD_IO_SEG(0x00011800B0001058ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    243	}
    244	return CVMX_ADD_IO_SEG(0x00011800B0001058ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    245}
    246
    247static inline uint64_t CVMX_PCSX_RXX_SYNC_REG(unsigned long offset, unsigned long block_id)
    248{
    249	switch (cvmx_get_octeon_family()) {
    250	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    251		return CVMX_ADD_IO_SEG(0x00011800B0001050ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    252	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    253	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    254		return CVMX_ADD_IO_SEG(0x00011800B0001050ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    255	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    256	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    257	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    258		return CVMX_ADD_IO_SEG(0x00011800B0001050ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    259	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    260		return CVMX_ADD_IO_SEG(0x00011800B0001050ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    261	}
    262	return CVMX_ADD_IO_SEG(0x00011800B0001050ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    263}
    264
    265static inline uint64_t CVMX_PCSX_SGMX_AN_ADV_REG(unsigned long offset, unsigned long block_id)
    266{
    267	switch (cvmx_get_octeon_family()) {
    268	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    269		return CVMX_ADD_IO_SEG(0x00011800B0001068ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    270	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    271	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    272		return CVMX_ADD_IO_SEG(0x00011800B0001068ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    273	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    274	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    275	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    276		return CVMX_ADD_IO_SEG(0x00011800B0001068ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    277	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    278		return CVMX_ADD_IO_SEG(0x00011800B0001068ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    279	}
    280	return CVMX_ADD_IO_SEG(0x00011800B0001068ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    281}
    282
    283static inline uint64_t CVMX_PCSX_SGMX_LP_ADV_REG(unsigned long offset, unsigned long block_id)
    284{
    285	switch (cvmx_get_octeon_family()) {
    286	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    287		return CVMX_ADD_IO_SEG(0x00011800B0001070ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    288	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    289	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    290		return CVMX_ADD_IO_SEG(0x00011800B0001070ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    291	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    292	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    293	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    294		return CVMX_ADD_IO_SEG(0x00011800B0001070ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    295	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    296		return CVMX_ADD_IO_SEG(0x00011800B0001070ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    297	}
    298	return CVMX_ADD_IO_SEG(0x00011800B0001070ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    299}
    300
    301static inline uint64_t CVMX_PCSX_TXX_STATES_REG(unsigned long offset, unsigned long block_id)
    302{
    303	switch (cvmx_get_octeon_family()) {
    304	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    305		return CVMX_ADD_IO_SEG(0x00011800B0001060ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    306	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    307	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    308		return CVMX_ADD_IO_SEG(0x00011800B0001060ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    309	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    310	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    311	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    312		return CVMX_ADD_IO_SEG(0x00011800B0001060ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    313	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    314		return CVMX_ADD_IO_SEG(0x00011800B0001060ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    315	}
    316	return CVMX_ADD_IO_SEG(0x00011800B0001060ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    317}
    318
    319static inline uint64_t CVMX_PCSX_TX_RXX_POLARITY_REG(unsigned long offset, unsigned long block_id)
    320{
    321	switch (cvmx_get_octeon_family()) {
    322	case OCTEON_CNF71XX & OCTEON_FAMILY_MASK:
    323		return CVMX_ADD_IO_SEG(0x00011800B0001048ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    324	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
    325	case OCTEON_CN52XX & OCTEON_FAMILY_MASK:
    326		return CVMX_ADD_IO_SEG(0x00011800B0001048ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    327	case OCTEON_CN56XX & OCTEON_FAMILY_MASK:
    328	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
    329	case OCTEON_CN61XX & OCTEON_FAMILY_MASK:
    330		return CVMX_ADD_IO_SEG(0x00011800B0001048ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    331	case OCTEON_CN68XX & OCTEON_FAMILY_MASK:
    332		return CVMX_ADD_IO_SEG(0x00011800B0001048ull) + ((offset) + (block_id) * 0x4000ull) * 1024;
    333	}
    334	return CVMX_ADD_IO_SEG(0x00011800B0001048ull) + ((offset) + (block_id) * 0x20000ull) * 1024;
    335}
    336
    337void __cvmx_interrupt_pcsx_intx_en_reg_enable(int index, int block);
    338
    339union cvmx_pcsx_anx_adv_reg {
    340	uint64_t u64;
    341	struct cvmx_pcsx_anx_adv_reg_s {
    342#ifdef __BIG_ENDIAN_BITFIELD
    343		uint64_t reserved_16_63:48;
    344		uint64_t np:1;
    345		uint64_t reserved_14_14:1;
    346		uint64_t rem_flt:2;
    347		uint64_t reserved_9_11:3;
    348		uint64_t pause:2;
    349		uint64_t hfd:1;
    350		uint64_t fd:1;
    351		uint64_t reserved_0_4:5;
    352#else
    353		uint64_t reserved_0_4:5;
    354		uint64_t fd:1;
    355		uint64_t hfd:1;
    356		uint64_t pause:2;
    357		uint64_t reserved_9_11:3;
    358		uint64_t rem_flt:2;
    359		uint64_t reserved_14_14:1;
    360		uint64_t np:1;
    361		uint64_t reserved_16_63:48;
    362#endif
    363	} s;
    364};
    365
    366union cvmx_pcsx_anx_ext_st_reg {
    367	uint64_t u64;
    368	struct cvmx_pcsx_anx_ext_st_reg_s {
    369#ifdef __BIG_ENDIAN_BITFIELD
    370		uint64_t reserved_16_63:48;
    371		uint64_t thou_xfd:1;
    372		uint64_t thou_xhd:1;
    373		uint64_t thou_tfd:1;
    374		uint64_t thou_thd:1;
    375		uint64_t reserved_0_11:12;
    376#else
    377		uint64_t reserved_0_11:12;
    378		uint64_t thou_thd:1;
    379		uint64_t thou_tfd:1;
    380		uint64_t thou_xhd:1;
    381		uint64_t thou_xfd:1;
    382		uint64_t reserved_16_63:48;
    383#endif
    384	} s;
    385};
    386
    387union cvmx_pcsx_anx_lp_abil_reg {
    388	uint64_t u64;
    389	struct cvmx_pcsx_anx_lp_abil_reg_s {
    390#ifdef __BIG_ENDIAN_BITFIELD
    391		uint64_t reserved_16_63:48;
    392		uint64_t np:1;
    393		uint64_t ack:1;
    394		uint64_t rem_flt:2;
    395		uint64_t reserved_9_11:3;
    396		uint64_t pause:2;
    397		uint64_t hfd:1;
    398		uint64_t fd:1;
    399		uint64_t reserved_0_4:5;
    400#else
    401		uint64_t reserved_0_4:5;
    402		uint64_t fd:1;
    403		uint64_t hfd:1;
    404		uint64_t pause:2;
    405		uint64_t reserved_9_11:3;
    406		uint64_t rem_flt:2;
    407		uint64_t ack:1;
    408		uint64_t np:1;
    409		uint64_t reserved_16_63:48;
    410#endif
    411	} s;
    412};
    413
    414union cvmx_pcsx_anx_results_reg {
    415	uint64_t u64;
    416	struct cvmx_pcsx_anx_results_reg_s {
    417#ifdef __BIG_ENDIAN_BITFIELD
    418		uint64_t reserved_7_63:57;
    419		uint64_t pause:2;
    420		uint64_t spd:2;
    421		uint64_t an_cpt:1;
    422		uint64_t dup:1;
    423		uint64_t link_ok:1;
    424#else
    425		uint64_t link_ok:1;
    426		uint64_t dup:1;
    427		uint64_t an_cpt:1;
    428		uint64_t spd:2;
    429		uint64_t pause:2;
    430		uint64_t reserved_7_63:57;
    431#endif
    432	} s;
    433};
    434
    435union cvmx_pcsx_intx_en_reg {
    436	uint64_t u64;
    437	struct cvmx_pcsx_intx_en_reg_s {
    438#ifdef __BIG_ENDIAN_BITFIELD
    439		uint64_t reserved_13_63:51;
    440		uint64_t dbg_sync_en:1;
    441		uint64_t dup:1;
    442		uint64_t sync_bad_en:1;
    443		uint64_t an_bad_en:1;
    444		uint64_t rxlock_en:1;
    445		uint64_t rxbad_en:1;
    446		uint64_t rxerr_en:1;
    447		uint64_t txbad_en:1;
    448		uint64_t txfifo_en:1;
    449		uint64_t txfifu_en:1;
    450		uint64_t an_err_en:1;
    451		uint64_t xmit_en:1;
    452		uint64_t lnkspd_en:1;
    453#else
    454		uint64_t lnkspd_en:1;
    455		uint64_t xmit_en:1;
    456		uint64_t an_err_en:1;
    457		uint64_t txfifu_en:1;
    458		uint64_t txfifo_en:1;
    459		uint64_t txbad_en:1;
    460		uint64_t rxerr_en:1;
    461		uint64_t rxbad_en:1;
    462		uint64_t rxlock_en:1;
    463		uint64_t an_bad_en:1;
    464		uint64_t sync_bad_en:1;
    465		uint64_t dup:1;
    466		uint64_t dbg_sync_en:1;
    467		uint64_t reserved_13_63:51;
    468#endif
    469	} s;
    470	struct cvmx_pcsx_intx_en_reg_cn52xx {
    471#ifdef __BIG_ENDIAN_BITFIELD
    472		uint64_t reserved_12_63:52;
    473		uint64_t dup:1;
    474		uint64_t sync_bad_en:1;
    475		uint64_t an_bad_en:1;
    476		uint64_t rxlock_en:1;
    477		uint64_t rxbad_en:1;
    478		uint64_t rxerr_en:1;
    479		uint64_t txbad_en:1;
    480		uint64_t txfifo_en:1;
    481		uint64_t txfifu_en:1;
    482		uint64_t an_err_en:1;
    483		uint64_t xmit_en:1;
    484		uint64_t lnkspd_en:1;
    485#else
    486		uint64_t lnkspd_en:1;
    487		uint64_t xmit_en:1;
    488		uint64_t an_err_en:1;
    489		uint64_t txfifu_en:1;
    490		uint64_t txfifo_en:1;
    491		uint64_t txbad_en:1;
    492		uint64_t rxerr_en:1;
    493		uint64_t rxbad_en:1;
    494		uint64_t rxlock_en:1;
    495		uint64_t an_bad_en:1;
    496		uint64_t sync_bad_en:1;
    497		uint64_t dup:1;
    498		uint64_t reserved_12_63:52;
    499#endif
    500	} cn52xx;
    501};
    502
    503union cvmx_pcsx_intx_reg {
    504	uint64_t u64;
    505	struct cvmx_pcsx_intx_reg_s {
    506#ifdef __BIG_ENDIAN_BITFIELD
    507		uint64_t reserved_13_63:51;
    508		uint64_t dbg_sync:1;
    509		uint64_t dup:1;
    510		uint64_t sync_bad:1;
    511		uint64_t an_bad:1;
    512		uint64_t rxlock:1;
    513		uint64_t rxbad:1;
    514		uint64_t rxerr:1;
    515		uint64_t txbad:1;
    516		uint64_t txfifo:1;
    517		uint64_t txfifu:1;
    518		uint64_t an_err:1;
    519		uint64_t xmit:1;
    520		uint64_t lnkspd:1;
    521#else
    522		uint64_t lnkspd:1;
    523		uint64_t xmit:1;
    524		uint64_t an_err:1;
    525		uint64_t txfifu:1;
    526		uint64_t txfifo:1;
    527		uint64_t txbad:1;
    528		uint64_t rxerr:1;
    529		uint64_t rxbad:1;
    530		uint64_t rxlock:1;
    531		uint64_t an_bad:1;
    532		uint64_t sync_bad:1;
    533		uint64_t dup:1;
    534		uint64_t dbg_sync:1;
    535		uint64_t reserved_13_63:51;
    536#endif
    537	} s;
    538	struct cvmx_pcsx_intx_reg_cn52xx {
    539#ifdef __BIG_ENDIAN_BITFIELD
    540		uint64_t reserved_12_63:52;
    541		uint64_t dup:1;
    542		uint64_t sync_bad:1;
    543		uint64_t an_bad:1;
    544		uint64_t rxlock:1;
    545		uint64_t rxbad:1;
    546		uint64_t rxerr:1;
    547		uint64_t txbad:1;
    548		uint64_t txfifo:1;
    549		uint64_t txfifu:1;
    550		uint64_t an_err:1;
    551		uint64_t xmit:1;
    552		uint64_t lnkspd:1;
    553#else
    554		uint64_t lnkspd:1;
    555		uint64_t xmit:1;
    556		uint64_t an_err:1;
    557		uint64_t txfifu:1;
    558		uint64_t txfifo:1;
    559		uint64_t txbad:1;
    560		uint64_t rxerr:1;
    561		uint64_t rxbad:1;
    562		uint64_t rxlock:1;
    563		uint64_t an_bad:1;
    564		uint64_t sync_bad:1;
    565		uint64_t dup:1;
    566		uint64_t reserved_12_63:52;
    567#endif
    568	} cn52xx;
    569};
    570
    571union cvmx_pcsx_linkx_timer_count_reg {
    572	uint64_t u64;
    573	struct cvmx_pcsx_linkx_timer_count_reg_s {
    574#ifdef __BIG_ENDIAN_BITFIELD
    575		uint64_t reserved_16_63:48;
    576		uint64_t count:16;
    577#else
    578		uint64_t count:16;
    579		uint64_t reserved_16_63:48;
    580#endif
    581	} s;
    582};
    583
    584union cvmx_pcsx_log_anlx_reg {
    585	uint64_t u64;
    586	struct cvmx_pcsx_log_anlx_reg_s {
    587#ifdef __BIG_ENDIAN_BITFIELD
    588		uint64_t reserved_4_63:60;
    589		uint64_t lafifovfl:1;
    590		uint64_t la_en:1;
    591		uint64_t pkt_sz:2;
    592#else
    593		uint64_t pkt_sz:2;
    594		uint64_t la_en:1;
    595		uint64_t lafifovfl:1;
    596		uint64_t reserved_4_63:60;
    597#endif
    598	} s;
    599};
    600
    601union cvmx_pcsx_miscx_ctl_reg {
    602	uint64_t u64;
    603	struct cvmx_pcsx_miscx_ctl_reg_s {
    604#ifdef __BIG_ENDIAN_BITFIELD
    605		uint64_t reserved_13_63:51;
    606		uint64_t sgmii:1;
    607		uint64_t gmxeno:1;
    608		uint64_t loopbck2:1;
    609		uint64_t mac_phy:1;
    610		uint64_t mode:1;
    611		uint64_t an_ovrd:1;
    612		uint64_t samp_pt:7;
    613#else
    614		uint64_t samp_pt:7;
    615		uint64_t an_ovrd:1;
    616		uint64_t mode:1;
    617		uint64_t mac_phy:1;
    618		uint64_t loopbck2:1;
    619		uint64_t gmxeno:1;
    620		uint64_t sgmii:1;
    621		uint64_t reserved_13_63:51;
    622#endif
    623	} s;
    624};
    625
    626union cvmx_pcsx_mrx_control_reg {
    627	uint64_t u64;
    628	struct cvmx_pcsx_mrx_control_reg_s {
    629#ifdef __BIG_ENDIAN_BITFIELD
    630		uint64_t reserved_16_63:48;
    631		uint64_t reset:1;
    632		uint64_t loopbck1:1;
    633		uint64_t spdlsb:1;
    634		uint64_t an_en:1;
    635		uint64_t pwr_dn:1;
    636		uint64_t reserved_10_10:1;
    637		uint64_t rst_an:1;
    638		uint64_t dup:1;
    639		uint64_t coltst:1;
    640		uint64_t spdmsb:1;
    641		uint64_t uni:1;
    642		uint64_t reserved_0_4:5;
    643#else
    644		uint64_t reserved_0_4:5;
    645		uint64_t uni:1;
    646		uint64_t spdmsb:1;
    647		uint64_t coltst:1;
    648		uint64_t dup:1;
    649		uint64_t rst_an:1;
    650		uint64_t reserved_10_10:1;
    651		uint64_t pwr_dn:1;
    652		uint64_t an_en:1;
    653		uint64_t spdlsb:1;
    654		uint64_t loopbck1:1;
    655		uint64_t reset:1;
    656		uint64_t reserved_16_63:48;
    657#endif
    658	} s;
    659};
    660
    661union cvmx_pcsx_mrx_status_reg {
    662	uint64_t u64;
    663	struct cvmx_pcsx_mrx_status_reg_s {
    664#ifdef __BIG_ENDIAN_BITFIELD
    665		uint64_t reserved_16_63:48;
    666		uint64_t hun_t4:1;
    667		uint64_t hun_xfd:1;
    668		uint64_t hun_xhd:1;
    669		uint64_t ten_fd:1;
    670		uint64_t ten_hd:1;
    671		uint64_t hun_t2fd:1;
    672		uint64_t hun_t2hd:1;
    673		uint64_t ext_st:1;
    674		uint64_t reserved_7_7:1;
    675		uint64_t prb_sup:1;
    676		uint64_t an_cpt:1;
    677		uint64_t rm_flt:1;
    678		uint64_t an_abil:1;
    679		uint64_t lnk_st:1;
    680		uint64_t reserved_1_1:1;
    681		uint64_t extnd:1;
    682#else
    683		uint64_t extnd:1;
    684		uint64_t reserved_1_1:1;
    685		uint64_t lnk_st:1;
    686		uint64_t an_abil:1;
    687		uint64_t rm_flt:1;
    688		uint64_t an_cpt:1;
    689		uint64_t prb_sup:1;
    690		uint64_t reserved_7_7:1;
    691		uint64_t ext_st:1;
    692		uint64_t hun_t2hd:1;
    693		uint64_t hun_t2fd:1;
    694		uint64_t ten_hd:1;
    695		uint64_t ten_fd:1;
    696		uint64_t hun_xhd:1;
    697		uint64_t hun_xfd:1;
    698		uint64_t hun_t4:1;
    699		uint64_t reserved_16_63:48;
    700#endif
    701	} s;
    702};
    703
    704union cvmx_pcsx_rxx_states_reg {
    705	uint64_t u64;
    706	struct cvmx_pcsx_rxx_states_reg_s {
    707#ifdef __BIG_ENDIAN_BITFIELD
    708		uint64_t reserved_16_63:48;
    709		uint64_t rx_bad:1;
    710		uint64_t rx_st:5;
    711		uint64_t sync_bad:1;
    712		uint64_t sync:4;
    713		uint64_t an_bad:1;
    714		uint64_t an_st:4;
    715#else
    716		uint64_t an_st:4;
    717		uint64_t an_bad:1;
    718		uint64_t sync:4;
    719		uint64_t sync_bad:1;
    720		uint64_t rx_st:5;
    721		uint64_t rx_bad:1;
    722		uint64_t reserved_16_63:48;
    723#endif
    724	} s;
    725};
    726
    727union cvmx_pcsx_rxx_sync_reg {
    728	uint64_t u64;
    729	struct cvmx_pcsx_rxx_sync_reg_s {
    730#ifdef __BIG_ENDIAN_BITFIELD
    731		uint64_t reserved_2_63:62;
    732		uint64_t sync:1;
    733		uint64_t bit_lock:1;
    734#else
    735		uint64_t bit_lock:1;
    736		uint64_t sync:1;
    737		uint64_t reserved_2_63:62;
    738#endif
    739	} s;
    740};
    741
    742union cvmx_pcsx_sgmx_an_adv_reg {
    743	uint64_t u64;
    744	struct cvmx_pcsx_sgmx_an_adv_reg_s {
    745#ifdef __BIG_ENDIAN_BITFIELD
    746		uint64_t reserved_16_63:48;
    747		uint64_t link:1;
    748		uint64_t ack:1;
    749		uint64_t reserved_13_13:1;
    750		uint64_t dup:1;
    751		uint64_t speed:2;
    752		uint64_t reserved_1_9:9;
    753		uint64_t one:1;
    754#else
    755		uint64_t one:1;
    756		uint64_t reserved_1_9:9;
    757		uint64_t speed:2;
    758		uint64_t dup:1;
    759		uint64_t reserved_13_13:1;
    760		uint64_t ack:1;
    761		uint64_t link:1;
    762		uint64_t reserved_16_63:48;
    763#endif
    764	} s;
    765};
    766
    767union cvmx_pcsx_sgmx_lp_adv_reg {
    768	uint64_t u64;
    769	struct cvmx_pcsx_sgmx_lp_adv_reg_s {
    770#ifdef __BIG_ENDIAN_BITFIELD
    771		uint64_t reserved_16_63:48;
    772		uint64_t link:1;
    773		uint64_t reserved_13_14:2;
    774		uint64_t dup:1;
    775		uint64_t speed:2;
    776		uint64_t reserved_1_9:9;
    777		uint64_t one:1;
    778#else
    779		uint64_t one:1;
    780		uint64_t reserved_1_9:9;
    781		uint64_t speed:2;
    782		uint64_t dup:1;
    783		uint64_t reserved_13_14:2;
    784		uint64_t link:1;
    785		uint64_t reserved_16_63:48;
    786#endif
    787	} s;
    788};
    789
    790union cvmx_pcsx_txx_states_reg {
    791	uint64_t u64;
    792	struct cvmx_pcsx_txx_states_reg_s {
    793#ifdef __BIG_ENDIAN_BITFIELD
    794		uint64_t reserved_7_63:57;
    795		uint64_t xmit:2;
    796		uint64_t tx_bad:1;
    797		uint64_t ord_st:4;
    798#else
    799		uint64_t ord_st:4;
    800		uint64_t tx_bad:1;
    801		uint64_t xmit:2;
    802		uint64_t reserved_7_63:57;
    803#endif
    804	} s;
    805};
    806
    807union cvmx_pcsx_tx_rxx_polarity_reg {
    808	uint64_t u64;
    809	struct cvmx_pcsx_tx_rxx_polarity_reg_s {
    810#ifdef __BIG_ENDIAN_BITFIELD
    811		uint64_t reserved_4_63:60;
    812		uint64_t rxovrd:1;
    813		uint64_t autorxpl:1;
    814		uint64_t rxplrt:1;
    815		uint64_t txplrt:1;
    816#else
    817		uint64_t txplrt:1;
    818		uint64_t rxplrt:1;
    819		uint64_t autorxpl:1;
    820		uint64_t rxovrd:1;
    821		uint64_t reserved_4_63:60;
    822#endif
    823	} s;
    824};
    825
    826#endif