18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: MIT */
28c2ecf20Sopenharmony_ci#ifndef __NVFW_FLCN_H__
38c2ecf20Sopenharmony_ci#define __NVFW_FLCN_H__
48c2ecf20Sopenharmony_ci#include <core/os.h>
58c2ecf20Sopenharmony_cistruct nvkm_subdev;
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cistruct loader_config {
88c2ecf20Sopenharmony_ci	u32 dma_idx;
98c2ecf20Sopenharmony_ci	u32 code_dma_base;
108c2ecf20Sopenharmony_ci	u32 code_size_total;
118c2ecf20Sopenharmony_ci	u32 code_size_to_load;
128c2ecf20Sopenharmony_ci	u32 code_entry_point;
138c2ecf20Sopenharmony_ci	u32 data_dma_base;
148c2ecf20Sopenharmony_ci	u32 data_size;
158c2ecf20Sopenharmony_ci	u32 overlay_dma_base;
168c2ecf20Sopenharmony_ci	u32 argc;
178c2ecf20Sopenharmony_ci	u32 argv;
188c2ecf20Sopenharmony_ci	u32 code_dma_base1;
198c2ecf20Sopenharmony_ci	u32 data_dma_base1;
208c2ecf20Sopenharmony_ci	u32 overlay_dma_base1;
218c2ecf20Sopenharmony_ci};
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_civoid
248c2ecf20Sopenharmony_ciloader_config_dump(struct nvkm_subdev *, const struct loader_config *);
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cistruct loader_config_v1 {
278c2ecf20Sopenharmony_ci	u32 reserved;
288c2ecf20Sopenharmony_ci	u32 dma_idx;
298c2ecf20Sopenharmony_ci	u64 code_dma_base;
308c2ecf20Sopenharmony_ci	u32 code_size_total;
318c2ecf20Sopenharmony_ci	u32 code_size_to_load;
328c2ecf20Sopenharmony_ci	u32 code_entry_point;
338c2ecf20Sopenharmony_ci	u64 data_dma_base;
348c2ecf20Sopenharmony_ci	u32 data_size;
358c2ecf20Sopenharmony_ci	u64 overlay_dma_base;
368c2ecf20Sopenharmony_ci	u32 argc;
378c2ecf20Sopenharmony_ci	u32 argv;
388c2ecf20Sopenharmony_ci} __packed;
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_civoid
418c2ecf20Sopenharmony_ciloader_config_v1_dump(struct nvkm_subdev *, const struct loader_config_v1 *);
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_cistruct flcn_bl_dmem_desc {
448c2ecf20Sopenharmony_ci	u32 reserved[4];
458c2ecf20Sopenharmony_ci	u32 signature[4];
468c2ecf20Sopenharmony_ci	u32 ctx_dma;
478c2ecf20Sopenharmony_ci	u32 code_dma_base;
488c2ecf20Sopenharmony_ci	u32 non_sec_code_off;
498c2ecf20Sopenharmony_ci	u32 non_sec_code_size;
508c2ecf20Sopenharmony_ci	u32 sec_code_off;
518c2ecf20Sopenharmony_ci	u32 sec_code_size;
528c2ecf20Sopenharmony_ci	u32 code_entry_point;
538c2ecf20Sopenharmony_ci	u32 data_dma_base;
548c2ecf20Sopenharmony_ci	u32 data_size;
558c2ecf20Sopenharmony_ci	u32 code_dma_base1;
568c2ecf20Sopenharmony_ci	u32 data_dma_base1;
578c2ecf20Sopenharmony_ci};
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_civoid
608c2ecf20Sopenharmony_ciflcn_bl_dmem_desc_dump(struct nvkm_subdev *, const struct flcn_bl_dmem_desc *);
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_cistruct flcn_bl_dmem_desc_v1 {
638c2ecf20Sopenharmony_ci	u32 reserved[4];
648c2ecf20Sopenharmony_ci	u32 signature[4];
658c2ecf20Sopenharmony_ci	u32 ctx_dma;
668c2ecf20Sopenharmony_ci	u64 code_dma_base;
678c2ecf20Sopenharmony_ci	u32 non_sec_code_off;
688c2ecf20Sopenharmony_ci	u32 non_sec_code_size;
698c2ecf20Sopenharmony_ci	u32 sec_code_off;
708c2ecf20Sopenharmony_ci	u32 sec_code_size;
718c2ecf20Sopenharmony_ci	u32 code_entry_point;
728c2ecf20Sopenharmony_ci	u64 data_dma_base;
738c2ecf20Sopenharmony_ci	u32 data_size;
748c2ecf20Sopenharmony_ci} __packed;
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_civoid flcn_bl_dmem_desc_v1_dump(struct nvkm_subdev *,
778c2ecf20Sopenharmony_ci			       const struct flcn_bl_dmem_desc_v1 *);
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_cistruct flcn_bl_dmem_desc_v2 {
808c2ecf20Sopenharmony_ci	u32 reserved[4];
818c2ecf20Sopenharmony_ci	u32 signature[4];
828c2ecf20Sopenharmony_ci	u32 ctx_dma;
838c2ecf20Sopenharmony_ci	u64 code_dma_base;
848c2ecf20Sopenharmony_ci	u32 non_sec_code_off;
858c2ecf20Sopenharmony_ci	u32 non_sec_code_size;
868c2ecf20Sopenharmony_ci	u32 sec_code_off;
878c2ecf20Sopenharmony_ci	u32 sec_code_size;
888c2ecf20Sopenharmony_ci	u32 code_entry_point;
898c2ecf20Sopenharmony_ci	u64 data_dma_base;
908c2ecf20Sopenharmony_ci	u32 data_size;
918c2ecf20Sopenharmony_ci	u32 argc;
928c2ecf20Sopenharmony_ci	u32 argv;
938c2ecf20Sopenharmony_ci} __packed;
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_civoid flcn_bl_dmem_desc_v2_dump(struct nvkm_subdev *,
968c2ecf20Sopenharmony_ci			       const struct flcn_bl_dmem_desc_v2 *);
978c2ecf20Sopenharmony_ci#endif
98