cvmx-rnm-defs.h revision 232812
1183270Sobrien/***********************license start***************
2183270Sobrien * Copyright (c) 2003-2012  Cavium Inc. (support@cavium.com). All rights
3183270Sobrien * reserved.
4183270Sobrien *
5183270Sobrien *
6183270Sobrien * Redistribution and use in source and binary forms, with or without
7183270Sobrien * modification, are permitted provided that the following conditions are
8183270Sobrien * met:
9183270Sobrien *
10183270Sobrien *   * Redistributions of source code must retain the above copyright
11183270Sobrien *     notice, this list of conditions and the following disclaimer.
12183270Sobrien *
13183270Sobrien *   * Redistributions in binary form must reproduce the above
14183270Sobrien *     copyright notice, this list of conditions and the following
15183270Sobrien *     disclaimer in the documentation and/or other materials provided
16183270Sobrien *     with the distribution.
17183270Sobrien
18183270Sobrien *   * Neither the name of Cavium Inc. nor the names of
19183270Sobrien *     its contributors may be used to endorse or promote products
20183270Sobrien *     derived from this software without specific prior written
21183270Sobrien *     permission.
22183270Sobrien
23183270Sobrien * This Software, including technical data, may be subject to U.S. export  control
24183270Sobrien * laws, including the U.S. Export Administration Act and its  associated
25183270Sobrien * regulations, and may be subject to export or import  regulations in other
26183270Sobrien * countries.
27183270Sobrien
28183270Sobrien * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29183270Sobrien * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30183270Sobrien * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31183270Sobrien * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32183270Sobrien * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33183270Sobrien * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34183270Sobrien * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35183270Sobrien * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36224778Srwatson * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37183270Sobrien * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38183270Sobrien ***********************license end**************************************/
39190529Sed
40183270Sobrien
41183270Sobrien/**
42219989Skib * cvmx-rnm-defs.h
43183270Sobrien *
44219989Skib * Configuration and status register (CSR) type definitions for
45220280Skib * Octeon rnm.
46183270Sobrien *
47183270Sobrien * This file is auto generated. Do not edit.
48183270Sobrien *
49183270Sobrien * <hr>$Revision$<hr>
50183270Sobrien *
51183270Sobrien */
52183270Sobrien#ifndef __CVMX_RNM_DEFS_H__
53183270Sobrien#define __CVMX_RNM_DEFS_H__
54183270Sobrien
55183270Sobrien#define CVMX_RNM_BIST_STATUS (CVMX_ADD_IO_SEG(0x0001180040000008ull))
56183270Sobrien#define CVMX_RNM_CTL_STATUS (CVMX_ADD_IO_SEG(0x0001180040000000ull))
57183270Sobrien#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
58183270Sobrien#define CVMX_RNM_EER_DBG CVMX_RNM_EER_DBG_FUNC()
59183270Sobrienstatic inline uint64_t CVMX_RNM_EER_DBG_FUNC(void)
60183273Sobrien{
61183273Sobrien	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
62219989Skib		cvmx_warn("CVMX_RNM_EER_DBG not supported on this chip\n");
63220280Skib	return CVMX_ADD_IO_SEG(0x0001180040000018ull);
64220280Skib}
65220280Skib#else
66183270Sobrien#define CVMX_RNM_EER_DBG (CVMX_ADD_IO_SEG(0x0001180040000018ull))
67183270Sobrien#endif
68183270Sobrien#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
69183270Sobrien#define CVMX_RNM_EER_KEY CVMX_RNM_EER_KEY_FUNC()
70183270Sobrienstatic inline uint64_t CVMX_RNM_EER_KEY_FUNC(void)
71183270Sobrien{
72183270Sobrien	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
73183270Sobrien		cvmx_warn("CVMX_RNM_EER_KEY not supported on this chip\n");
74183270Sobrien	return CVMX_ADD_IO_SEG(0x0001180040000010ull);
75219988Skib}
76183270Sobrien#else
77183270Sobrien#define CVMX_RNM_EER_KEY (CVMX_ADD_IO_SEG(0x0001180040000010ull))
78183270Sobrien#endif
79183270Sobrien#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
80183270Sobrien#define CVMX_RNM_SERIAL_NUM CVMX_RNM_SERIAL_NUM_FUNC()
81183270Sobrienstatic inline uint64_t CVMX_RNM_SERIAL_NUM_FUNC(void)
82183270Sobrien{
83183270Sobrien	if (!(OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
84183270Sobrien		cvmx_warn("CVMX_RNM_SERIAL_NUM not supported on this chip\n");
85183270Sobrien	return CVMX_ADD_IO_SEG(0x0001180040000020ull);
86183270Sobrien}
87183270Sobrien#else
88183270Sobrien#define CVMX_RNM_SERIAL_NUM (CVMX_ADD_IO_SEG(0x0001180040000020ull))
89183270Sobrien#endif
90183270Sobrien
91183270Sobrien/**
92183270Sobrien * cvmx_rnm_bist_status
93183270Sobrien *
94183270Sobrien * RNM_BIST_STATUS = RNM's BIST Status Register
95183270Sobrien *
96183270Sobrien * The RNM's Memory Bist Status register.
97183270Sobrien */
98183270Sobrienunion cvmx_rnm_bist_status {
99183270Sobrien	uint64_t u64;
100183270Sobrien	struct cvmx_rnm_bist_status_s {
101183270Sobrien#ifdef __BIG_ENDIAN_BITFIELD
102183270Sobrien	uint64_t reserved_2_63                : 62;
103183270Sobrien	uint64_t rrc                          : 1;  /**< Status of RRC block bist. */
104183270Sobrien	uint64_t mem                          : 1;  /**< Status of MEM block bist. */
105183270Sobrien#else
106183270Sobrien	uint64_t mem                          : 1;
107183270Sobrien	uint64_t rrc                          : 1;
108183270Sobrien	uint64_t reserved_2_63                : 62;
109183270Sobrien#endif
110183270Sobrien	} s;
111183270Sobrien	struct cvmx_rnm_bist_status_s         cn30xx;
112183270Sobrien	struct cvmx_rnm_bist_status_s         cn31xx;
113183270Sobrien	struct cvmx_rnm_bist_status_s         cn38xx;
114183270Sobrien	struct cvmx_rnm_bist_status_s         cn38xxp2;
115183270Sobrien	struct cvmx_rnm_bist_status_s         cn50xx;
116183270Sobrien	struct cvmx_rnm_bist_status_s         cn52xx;
117183270Sobrien	struct cvmx_rnm_bist_status_s         cn52xxp1;
118183270Sobrien	struct cvmx_rnm_bist_status_s         cn56xx;
119183270Sobrien	struct cvmx_rnm_bist_status_s         cn56xxp1;
120183270Sobrien	struct cvmx_rnm_bist_status_s         cn58xx;
121183270Sobrien	struct cvmx_rnm_bist_status_s         cn58xxp1;
122183270Sobrien	struct cvmx_rnm_bist_status_s         cn61xx;
123183270Sobrien	struct cvmx_rnm_bist_status_s         cn63xx;
124183270Sobrien	struct cvmx_rnm_bist_status_s         cn63xxp1;
125183270Sobrien	struct cvmx_rnm_bist_status_s         cn66xx;
126183270Sobrien	struct cvmx_rnm_bist_status_s         cn68xx;
127219988Skib	struct cvmx_rnm_bist_status_s         cn68xxp1;
128219988Skib	struct cvmx_rnm_bist_status_s         cnf71xx;
129219988Skib};
130219988Skibtypedef union cvmx_rnm_bist_status cvmx_rnm_bist_status_t;
131219988Skib
132219988Skib/**
133219988Skib * cvmx_rnm_ctl_status
134219988Skib *
135183270Sobrien * RNM_CTL_STATUS = RNM's Control/Status Register
136183270Sobrien *
137183270Sobrien * The RNM's interrupt enable register.
138183270Sobrien */
139183270Sobrienunion cvmx_rnm_ctl_status {
140183270Sobrien	uint64_t u64;
141183273Sobrien	struct cvmx_rnm_ctl_status_s {
142183273Sobrien#ifdef __BIG_ENDIAN_BITFIELD
143183273Sobrien	uint64_t reserved_12_63               : 52;
144183273Sobrien	uint64_t dis_mak                      : 1;  /**< Disable use of Master AES KEY */
145183273Sobrien	uint64_t eer_lck                      : 1;  /**< Encryption enable register locked */
146183273Sobrien	uint64_t eer_val                      : 1;  /**< Dormant encryption key match */
147183273Sobrien	uint64_t ent_sel                      : 4;  /**< ? */
148183273Sobrien	uint64_t exp_ent                      : 1;  /**< Exported entropy enable for random number generator */
149183273Sobrien	uint64_t rng_rst                      : 1;  /**< Reset RNG as core reset. */
150183273Sobrien	uint64_t rnm_rst                      : 1;  /**< Reset the RNM as core reset except for register
151183273Sobrien                                                         logic. */
152183273Sobrien	uint64_t rng_en                       : 1;  /**< Enable the output of the RNG. */
153183273Sobrien	uint64_t ent_en                       : 1;  /**< Entropy enable for random number generator. */
154183273Sobrien#else
155183273Sobrien	uint64_t ent_en                       : 1;
156183273Sobrien	uint64_t rng_en                       : 1;
157183273Sobrien	uint64_t rnm_rst                      : 1;
158183273Sobrien	uint64_t rng_rst                      : 1;
159183273Sobrien	uint64_t exp_ent                      : 1;
160183273Sobrien	uint64_t ent_sel                      : 4;
161183273Sobrien	uint64_t eer_val                      : 1;
162183273Sobrien	uint64_t eer_lck                      : 1;
163183273Sobrien	uint64_t dis_mak                      : 1;
164183273Sobrien	uint64_t reserved_12_63               : 52;
165183273Sobrien#endif
166183273Sobrien	} s;
167183273Sobrien	struct cvmx_rnm_ctl_status_cn30xx {
168183273Sobrien#ifdef __BIG_ENDIAN_BITFIELD
169183273Sobrien	uint64_t reserved_4_63                : 60;
170183273Sobrien	uint64_t rng_rst                      : 1;  /**< Reset RNG as core reset. */
171183273Sobrien	uint64_t rnm_rst                      : 1;  /**< Reset the RNM as core reset except for register
172183273Sobrien                                                         logic. */
173183273Sobrien	uint64_t rng_en                       : 1;  /**< Enable the output of the RNG. */
174183273Sobrien	uint64_t ent_en                       : 1;  /**< Entropy enable for random number generator. */
175183273Sobrien#else
176183273Sobrien	uint64_t ent_en                       : 1;
177183273Sobrien	uint64_t rng_en                       : 1;
178183273Sobrien	uint64_t rnm_rst                      : 1;
179183273Sobrien	uint64_t rng_rst                      : 1;
180183273Sobrien	uint64_t reserved_4_63                : 60;
181183273Sobrien#endif
182183273Sobrien	} cn30xx;
183183273Sobrien	struct cvmx_rnm_ctl_status_cn30xx     cn31xx;
184183273Sobrien	struct cvmx_rnm_ctl_status_cn30xx     cn38xx;
185183273Sobrien	struct cvmx_rnm_ctl_status_cn30xx     cn38xxp2;
186190529Sed	struct cvmx_rnm_ctl_status_cn50xx {
187190529Sed#ifdef __BIG_ENDIAN_BITFIELD
188190529Sed	uint64_t reserved_9_63                : 55;
189190529Sed	uint64_t ent_sel                      : 4;  /**< ? */
190190529Sed	uint64_t exp_ent                      : 1;  /**< Exported entropy enable for random number generator */
191190529Sed	uint64_t rng_rst                      : 1;  /**< Reset RNG as core reset. */
192190529Sed	uint64_t rnm_rst                      : 1;  /**< Reset the RNM as core reset except for register
193183273Sobrien                                                         logic. */
194190529Sed	uint64_t rng_en                       : 1;  /**< Enable the output of the RNG. */
195190529Sed	uint64_t ent_en                       : 1;  /**< Entropy enable for random number generator. */
196190529Sed#else
197190529Sed	uint64_t ent_en                       : 1;
198190529Sed	uint64_t rng_en                       : 1;
199190529Sed	uint64_t rnm_rst                      : 1;
200190529Sed	uint64_t rng_rst                      : 1;
201190529Sed	uint64_t exp_ent                      : 1;
202219989Skib	uint64_t ent_sel                      : 4;
203219989Skib	uint64_t reserved_9_63                : 55;
204219989Skib#endif
205219989Skib	} cn50xx;
206219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn52xx;
207219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn52xxp1;
208219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn56xx;
209219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn56xxp1;
210219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn58xx;
211219989Skib	struct cvmx_rnm_ctl_status_cn50xx     cn58xxp1;
212219989Skib	struct cvmx_rnm_ctl_status_s          cn61xx;
213219989Skib	struct cvmx_rnm_ctl_status_cn63xx {
214219989Skib#ifdef __BIG_ENDIAN_BITFIELD
215219989Skib	uint64_t reserved_11_63               : 53;
216219989Skib	uint64_t eer_lck                      : 1;  /**< Encryption enable register locked */
217219989Skib	uint64_t eer_val                      : 1;  /**< Dormant encryption key match */
218219989Skib	uint64_t ent_sel                      : 4;  /**< ? */
219219989Skib	uint64_t exp_ent                      : 1;  /**< Exported entropy enable for random number generator */
220219989Skib	uint64_t rng_rst                      : 1;  /**< Reset RNG as core reset. */
221219989Skib	uint64_t rnm_rst                      : 1;  /**< Reset the RNM as core reset except for register
222219989Skib                                                         logic. */
223219989Skib	uint64_t rng_en                       : 1;  /**< Enable the output of the RNG. */
224219989Skib	uint64_t ent_en                       : 1;  /**< Entropy enable for random number generator. */
225219989Skib#else
226219989Skib	uint64_t ent_en                       : 1;
227219989Skib	uint64_t rng_en                       : 1;
228219989Skib	uint64_t rnm_rst                      : 1;
229219989Skib	uint64_t rng_rst                      : 1;
230219989Skib	uint64_t exp_ent                      : 1;
231219989Skib	uint64_t ent_sel                      : 4;
232219989Skib	uint64_t eer_val                      : 1;
233219989Skib	uint64_t eer_lck                      : 1;
234219989Skib	uint64_t reserved_11_63               : 53;
235219989Skib#endif
236219989Skib	} cn63xx;
237219989Skib	struct cvmx_rnm_ctl_status_cn63xx     cn63xxp1;
238219989Skib	struct cvmx_rnm_ctl_status_s          cn66xx;
239219989Skib	struct cvmx_rnm_ctl_status_cn63xx     cn68xx;
240219989Skib	struct cvmx_rnm_ctl_status_cn63xx     cn68xxp1;
241219989Skib	struct cvmx_rnm_ctl_status_s          cnf71xx;
242219989Skib};
243219989Skibtypedef union cvmx_rnm_ctl_status cvmx_rnm_ctl_status_t;
244219989Skib
245220281Skib/**
246220281Skib * cvmx_rnm_eer_dbg
247220281Skib *
248220281Skib * RNM_EER_DBG = RNM's Encryption enable debug register
249220281Skib *
250220281Skib * The RNM's Encryption enable debug register
251220281Skib */
252220281Skibunion cvmx_rnm_eer_dbg {
253220281Skib	uint64_t u64;
254220281Skib	struct cvmx_rnm_eer_dbg_s {
255220281Skib#ifdef __BIG_ENDIAN_BITFIELD
256220281Skib	uint64_t dat                          : 64; /**< Dormant encryption debug info. */
257220281Skib#else
258220281Skib	uint64_t dat                          : 64;
259220281Skib#endif
260220281Skib	} s;
261220281Skib	struct cvmx_rnm_eer_dbg_s             cn61xx;
262220281Skib	struct cvmx_rnm_eer_dbg_s             cn63xx;
263220281Skib	struct cvmx_rnm_eer_dbg_s             cn63xxp1;
264220281Skib	struct cvmx_rnm_eer_dbg_s             cn66xx;
265220281Skib	struct cvmx_rnm_eer_dbg_s             cn68xx;
266220281Skib	struct cvmx_rnm_eer_dbg_s             cn68xxp1;
267220281Skib	struct cvmx_rnm_eer_dbg_s             cnf71xx;
268220281Skib};
269220281Skibtypedef union cvmx_rnm_eer_dbg cvmx_rnm_eer_dbg_t;
270220281Skib
271220281Skib/**
272220281Skib * cvmx_rnm_eer_key
273220281Skib *
274220281Skib * RNM_EER_KEY = RNM's Encryption enable register
275220281Skib *
276220281Skib * The RNM's Encryption enable register
277220281Skib */
278220281Skibunion cvmx_rnm_eer_key {
279220281Skib	uint64_t u64;
280220281Skib	struct cvmx_rnm_eer_key_s {
281220281Skib#ifdef __BIG_ENDIAN_BITFIELD
282220281Skib	uint64_t key                          : 64; /**< Dormant encryption key.  If dormant crypto is fuse
283220281Skib                                                         enabled, crypto can be enable by writing this
284220281Skib                                                         register with the correct key. */
285220281Skib#else
286220281Skib	uint64_t key                          : 64;
287220281Skib#endif
288220281Skib	} s;
289220281Skib	struct cvmx_rnm_eer_key_s             cn61xx;
290220281Skib	struct cvmx_rnm_eer_key_s             cn63xx;
291220281Skib	struct cvmx_rnm_eer_key_s             cn63xxp1;
292220281Skib	struct cvmx_rnm_eer_key_s             cn66xx;
293220281Skib	struct cvmx_rnm_eer_key_s             cn68xx;
294220281Skib	struct cvmx_rnm_eer_key_s             cn68xxp1;
295220281Skib	struct cvmx_rnm_eer_key_s             cnf71xx;
296220281Skib};
297220281Skibtypedef union cvmx_rnm_eer_key cvmx_rnm_eer_key_t;
298220281Skib
299220281Skib/**
300220281Skib * cvmx_rnm_serial_num
301220281Skib *
302220281Skib * RNM_SERIAL_NUM = RNM's fuse serial number register
303220281Skib *
304220281Skib * The RNM's fuse serial number register
305220281Skib *
306220281Skib * Notes:
307220281Skib * Added RNM_SERIAL_NUM in pass 2.0
308220281Skib *
309220281Skib */
310220281Skibunion cvmx_rnm_serial_num {
311220281Skib	uint64_t u64;
312220281Skib	struct cvmx_rnm_serial_num_s {
313220281Skib#ifdef __BIG_ENDIAN_BITFIELD
314220281Skib	uint64_t dat                          : 64; /**< Dormant encryption serial number */
315220281Skib#else
316220281Skib	uint64_t dat                          : 64;
317220281Skib#endif
318220281Skib	} s;
319220281Skib	struct cvmx_rnm_serial_num_s          cn61xx;
320220281Skib	struct cvmx_rnm_serial_num_s          cn63xx;
321220281Skib	struct cvmx_rnm_serial_num_s          cn66xx;
322220281Skib	struct cvmx_rnm_serial_num_s          cn68xx;
323220281Skib	struct cvmx_rnm_serial_num_s          cn68xxp1;
324220281Skib	struct cvmx_rnm_serial_num_s          cnf71xx;
325220281Skib};
326220281Skibtypedef union cvmx_rnm_serial_num cvmx_rnm_serial_num_t;
327220281Skib
328220281Skib#endif
329220281Skib