1176772Sraj/* SPDX-License-Identifier: GPL-2.0 */
2176772Sraj/*
3176772Sraj * Copyright (C) 2018-2022 Marvell International Ltd.
4176772Sraj *
5176772Sraj * Configuration and status register (CSR) type definitions for
6176772Sraj * Octeon lbk.
7176772Sraj */
8176772Sraj
9176772Sraj#ifndef __CVMX_LBK_DEFS_H__
10176772Sraj#define __CVMX_LBK_DEFS_H__
11176772Sraj
12176772Sraj#define CVMX_LBK_BIST_RESULT	   (0x0001180012000020ull)
13176772Sraj#define CVMX_LBK_CHX_PKIND(offset) (0x0001180012000200ull + ((offset) & 63) * 8)
14176772Sraj#define CVMX_LBK_CLK_GATE_CTL	   (0x0001180012000008ull)
15176772Sraj#define CVMX_LBK_DAT_ERR_INFO	   (0x0001180012000050ull)
16176772Sraj#define CVMX_LBK_ECC_CFG	   (0x0001180012000060ull)
17176772Sraj#define CVMX_LBK_INT		   (0x0001180012000040ull)
18176772Sraj#define CVMX_LBK_SFT_RST	   (0x0001180012000000ull)
19176772Sraj
20176772Sraj/**
21176772Sraj * cvmx_lbk_bist_result
22176772Sraj *
23176772Sraj * This register provides access to the internal BIST results. Each bit is the
24176772Sraj * BIST result of an individual memory (per bit, 0 = pass and 1 = fail).
25176772Sraj */
26176772Srajunion cvmx_lbk_bist_result {
27176772Sraj	u64 u64;
28176772Sraj	struct cvmx_lbk_bist_result_s {
29176772Sraj		u64 reserved_1_63 : 63;
30176772Sraj		u64 dat : 1;
31176772Sraj	} s;
32176772Sraj	struct cvmx_lbk_bist_result_s cn73xx;
33176772Sraj	struct cvmx_lbk_bist_result_s cn78xx;
34176772Sraj	struct cvmx_lbk_bist_result_s cn78xxp1;
35176772Sraj	struct cvmx_lbk_bist_result_s cnf75xx;
36176772Sraj};
37176772Sraj
38176772Srajtypedef union cvmx_lbk_bist_result cvmx_lbk_bist_result_t;
39176772Sraj
40176772Sraj/**
41176772Sraj * cvmx_lbk_ch#_pkind
42176772Sraj */
43176772Srajunion cvmx_lbk_chx_pkind {
44176772Sraj	u64 u64;
45176772Sraj	struct cvmx_lbk_chx_pkind_s {
46176772Sraj		u64 reserved_6_63 : 58;
47176772Sraj		u64 pkind : 6;
48176772Sraj	} s;
49176772Sraj	struct cvmx_lbk_chx_pkind_s cn73xx;
50176772Sraj	struct cvmx_lbk_chx_pkind_s cn78xx;
51176772Sraj	struct cvmx_lbk_chx_pkind_s cn78xxp1;
52176772Sraj	struct cvmx_lbk_chx_pkind_s cnf75xx;
53176772Sraj};
54176772Sraj
55176772Srajtypedef union cvmx_lbk_chx_pkind cvmx_lbk_chx_pkind_t;
56176772Sraj
57176772Sraj/**
58176772Sraj * cvmx_lbk_clk_gate_ctl
59176772Sraj *
60176772Sraj * This register is for diagnostic use only.
61176772Sraj *
62176772Sraj */
63176772Srajunion cvmx_lbk_clk_gate_ctl {
64176772Sraj	u64 u64;
65176772Sraj	struct cvmx_lbk_clk_gate_ctl_s {
66176772Sraj		u64 reserved_1_63 : 63;
67176772Sraj		u64 dis : 1;
68176772Sraj	} s;
69176772Sraj	struct cvmx_lbk_clk_gate_ctl_s cn73xx;
70176772Sraj	struct cvmx_lbk_clk_gate_ctl_s cn78xx;
71176772Sraj	struct cvmx_lbk_clk_gate_ctl_s cn78xxp1;
72176772Sraj	struct cvmx_lbk_clk_gate_ctl_s cnf75xx;
73176772Sraj};
74176772Sraj
75176772Srajtypedef union cvmx_lbk_clk_gate_ctl cvmx_lbk_clk_gate_ctl_t;
76176772Sraj
77176772Sraj/**
78176772Sraj * cvmx_lbk_dat_err_info
79176772Sraj */
80176772Srajunion cvmx_lbk_dat_err_info {
81176772Sraj	u64 u64;
82176772Sraj	struct cvmx_lbk_dat_err_info_s {
83176772Sraj		u64 reserved_58_63 : 6;
84176772Sraj		u64 dbe_ecc_out : 9;
85176772Sraj		u64 dbe_synd : 9;
86176772Sraj		u64 dbe_addr : 8;
87176772Sraj		u64 reserved_26_31 : 6;
88176772Sraj		u64 sbe_ecc_out : 9;
89176772Sraj		u64 sbe_synd : 9;
90176772Sraj		u64 sbe_addr : 8;
91176772Sraj	} s;
92176772Sraj	struct cvmx_lbk_dat_err_info_s cn73xx;
93176772Sraj	struct cvmx_lbk_dat_err_info_s cn78xx;
94176772Sraj	struct cvmx_lbk_dat_err_info_s cn78xxp1;
95176772Sraj	struct cvmx_lbk_dat_err_info_s cnf75xx;
96176772Sraj};
97176772Sraj
98176772Srajtypedef union cvmx_lbk_dat_err_info cvmx_lbk_dat_err_info_t;
99176772Sraj
100176772Sraj/**
101176772Sraj * cvmx_lbk_ecc_cfg
102176772Sraj */
103176772Srajunion cvmx_lbk_ecc_cfg {
104176772Sraj	u64 u64;
105176772Sraj	struct cvmx_lbk_ecc_cfg_s {
106176772Sraj		u64 reserved_3_63 : 61;
107176772Sraj		u64 dat_flip : 2;
108176772Sraj		u64 dat_cdis : 1;
109176772Sraj	} s;
110176772Sraj	struct cvmx_lbk_ecc_cfg_s cn73xx;
111176772Sraj	struct cvmx_lbk_ecc_cfg_s cn78xx;
112176772Sraj	struct cvmx_lbk_ecc_cfg_s cn78xxp1;
113176772Sraj	struct cvmx_lbk_ecc_cfg_s cnf75xx;
114176772Sraj};
115176772Sraj
116176772Srajtypedef union cvmx_lbk_ecc_cfg cvmx_lbk_ecc_cfg_t;
117176772Sraj
118176772Sraj/**
119176772Sraj * cvmx_lbk_int
120176772Sraj */
121176772Srajunion cvmx_lbk_int {
122176772Sraj	u64 u64;
123176772Sraj	struct cvmx_lbk_int_s {
124176772Sraj		u64 reserved_6_63 : 58;
125176772Sraj		u64 chan_oflow : 1;
126176772Sraj		u64 chan_uflow : 1;
127176772Sraj		u64 dat_oflow : 1;
128176772Sraj		u64 dat_uflow : 1;
129176772Sraj		u64 dat_dbe : 1;
130176772Sraj		u64 dat_sbe : 1;
131176772Sraj	} s;
132176772Sraj	struct cvmx_lbk_int_s cn73xx;
133176772Sraj	struct cvmx_lbk_int_s cn78xx;
134176772Sraj	struct cvmx_lbk_int_s cn78xxp1;
135176772Sraj	struct cvmx_lbk_int_s cnf75xx;
136176772Sraj};
137176772Sraj
138176772Srajtypedef union cvmx_lbk_int cvmx_lbk_int_t;
139176772Sraj
140176772Sraj/**
141176772Sraj * cvmx_lbk_sft_rst
142176772Sraj */
143176772Srajunion cvmx_lbk_sft_rst {
144176772Sraj	u64 u64;
145176772Sraj	struct cvmx_lbk_sft_rst_s {
146176772Sraj		u64 reserved_1_63 : 63;
147176772Sraj		u64 reset : 1;
148176772Sraj	} s;
149176772Sraj	struct cvmx_lbk_sft_rst_s cn73xx;
150176772Sraj	struct cvmx_lbk_sft_rst_s cn78xx;
151176772Sraj	struct cvmx_lbk_sft_rst_s cn78xxp1;
152176772Sraj	struct cvmx_lbk_sft_rst_s cnf75xx;
153176772Sraj};
154176772Sraj
155176772Srajtypedef union cvmx_lbk_sft_rst cvmx_lbk_sft_rst_t;
156176772Sraj
157176772Sraj#endif
158176772Sraj