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