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