1*22dcda45SBen Skeggs /* SPDX-License-Identifier: MIT */ 2*22dcda45SBen Skeggs #ifndef __NVFW_FLCN_H__ 3*22dcda45SBen Skeggs #define __NVFW_FLCN_H__ 4*22dcda45SBen Skeggs #include <core/os.h> 5*22dcda45SBen Skeggs struct nvkm_subdev; 6*22dcda45SBen Skeggs 7*22dcda45SBen Skeggs struct loader_config { 8*22dcda45SBen Skeggs u32 dma_idx; 9*22dcda45SBen Skeggs u32 code_dma_base; 10*22dcda45SBen Skeggs u32 code_size_total; 11*22dcda45SBen Skeggs u32 code_size_to_load; 12*22dcda45SBen Skeggs u32 code_entry_point; 13*22dcda45SBen Skeggs u32 data_dma_base; 14*22dcda45SBen Skeggs u32 data_size; 15*22dcda45SBen Skeggs u32 overlay_dma_base; 16*22dcda45SBen Skeggs u32 argc; 17*22dcda45SBen Skeggs u32 argv; 18*22dcda45SBen Skeggs u32 code_dma_base1; 19*22dcda45SBen Skeggs u32 data_dma_base1; 20*22dcda45SBen Skeggs u32 overlay_dma_base1; 21*22dcda45SBen Skeggs }; 22*22dcda45SBen Skeggs 23*22dcda45SBen Skeggs void 24*22dcda45SBen Skeggs loader_config_dump(struct nvkm_subdev *, const struct loader_config *); 25*22dcda45SBen Skeggs 26*22dcda45SBen Skeggs struct loader_config_v1 { 27*22dcda45SBen Skeggs u32 reserved; 28*22dcda45SBen Skeggs u32 dma_idx; 29*22dcda45SBen Skeggs u64 code_dma_base; 30*22dcda45SBen Skeggs u32 code_size_total; 31*22dcda45SBen Skeggs u32 code_size_to_load; 32*22dcda45SBen Skeggs u32 code_entry_point; 33*22dcda45SBen Skeggs u64 data_dma_base; 34*22dcda45SBen Skeggs u32 data_size; 35*22dcda45SBen Skeggs u64 overlay_dma_base; 36*22dcda45SBen Skeggs u32 argc; 37*22dcda45SBen Skeggs u32 argv; 38*22dcda45SBen Skeggs } __packed; 39*22dcda45SBen Skeggs 40*22dcda45SBen Skeggs void 41*22dcda45SBen Skeggs loader_config_v1_dump(struct nvkm_subdev *, const struct loader_config_v1 *); 42*22dcda45SBen Skeggs 43*22dcda45SBen Skeggs struct flcn_bl_dmem_desc { 44*22dcda45SBen Skeggs u32 reserved[4]; 45*22dcda45SBen Skeggs u32 signature[4]; 46*22dcda45SBen Skeggs u32 ctx_dma; 47*22dcda45SBen Skeggs u32 code_dma_base; 48*22dcda45SBen Skeggs u32 non_sec_code_off; 49*22dcda45SBen Skeggs u32 non_sec_code_size; 50*22dcda45SBen Skeggs u32 sec_code_off; 51*22dcda45SBen Skeggs u32 sec_code_size; 52*22dcda45SBen Skeggs u32 code_entry_point; 53*22dcda45SBen Skeggs u32 data_dma_base; 54*22dcda45SBen Skeggs u32 data_size; 55*22dcda45SBen Skeggs u32 code_dma_base1; 56*22dcda45SBen Skeggs u32 data_dma_base1; 57*22dcda45SBen Skeggs }; 58*22dcda45SBen Skeggs 59*22dcda45SBen Skeggs void 60*22dcda45SBen Skeggs flcn_bl_dmem_desc_dump(struct nvkm_subdev *, const struct flcn_bl_dmem_desc *); 61*22dcda45SBen Skeggs 62*22dcda45SBen Skeggs struct flcn_bl_dmem_desc_v1 { 63*22dcda45SBen Skeggs u32 reserved[4]; 64*22dcda45SBen Skeggs u32 signature[4]; 65*22dcda45SBen Skeggs u32 ctx_dma; 66*22dcda45SBen Skeggs u64 code_dma_base; 67*22dcda45SBen Skeggs u32 non_sec_code_off; 68*22dcda45SBen Skeggs u32 non_sec_code_size; 69*22dcda45SBen Skeggs u32 sec_code_off; 70*22dcda45SBen Skeggs u32 sec_code_size; 71*22dcda45SBen Skeggs u32 code_entry_point; 72*22dcda45SBen Skeggs u64 data_dma_base; 73*22dcda45SBen Skeggs u32 data_size; 74*22dcda45SBen Skeggs } __packed; 75*22dcda45SBen Skeggs 76*22dcda45SBen Skeggs void flcn_bl_dmem_desc_v1_dump(struct nvkm_subdev *, 77*22dcda45SBen Skeggs const struct flcn_bl_dmem_desc_v1 *); 78*22dcda45SBen Skeggs 79*22dcda45SBen Skeggs struct flcn_bl_dmem_desc_v2 { 80*22dcda45SBen Skeggs u32 reserved[4]; 81*22dcda45SBen Skeggs u32 signature[4]; 82*22dcda45SBen Skeggs u32 ctx_dma; 83*22dcda45SBen Skeggs u64 code_dma_base; 84*22dcda45SBen Skeggs u32 non_sec_code_off; 85*22dcda45SBen Skeggs u32 non_sec_code_size; 86*22dcda45SBen Skeggs u32 sec_code_off; 87*22dcda45SBen Skeggs u32 sec_code_size; 88*22dcda45SBen Skeggs u32 code_entry_point; 89*22dcda45SBen Skeggs u64 data_dma_base; 90*22dcda45SBen Skeggs u32 data_size; 91*22dcda45SBen Skeggs u32 argc; 92*22dcda45SBen Skeggs u32 argv; 93*22dcda45SBen Skeggs } __packed; 94*22dcda45SBen Skeggs 95*22dcda45SBen Skeggs void flcn_bl_dmem_desc_v2_dump(struct nvkm_subdev *, 96*22dcda45SBen Skeggs const struct flcn_bl_dmem_desc_v2 *); 97*22dcda45SBen Skeggs #endif 98