summaryrefslogtreecommitdiff
path: root/arch/mips/mach-octeon/include/mach/cvmx-sriomaintx-defs.h
blob: 2558e7b2fdf880a3b18feedcded0690bf5622494 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2020 Marvell International Ltd.
 */

#ifndef __CVMX_SRIOMAINTX_DEFS_H__
#define __CVMX_SRIOMAINTX_DEFS_H__

static inline u64 CVMX_SRIOMAINTX_PORT_0_CTL2(unsigned long offset)
{
	switch (cvmx_get_octeon_family()) {
	case OCTEON_CNF75XX & OCTEON_FAMILY_MASK:
		return 0x0000010000000154ull + (offset) * 0x100000000ull;
	case OCTEON_CN66XX & OCTEON_FAMILY_MASK:
		return 0x0000000000000154ull;
	case OCTEON_CN63XX & OCTEON_FAMILY_MASK:
		return 0x0000000000000154ull + (offset) * 0x100000000ull;
	}
	return 0x0000010000000154ull + (offset) * 0x100000000ull;
}

/**
 * cvmx_sriomaint#_port_0_ctl2
 *
 * These registers are accessed when a local processor or an external
 * device wishes to examine the port baudrate information.  The automatic
 * baud rate feature is not available on this device. The SUP_* and ENB_*
 * fields are set directly by the SRIO()_STATUS_REG[SPD] bits as a
 * reference but otherwise have no effect.
 *
 * WARNING!!  Writes to this register will reinitialize the SRIO link.
 */
union cvmx_sriomaintx_port_0_ctl2 {
	u32 u32;
	struct cvmx_sriomaintx_port_0_ctl2_s {
		u32 sel_baud : 4;
		u32 baud_sup : 1;
		u32 baud_enb : 1;
		u32 sup_125g : 1;
		u32 enb_125g : 1;
		u32 sup_250g : 1;
		u32 enb_250g : 1;
		u32 sup_312g : 1;
		u32 enb_312g : 1;
		u32 sub_500g : 1;
		u32 enb_500g : 1;
		u32 sup_625g : 1;
		u32 enb_625g : 1;
		u32 reserved_2_15 : 14;
		u32 tx_emph : 1;
		u32 emph_en : 1;
	} s;
	struct cvmx_sriomaintx_port_0_ctl2_s cn63xx;
	struct cvmx_sriomaintx_port_0_ctl2_s cn63xxp1;
	struct cvmx_sriomaintx_port_0_ctl2_s cn66xx;
	struct cvmx_sriomaintx_port_0_ctl2_s cnf75xx;
};

typedef union cvmx_sriomaintx_port_0_ctl2 cvmx_sriomaintx_port_0_ctl2_t;

#endif