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