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