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