1 /* SPDX-License-Identifier: MIT */
2 #ifndef __NVFW_FLCN_H__
3 #define __NVFW_FLCN_H__
4 #include <core/os.h>
5 struct nvkm_subdev;
6 
7 struct loader_config {
8 	u32 dma_idx;
9 	u32 code_dma_base;
10 	u32 code_size_total;
11 	u32 code_size_to_load;
12 	u32 code_entry_point;
13 	u32 data_dma_base;
14 	u32 data_size;
15 	u32 overlay_dma_base;
16 	u32 argc;
17 	u32 argv;
18 	u32 code_dma_base1;
19 	u32 data_dma_base1;
20 	u32 overlay_dma_base1;
21 };
22 
23 void
24 loader_config_dump(struct nvkm_subdev *, const struct loader_config *);
25 
26 struct loader_config_v1 {
27 	u32 reserved;
28 	u32 dma_idx;
29 	u64 code_dma_base;
30 	u32 code_size_total;
31 	u32 code_size_to_load;
32 	u32 code_entry_point;
33 	u64 data_dma_base;
34 	u32 data_size;
35 	u64 overlay_dma_base;
36 	u32 argc;
37 	u32 argv;
38 } __packed;
39 
40 void
41 loader_config_v1_dump(struct nvkm_subdev *, const struct loader_config_v1 *);
42 
43 struct flcn_bl_dmem_desc {
44 	u32 reserved[4];
45 	u32 signature[4];
46 	u32 ctx_dma;
47 	u32 code_dma_base;
48 	u32 non_sec_code_off;
49 	u32 non_sec_code_size;
50 	u32 sec_code_off;
51 	u32 sec_code_size;
52 	u32 code_entry_point;
53 	u32 data_dma_base;
54 	u32 data_size;
55 	u32 code_dma_base1;
56 	u32 data_dma_base1;
57 };
58 
59 void
60 flcn_bl_dmem_desc_dump(struct nvkm_subdev *, const struct flcn_bl_dmem_desc *);
61 
62 struct flcn_bl_dmem_desc_v1 {
63 	u32 reserved[4];
64 	u32 signature[4];
65 	u32 ctx_dma;
66 	u64 code_dma_base;
67 	u32 non_sec_code_off;
68 	u32 non_sec_code_size;
69 	u32 sec_code_off;
70 	u32 sec_code_size;
71 	u32 code_entry_point;
72 	u64 data_dma_base;
73 	u32 data_size;
74 } __packed;
75 
76 void flcn_bl_dmem_desc_v1_dump(struct nvkm_subdev *,
77 			       const struct flcn_bl_dmem_desc_v1 *);
78 
79 struct flcn_bl_dmem_desc_v2 {
80 	u32 reserved[4];
81 	u32 signature[4];
82 	u32 ctx_dma;
83 	u64 code_dma_base;
84 	u32 non_sec_code_off;
85 	u32 non_sec_code_size;
86 	u32 sec_code_off;
87 	u32 sec_code_size;
88 	u32 code_entry_point;
89 	u64 data_dma_base;
90 	u32 data_size;
91 	u32 argc;
92 	u32 argv;
93 } __packed;
94 
95 void flcn_bl_dmem_desc_v2_dump(struct nvkm_subdev *,
96 			       const struct flcn_bl_dmem_desc_v2 *);
97 #endif
98