5 #define WPR_HEADER_V0_FALCON_ID_INVALID 0xffffffff
10 #define WPR_HEADER_V0_STATUS_NONE 0
11 #define WPR_HEADER_V0_STATUS_COPY 1
12 #define WPR_HEADER_V0_STATUS_VALIDATION_CODE_FAILED 2
13 #define WPR_HEADER_V0_STATUS_VALIDATION_DATA_FAILED 3
14 #define WPR_HEADER_V0_STATUS_VALIDATION_DONE 4
15 #define WPR_HEADER_V0_STATUS_VALIDATION_SKIPPED 5
16 #define WPR_HEADER_V0_STATUS_BOOTSTRAP_READY 6
20 void wpr_header_dump(struct nvkm_subdev *, const struct wpr_header *);
22 struct wpr_header_v1 {
23 #define WPR_HEADER_V1_FALCON_ID_INVALID 0xffffffff
29 #define WPR_HEADER_V1_STATUS_NONE 0
30 #define WPR_HEADER_V1_STATUS_COPY 1
31 #define WPR_HEADER_V1_STATUS_VALIDATION_CODE_FAILED 2
32 #define WPR_HEADER_V1_STATUS_VALIDATION_DATA_FAILED 3
33 #define WPR_HEADER_V1_STATUS_VALIDATION_DONE 4
34 #define WPR_HEADER_V1_STATUS_VALIDATION_SKIPPED 5
35 #define WPR_HEADER_V1_STATUS_BOOTSTRAP_READY 6
36 #define WPR_HEADER_V1_STATUS_REVOCATION_CHECK_FAILED 7
40 void wpr_header_v1_dump(struct nvkm_subdev *, const struct wpr_header_v1 *);
42 struct wpr_generic_header {
43 #define WPR_GENERIC_HEADER_ID_LSF_UCODE_DESC 1
44 #define WPR_GENERIC_HEADER_ID_LSF_WPR_HEADER 2
45 #define WPR_GENERIC_HEADER_ID_LSF_SHARED_SUB_WPR 3
46 #define WPR_GENERIC_HEADER_ID_LSF_LSB_HEADER 4
52 struct wpr_header_v2 {
53 struct wpr_generic_header hdr;
54 struct wpr_header_v1 wpr;
57 void wpr_header_v2_dump(struct nvkm_subdev *, const struct wpr_header_v2 *);
59 struct lsf_signature {
67 struct lsf_signature_v1 {
73 u32 supports_versioning;
76 u8 depmap[11/*LSF_LSB_DEPMAP_SIZE*/ * 2 * 4];
80 struct lsb_header_tail {
96 struct lsf_signature signature;
97 struct lsb_header_tail tail;
100 void lsb_header_dump(struct nvkm_subdev *, struct lsb_header *);
102 struct lsb_header_v1 {
103 struct lsf_signature_v1 signature;
104 struct lsb_header_tail tail;
107 void lsb_header_v1_dump(struct nvkm_subdev *, struct lsb_header_v1 *);
109 struct lsb_header_v2 {
110 struct wpr_generic_header hdr;
111 struct lsf_signature_v2 {
112 struct wpr_generic_header hdr;
118 u8 prod_sig[2][384 + 128];
119 u8 debug_sig[2][384 + 128];
124 u32 sig_algo_padding_type;
125 u8 depmap[11 * 2 * 4];
127 u8 supports_versioning;
129 u32 ls_ucode_version;
131 u32 ucode_ls_encrypted;
132 u32 ls_eng_algo_type;
152 u32 monitor_code_offset;
153 u32 monitor_data_offset;
155 struct hs_fmc_params {
159 u16 pkc_algo_version;
163 u8 pkc_signature[384 + 128];
167 struct hs_ovl_sig_blob_params {
168 u8 hs_ovl_sig_blob_present;
169 u32 hs_ovl_sig_blob_offset;
170 u32 hs_ovl_sig_blob_size;
171 } hs_ovl_sig_blob_params;
175 void lsb_header_v2_dump(struct nvkm_subdev *, struct lsb_header_v2 *);
177 struct flcn_acr_desc {
179 u8 reserved_dmem[0x200];
181 } ucode_reserved_space;
197 u64 ucode_blob_base __aligned(8);
206 void flcn_acr_desc_dump(struct nvkm_subdev *, struct flcn_acr_desc *);
208 struct flcn_acr_desc_v1 {
209 u8 reserved_dmem[0x200];
213 u32 mmu_memory_range;
223 u32 shadow_mem_start_addr;
227 u64 ucode_blob_base __aligned(8);
236 void flcn_acr_desc_v1_dump(struct nvkm_subdev *, struct flcn_acr_desc_v1 *);