blob: 2558e7b2fdf880a3b18feedcded0690bf5622494 [file] [log] [blame]
Aaron Williams6684c1b2020-12-11 17:05:52 +01001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (C) 2020 Marvell International Ltd.
4 */
5
6#ifndef __CVMX_SRIOMAINTX_DEFS_H__
7#define __CVMX_SRIOMAINTX_DEFS_H__
8
9static inline u64 CVMX_SRIOMAINTX_PORT_0_CTL2(unsigned long offset)
10{
11 switch (cvmx_get_octeon_family()) {
12 case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
13 return 0x0000010000000154ull + (offset) * 0x100000000ull;
14 case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
15 return 0x0000000000000154ull;
16 case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
17 return 0x0000000000000154ull + (offset) * 0x100000000ull;
18 }
19 return 0x0000010000000154ull + (offset) * 0x100000000ull;
20}
21
22/**
23 * cvmx_sriomaint#_port_0_ctl2
24 *
25 * These registers are accessed when a local processor or an external
26 * device wishes to examine the port baudrate information. The automatic
27 * baud rate feature is not available on this device. The SUP_* and ENB_*
28 * fields are set directly by the SRIO()_STATUS_REG[SPD] bits as a
29 * reference but otherwise have no effect.
30 *
31 * WARNING!! Writes to this register will reinitialize the SRIO link.
32 */
33union cvmx_sriomaintx_port_0_ctl2 {
34 u32 u32;
35 struct cvmx_sriomaintx_port_0_ctl2_s {
36 u32 sel_baud : 4;
37 u32 baud_sup : 1;
38 u32 baud_enb : 1;
39 u32 sup_125g : 1;
40 u32 enb_125g : 1;
41 u32 sup_250g : 1;
42 u32 enb_250g : 1;
43 u32 sup_312g : 1;
44 u32 enb_312g : 1;
45 u32 sub_500g : 1;
46 u32 enb_500g : 1;
47 u32 sup_625g : 1;
48 u32 enb_625g : 1;
49 u32 reserved_2_15 : 14;
50 u32 tx_emph : 1;
51 u32 emph_en : 1;
52 } s;
53 struct cvmx_sriomaintx_port_0_ctl2_s cn63xx;
54 struct cvmx_sriomaintx_port_0_ctl2_s cn63xxp1;
55 struct cvmx_sriomaintx_port_0_ctl2_s cn66xx;
56 struct cvmx_sriomaintx_port_0_ctl2_s cnf75xx;
57};
58
59typedef union cvmx_sriomaintx_port_0_ctl2 cvmx_sriomaintx_port_0_ctl2_t;
60
61#endif