xref: /OK3568_Linux_fs/kernel/drivers/gpu/drm/nouveau/include/nvfw/ls.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: MIT */
2*4882a593Smuzhiyun #ifndef __NVFW_LS_H__
3*4882a593Smuzhiyun #define __NVFW_LS_H__
4*4882a593Smuzhiyun #include <core/os.h>
5*4882a593Smuzhiyun struct nvkm_subdev;
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun struct nvfw_ls_desc_head {
8*4882a593Smuzhiyun 	u32 descriptor_size;
9*4882a593Smuzhiyun 	u32 image_size;
10*4882a593Smuzhiyun 	u32 tools_version;
11*4882a593Smuzhiyun 	u32 app_version;
12*4882a593Smuzhiyun 	char date[64];
13*4882a593Smuzhiyun 	u32 bootloader_start_offset;
14*4882a593Smuzhiyun 	u32 bootloader_size;
15*4882a593Smuzhiyun 	u32 bootloader_imem_offset;
16*4882a593Smuzhiyun 	u32 bootloader_entry_point;
17*4882a593Smuzhiyun 	u32 app_start_offset;
18*4882a593Smuzhiyun 	u32 app_size;
19*4882a593Smuzhiyun 	u32 app_imem_offset;
20*4882a593Smuzhiyun 	u32 app_imem_entry;
21*4882a593Smuzhiyun 	u32 app_dmem_offset;
22*4882a593Smuzhiyun 	u32 app_resident_code_offset;
23*4882a593Smuzhiyun 	u32 app_resident_code_size;
24*4882a593Smuzhiyun 	u32 app_resident_data_offset;
25*4882a593Smuzhiyun 	u32 app_resident_data_size;
26*4882a593Smuzhiyun };
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun struct nvfw_ls_desc {
29*4882a593Smuzhiyun 	struct nvfw_ls_desc_head head;
30*4882a593Smuzhiyun 	u32 nb_overlays;
31*4882a593Smuzhiyun 	struct {
32*4882a593Smuzhiyun 		u32 start;
33*4882a593Smuzhiyun 		u32 size;
34*4882a593Smuzhiyun 	} load_ovl[64];
35*4882a593Smuzhiyun 	u32 compressed;
36*4882a593Smuzhiyun };
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun const struct nvfw_ls_desc *nvfw_ls_desc(struct nvkm_subdev *, const void *);
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun struct nvfw_ls_desc_v1 {
41*4882a593Smuzhiyun 	struct nvfw_ls_desc_head head;
42*4882a593Smuzhiyun 	u32 nb_imem_overlays;
43*4882a593Smuzhiyun 	u32 nb_dmem_overlays;
44*4882a593Smuzhiyun 	struct {
45*4882a593Smuzhiyun 		u32 start;
46*4882a593Smuzhiyun 		u32 size;
47*4882a593Smuzhiyun 	} load_ovl[64];
48*4882a593Smuzhiyun 	u32 compressed;
49*4882a593Smuzhiyun };
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun const struct nvfw_ls_desc_v1 *
52*4882a593Smuzhiyun nvfw_ls_desc_v1(struct nvkm_subdev *, const void *);
53*4882a593Smuzhiyun #endif
54