xref: /rk3399_ARM-atf/include/plat/marvell/odyssey/csr/ody-csrs-fus.h (revision 12d80bbbf6031228bdd910eccb03bb185e8df527)
1*4b8b8d74SJaiprakash Singh #ifndef __ODY_CSRS_FUS_H__
2*4b8b8d74SJaiprakash Singh #define __ODY_CSRS_FUS_H__
3*4b8b8d74SJaiprakash Singh /* This file is auto-generated. Do not edit */
4*4b8b8d74SJaiprakash Singh 
5*4b8b8d74SJaiprakash Singh /***********************license start***********************************
6*4b8b8d74SJaiprakash Singh * Copyright (C) 2021-2026 Marvell.
7*4b8b8d74SJaiprakash Singh * SPDX-License-Identifier: BSD-3-Clause
8*4b8b8d74SJaiprakash Singh * https://spdx.org/licenses
9*4b8b8d74SJaiprakash Singh ***********************license end**************************************/
10*4b8b8d74SJaiprakash Singh 
11*4b8b8d74SJaiprakash Singh 
12*4b8b8d74SJaiprakash Singh /**
13*4b8b8d74SJaiprakash Singh  * @file
14*4b8b8d74SJaiprakash Singh  *
15*4b8b8d74SJaiprakash Singh  * Configuration and status register (CSR) address and type definitions for
16*4b8b8d74SJaiprakash Singh  * FUS.
17*4b8b8d74SJaiprakash Singh  *
18*4b8b8d74SJaiprakash Singh  * This file is auto generated. Do not edit.
19*4b8b8d74SJaiprakash Singh  *
20*4b8b8d74SJaiprakash Singh  */
21*4b8b8d74SJaiprakash Singh 
22*4b8b8d74SJaiprakash Singh /**
23*4b8b8d74SJaiprakash Singh  * Enumeration fus_bar_e
24*4b8b8d74SJaiprakash Singh  *
25*4b8b8d74SJaiprakash Singh  * Fuse Base Address Register Enumeration
26*4b8b8d74SJaiprakash Singh  * Enumerates the base address registers.
27*4b8b8d74SJaiprakash Singh  */
28*4b8b8d74SJaiprakash Singh #define ODY_FUS_BAR_E_FUS_PF_BAR0 (0x87e003000000ll)
29*4b8b8d74SJaiprakash Singh #define ODY_FUS_BAR_E_FUS_PF_BAR0_SIZE 0x10000ull
30*4b8b8d74SJaiprakash Singh 
31*4b8b8d74SJaiprakash Singh /**
32*4b8b8d74SJaiprakash Singh  * Register (RSL) fus_bnk_dat#
33*4b8b8d74SJaiprakash Singh  *
34*4b8b8d74SJaiprakash Singh  * Fuse Bank Store Register
35*4b8b8d74SJaiprakash Singh  * The initial state of FUS_BNK_DAT() is as if bank6 were just read,
36*4b8b8d74SJaiprakash Singh  * i.e. DAT* = fus[895:768].
37*4b8b8d74SJaiprakash Singh  */
38*4b8b8d74SJaiprakash Singh union ody_fus_bnk_datx {
39*4b8b8d74SJaiprakash Singh 	uint64_t u;
40*4b8b8d74SJaiprakash Singh 	struct ody_fus_bnk_datx_s {
41*4b8b8d74SJaiprakash Singh 		uint64_t dat                         : 64;
42*4b8b8d74SJaiprakash Singh 	} s;
43*4b8b8d74SJaiprakash Singh 	/* struct ody_fus_bnk_datx_s cn; */
44*4b8b8d74SJaiprakash Singh };
45*4b8b8d74SJaiprakash Singh typedef union ody_fus_bnk_datx ody_fus_bnk_datx_t;
46*4b8b8d74SJaiprakash Singh 
47*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_BNK_DATX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_FUS_BNK_DATX(uint64_t a)48*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_BNK_DATX(uint64_t a)
49*4b8b8d74SJaiprakash Singh {
50*4b8b8d74SJaiprakash Singh 	if (a <= 1)
51*4b8b8d74SJaiprakash Singh 		return 0x87e003001520ll + 8ll * ((a) & 0x1);
52*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("FUS_BNK_DATX", 1, a, 0, 0, 0, 0, 0);
53*4b8b8d74SJaiprakash Singh }
54*4b8b8d74SJaiprakash Singh 
55*4b8b8d74SJaiprakash Singh #define typedef_ODY_FUS_BNK_DATX(a) ody_fus_bnk_datx_t
56*4b8b8d74SJaiprakash Singh #define bustype_ODY_FUS_BNK_DATX(a) CSR_TYPE_RSL
57*4b8b8d74SJaiprakash Singh #define basename_ODY_FUS_BNK_DATX(a) "FUS_BNK_DATX"
58*4b8b8d74SJaiprakash Singh #define device_bar_ODY_FUS_BNK_DATX(a) 0x0 /* PF_BAR0 */
59*4b8b8d74SJaiprakash Singh #define busnum_ODY_FUS_BNK_DATX(a) (a)
60*4b8b8d74SJaiprakash Singh #define arguments_ODY_FUS_BNK_DATX(a) (a), -1, -1, -1
61*4b8b8d74SJaiprakash Singh 
62*4b8b8d74SJaiprakash Singh /**
63*4b8b8d74SJaiprakash Singh  * Register (RSL) fus_cache#
64*4b8b8d74SJaiprakash Singh  *
65*4b8b8d74SJaiprakash Singh  * Fuse Cache Register
66*4b8b8d74SJaiprakash Singh  * This register returns the cached state of every fuse, organized into 64-fuse
67*4b8b8d74SJaiprakash Singh  * chunks. Each bit corresponds to a fuse enumerated by FUSE_NUM_E.
68*4b8b8d74SJaiprakash Singh  */
69*4b8b8d74SJaiprakash Singh union ody_fus_cachex {
70*4b8b8d74SJaiprakash Singh 	uint64_t u;
71*4b8b8d74SJaiprakash Singh 	struct ody_fus_cachex_s {
72*4b8b8d74SJaiprakash Singh 		uint64_t data                        : 64;
73*4b8b8d74SJaiprakash Singh 	} s;
74*4b8b8d74SJaiprakash Singh 	/* struct ody_fus_cachex_s cn; */
75*4b8b8d74SJaiprakash Singh };
76*4b8b8d74SJaiprakash Singh typedef union ody_fus_cachex ody_fus_cachex_t;
77*4b8b8d74SJaiprakash Singh 
78*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_CACHEX(uint64_t a) __attribute__ ((pure, always_inline));
ODY_FUS_CACHEX(uint64_t a)79*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_CACHEX(uint64_t a)
80*4b8b8d74SJaiprakash Singh {
81*4b8b8d74SJaiprakash Singh 	if (a <= 63)
82*4b8b8d74SJaiprakash Singh 		return 0x87e003001000ll + 8ll * ((a) & 0x3f);
83*4b8b8d74SJaiprakash Singh 	__ody_csr_fatal("FUS_CACHEX", 1, a, 0, 0, 0, 0, 0);
84*4b8b8d74SJaiprakash Singh }
85*4b8b8d74SJaiprakash Singh 
86*4b8b8d74SJaiprakash Singh #define typedef_ODY_FUS_CACHEX(a) ody_fus_cachex_t
87*4b8b8d74SJaiprakash Singh #define bustype_ODY_FUS_CACHEX(a) CSR_TYPE_RSL
88*4b8b8d74SJaiprakash Singh #define basename_ODY_FUS_CACHEX(a) "FUS_CACHEX"
89*4b8b8d74SJaiprakash Singh #define device_bar_ODY_FUS_CACHEX(a) 0x0 /* PF_BAR0 */
90*4b8b8d74SJaiprakash Singh #define busnum_ODY_FUS_CACHEX(a) (a)
91*4b8b8d74SJaiprakash Singh #define arguments_ODY_FUS_CACHEX(a) (a), -1, -1, -1
92*4b8b8d74SJaiprakash Singh 
93*4b8b8d74SJaiprakash Singh /**
94*4b8b8d74SJaiprakash Singh  * Register (RSL) fus_const
95*4b8b8d74SJaiprakash Singh  *
96*4b8b8d74SJaiprakash Singh  * Fuse Constants Register
97*4b8b8d74SJaiprakash Singh  */
98*4b8b8d74SJaiprakash Singh union ody_fus_const {
99*4b8b8d74SJaiprakash Singh 	uint64_t u;
100*4b8b8d74SJaiprakash Singh 	struct ody_fus_const_s {
101*4b8b8d74SJaiprakash Singh 		uint64_t fuse_banks                  : 8;
102*4b8b8d74SJaiprakash Singh 		uint64_t repair_banks                : 8;
103*4b8b8d74SJaiprakash Singh 		uint64_t extra_banks                 : 8;
104*4b8b8d74SJaiprakash Singh 		uint64_t reserved_24_63              : 40;
105*4b8b8d74SJaiprakash Singh 	} s;
106*4b8b8d74SJaiprakash Singh 	/* struct ody_fus_const_s cn; */
107*4b8b8d74SJaiprakash Singh };
108*4b8b8d74SJaiprakash Singh typedef union ody_fus_const ody_fus_const_t;
109*4b8b8d74SJaiprakash Singh 
110*4b8b8d74SJaiprakash Singh #define ODY_FUS_CONST ODY_FUS_CONST_FUNC()
111*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_CONST_FUNC(void) __attribute__ ((pure, always_inline));
ODY_FUS_CONST_FUNC(void)112*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_CONST_FUNC(void)
113*4b8b8d74SJaiprakash Singh {
114*4b8b8d74SJaiprakash Singh 	return 0x87e003001578ll;
115*4b8b8d74SJaiprakash Singh }
116*4b8b8d74SJaiprakash Singh 
117*4b8b8d74SJaiprakash Singh #define typedef_ODY_FUS_CONST ody_fus_const_t
118*4b8b8d74SJaiprakash Singh #define bustype_ODY_FUS_CONST CSR_TYPE_RSL
119*4b8b8d74SJaiprakash Singh #define basename_ODY_FUS_CONST "FUS_CONST"
120*4b8b8d74SJaiprakash Singh #define device_bar_ODY_FUS_CONST 0x0 /* PF_BAR0 */
121*4b8b8d74SJaiprakash Singh #define busnum_ODY_FUS_CONST 0
122*4b8b8d74SJaiprakash Singh #define arguments_ODY_FUS_CONST -1, -1, -1, -1
123*4b8b8d74SJaiprakash Singh 
124*4b8b8d74SJaiprakash Singh /**
125*4b8b8d74SJaiprakash Singh  * Register (RSL) fus_rcmd
126*4b8b8d74SJaiprakash Singh  *
127*4b8b8d74SJaiprakash Singh  * Fuse Read Command Register
128*4b8b8d74SJaiprakash Singh  * Read Fuse Banks.
129*4b8b8d74SJaiprakash Singh  */
130*4b8b8d74SJaiprakash Singh union ody_fus_rcmd {
131*4b8b8d74SJaiprakash Singh 	uint64_t u;
132*4b8b8d74SJaiprakash Singh 	struct ody_fus_rcmd_s {
133*4b8b8d74SJaiprakash Singh 		uint64_t reserved_0_3                : 4;
134*4b8b8d74SJaiprakash Singh 		uint64_t addr                        : 7;
135*4b8b8d74SJaiprakash Singh 		uint64_t reserved_11                 : 1;
136*4b8b8d74SJaiprakash Singh 		uint64_t pend                        : 1;
137*4b8b8d74SJaiprakash Singh 		uint64_t reserved_13                 : 1;
138*4b8b8d74SJaiprakash Singh 		uint64_t voltage                     : 1;
139*4b8b8d74SJaiprakash Singh 		uint64_t efuse                       : 1;
140*4b8b8d74SJaiprakash Singh 		uint64_t reserved_16_63              : 48;
141*4b8b8d74SJaiprakash Singh 	} s;
142*4b8b8d74SJaiprakash Singh 	/* struct ody_fus_rcmd_s cn; */
143*4b8b8d74SJaiprakash Singh };
144*4b8b8d74SJaiprakash Singh typedef union ody_fus_rcmd ody_fus_rcmd_t;
145*4b8b8d74SJaiprakash Singh 
146*4b8b8d74SJaiprakash Singh #define ODY_FUS_RCMD ODY_FUS_RCMD_FUNC()
147*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_RCMD_FUNC(void) __attribute__ ((pure, always_inline));
ODY_FUS_RCMD_FUNC(void)148*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_RCMD_FUNC(void)
149*4b8b8d74SJaiprakash Singh {
150*4b8b8d74SJaiprakash Singh 	return 0x87e003001500ll;
151*4b8b8d74SJaiprakash Singh }
152*4b8b8d74SJaiprakash Singh 
153*4b8b8d74SJaiprakash Singh #define typedef_ODY_FUS_RCMD ody_fus_rcmd_t
154*4b8b8d74SJaiprakash Singh #define bustype_ODY_FUS_RCMD CSR_TYPE_RSL
155*4b8b8d74SJaiprakash Singh #define basename_ODY_FUS_RCMD "FUS_RCMD"
156*4b8b8d74SJaiprakash Singh #define device_bar_ODY_FUS_RCMD 0x0 /* PF_BAR0 */
157*4b8b8d74SJaiprakash Singh #define busnum_ODY_FUS_RCMD 0
158*4b8b8d74SJaiprakash Singh #define arguments_ODY_FUS_RCMD -1, -1, -1, -1
159*4b8b8d74SJaiprakash Singh 
160*4b8b8d74SJaiprakash Singh /**
161*4b8b8d74SJaiprakash Singh  * Register (RSL) fus_read_times
162*4b8b8d74SJaiprakash Singh  *
163*4b8b8d74SJaiprakash Singh  * Fuse Read Times Register
164*4b8b8d74SJaiprakash Singh  * The reset values correspond to accesses of internal fuses with PLL reference clock
165*4b8b8d74SJaiprakash Singh  * up to 115 MHz.  If any of the formulas below result in a value less than 0x0, the
166*4b8b8d74SJaiprakash Singh  * corresponding timing parameter should be set to zero.
167*4b8b8d74SJaiprakash Singh  *
168*4b8b8d74SJaiprakash Singh  * Prior to issuing a read operation to the fuse banks (via FUS_RCMD),
169*4b8b8d74SJaiprakash Singh  * this register should be written with the timing parameters that will be read.
170*4b8b8d74SJaiprakash Singh  * This register should not be written while FUS_RCMD[PEND] = 1.
171*4b8b8d74SJaiprakash Singh  */
172*4b8b8d74SJaiprakash Singh union ody_fus_read_times {
173*4b8b8d74SJaiprakash Singh 	uint64_t u;
174*4b8b8d74SJaiprakash Singh 	struct ody_fus_read_times_s {
175*4b8b8d74SJaiprakash Singh 		uint64_t setup                       : 4;
176*4b8b8d74SJaiprakash Singh 		uint64_t asu                         : 4;
177*4b8b8d74SJaiprakash Singh 		uint64_t rdstb_wh                    : 4;
178*4b8b8d74SJaiprakash Singh 		uint64_t wrstb_wh                    : 12;
179*4b8b8d74SJaiprakash Singh 		uint64_t ahd                         : 4;
180*4b8b8d74SJaiprakash Singh 		uint64_t done                        : 4;
181*4b8b8d74SJaiprakash Singh 		uint64_t margin                      : 1;
182*4b8b8d74SJaiprakash Singh 		uint64_t reserved_33_63              : 31;
183*4b8b8d74SJaiprakash Singh 	} s;
184*4b8b8d74SJaiprakash Singh 	/* struct ody_fus_read_times_s cn; */
185*4b8b8d74SJaiprakash Singh };
186*4b8b8d74SJaiprakash Singh typedef union ody_fus_read_times ody_fus_read_times_t;
187*4b8b8d74SJaiprakash Singh 
188*4b8b8d74SJaiprakash Singh #define ODY_FUS_READ_TIMES ODY_FUS_READ_TIMES_FUNC()
189*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_READ_TIMES_FUNC(void) __attribute__ ((pure, always_inline));
ODY_FUS_READ_TIMES_FUNC(void)190*4b8b8d74SJaiprakash Singh static inline uint64_t ODY_FUS_READ_TIMES_FUNC(void)
191*4b8b8d74SJaiprakash Singh {
192*4b8b8d74SJaiprakash Singh 	return 0x87e003001570ll;
193*4b8b8d74SJaiprakash Singh }
194*4b8b8d74SJaiprakash Singh 
195*4b8b8d74SJaiprakash Singh #define typedef_ODY_FUS_READ_TIMES ody_fus_read_times_t
196*4b8b8d74SJaiprakash Singh #define bustype_ODY_FUS_READ_TIMES CSR_TYPE_RSL
197*4b8b8d74SJaiprakash Singh #define basename_ODY_FUS_READ_TIMES "FUS_READ_TIMES"
198*4b8b8d74SJaiprakash Singh #define device_bar_ODY_FUS_READ_TIMES 0x0 /* PF_BAR0 */
199*4b8b8d74SJaiprakash Singh #define busnum_ODY_FUS_READ_TIMES 0
200*4b8b8d74SJaiprakash Singh #define arguments_ODY_FUS_READ_TIMES -1, -1, -1, -1
201*4b8b8d74SJaiprakash Singh 
202*4b8b8d74SJaiprakash Singh #endif /* __ODY_CSRS_FUS_H__ */
203