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