18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: MIT */
28c2ecf20Sopenharmony_ci#ifndef __NVFW_LS_H__
38c2ecf20Sopenharmony_ci#define __NVFW_LS_H__
48c2ecf20Sopenharmony_ci#include <core/os.h>
58c2ecf20Sopenharmony_cistruct nvkm_subdev;
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cistruct nvfw_ls_desc_head {
88c2ecf20Sopenharmony_ci	u32 descriptor_size;
98c2ecf20Sopenharmony_ci	u32 image_size;
108c2ecf20Sopenharmony_ci	u32 tools_version;
118c2ecf20Sopenharmony_ci	u32 app_version;
128c2ecf20Sopenharmony_ci	char date[64];
138c2ecf20Sopenharmony_ci	u32 bootloader_start_offset;
148c2ecf20Sopenharmony_ci	u32 bootloader_size;
158c2ecf20Sopenharmony_ci	u32 bootloader_imem_offset;
168c2ecf20Sopenharmony_ci	u32 bootloader_entry_point;
178c2ecf20Sopenharmony_ci	u32 app_start_offset;
188c2ecf20Sopenharmony_ci	u32 app_size;
198c2ecf20Sopenharmony_ci	u32 app_imem_offset;
208c2ecf20Sopenharmony_ci	u32 app_imem_entry;
218c2ecf20Sopenharmony_ci	u32 app_dmem_offset;
228c2ecf20Sopenharmony_ci	u32 app_resident_code_offset;
238c2ecf20Sopenharmony_ci	u32 app_resident_code_size;
248c2ecf20Sopenharmony_ci	u32 app_resident_data_offset;
258c2ecf20Sopenharmony_ci	u32 app_resident_data_size;
268c2ecf20Sopenharmony_ci};
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_cistruct nvfw_ls_desc {
298c2ecf20Sopenharmony_ci	struct nvfw_ls_desc_head head;
308c2ecf20Sopenharmony_ci	u32 nb_overlays;
318c2ecf20Sopenharmony_ci	struct {
328c2ecf20Sopenharmony_ci		u32 start;
338c2ecf20Sopenharmony_ci		u32 size;
348c2ecf20Sopenharmony_ci	} load_ovl[64];
358c2ecf20Sopenharmony_ci	u32 compressed;
368c2ecf20Sopenharmony_ci};
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciconst struct nvfw_ls_desc *nvfw_ls_desc(struct nvkm_subdev *, const void *);
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_cistruct nvfw_ls_desc_v1 {
418c2ecf20Sopenharmony_ci	struct nvfw_ls_desc_head head;
428c2ecf20Sopenharmony_ci	u32 nb_imem_overlays;
438c2ecf20Sopenharmony_ci	u32 nb_dmem_overlays;
448c2ecf20Sopenharmony_ci	struct {
458c2ecf20Sopenharmony_ci		u32 start;
468c2ecf20Sopenharmony_ci		u32 size;
478c2ecf20Sopenharmony_ci	} load_ovl[64];
488c2ecf20Sopenharmony_ci	u32 compressed;
498c2ecf20Sopenharmony_ci};
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ciconst struct nvfw_ls_desc_v1 *
528c2ecf20Sopenharmony_cinvfw_ls_desc_v1(struct nvkm_subdev *, const void *);
538c2ecf20Sopenharmony_ci#endif
54