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