186ce2a71SBen Skeggs #ifndef __NVFW_SEC2_H__ 286ce2a71SBen Skeggs #define __NVFW_SEC2_H__ 386ce2a71SBen Skeggs 47a4dde71SBen Skeggs struct nv_sec2_args { 57a4dde71SBen Skeggs u32 freq_hz; 67a4dde71SBen Skeggs u32 falc_trace_size; 77a4dde71SBen Skeggs u32 falc_trace_dma_base; 87a4dde71SBen Skeggs u32 falc_trace_dma_idx; 97a4dde71SBen Skeggs bool secure_mode; 107a4dde71SBen Skeggs }; 117a4dde71SBen Skeggs 12d114a139SBen Skeggs #define NV_SEC2_UNIT_INIT 0x01 133b330f08SBen Skeggs #define NV_SEC2_UNIT_UNLOAD 0x06 1486ce2a71SBen Skeggs #define NV_SEC2_UNIT_ACR 0x08 1586ce2a71SBen Skeggs 16d114a139SBen Skeggs struct nv_sec2_init_msg { 17b448a266STimur Tabi struct nvfw_falcon_msg hdr; 18d114a139SBen Skeggs #define NV_SEC2_INIT_MSG_INIT 0x00 19d114a139SBen Skeggs u8 msg_type; 20d114a139SBen Skeggs 21d114a139SBen Skeggs u8 num_queues; 22d114a139SBen Skeggs u16 os_debug_entry_point; 23d114a139SBen Skeggs 24d114a139SBen Skeggs struct { 25d114a139SBen Skeggs u32 offset; 26d114a139SBen Skeggs u16 size; 27d114a139SBen Skeggs u8 index; 28d114a139SBen Skeggs #define NV_SEC2_INIT_MSG_QUEUE_ID_CMDQ 0x00 29d114a139SBen Skeggs #define NV_SEC2_INIT_MSG_QUEUE_ID_MSGQ 0x01 30d114a139SBen Skeggs u8 id; 31d114a139SBen Skeggs } queue_info[2]; 32d114a139SBen Skeggs 33d114a139SBen Skeggs u32 sw_managed_area_offset; 34d114a139SBen Skeggs u16 sw_managed_area_size; 35d114a139SBen Skeggs }; 36d114a139SBen Skeggs 37*4b569dedSBen Skeggs struct nv_sec2_init_msg_v1 { 38*4b569dedSBen Skeggs struct nvfw_falcon_msg hdr; 39*4b569dedSBen Skeggs #define NV_SEC2_INIT_MSG_INIT 0x00 40*4b569dedSBen Skeggs u8 msg_type; 41*4b569dedSBen Skeggs 42*4b569dedSBen Skeggs u8 num_queues; 43*4b569dedSBen Skeggs u16 os_debug_entry_point; 44*4b569dedSBen Skeggs 45*4b569dedSBen Skeggs struct { 46*4b569dedSBen Skeggs u32 offset; 47*4b569dedSBen Skeggs u16 size; 48*4b569dedSBen Skeggs u8 index; 49*4b569dedSBen Skeggs #define NV_SEC2_INIT_MSG_QUEUE_ID_CMDQ 0x00 50*4b569dedSBen Skeggs #define NV_SEC2_INIT_MSG_QUEUE_ID_MSGQ 0x01 51*4b569dedSBen Skeggs u8 id; 52*4b569dedSBen Skeggs } queue_info[2]; 53*4b569dedSBen Skeggs 54*4b569dedSBen Skeggs u32 sw_managed_area_offset; 55*4b569dedSBen Skeggs u16 sw_managed_area_size; 56*4b569dedSBen Skeggs 57*4b569dedSBen Skeggs u32 unkn[8]; 58*4b569dedSBen Skeggs }; 59*4b569dedSBen Skeggs 6086ce2a71SBen Skeggs struct nv_sec2_acr_cmd { 61b448a266STimur Tabi struct nvfw_falcon_cmd hdr; 6286ce2a71SBen Skeggs #define NV_SEC2_ACR_CMD_BOOTSTRAP_FALCON 0x00 6386ce2a71SBen Skeggs u8 cmd_type; 6486ce2a71SBen Skeggs }; 6586ce2a71SBen Skeggs 6686ce2a71SBen Skeggs struct nv_sec2_acr_msg { 67b448a266STimur Tabi struct nvfw_falcon_cmd hdr; 6886ce2a71SBen Skeggs u8 msg_type; 6986ce2a71SBen Skeggs }; 7086ce2a71SBen Skeggs 7186ce2a71SBen Skeggs struct nv_sec2_acr_bootstrap_falcon_cmd { 7286ce2a71SBen Skeggs struct nv_sec2_acr_cmd cmd; 7386ce2a71SBen Skeggs #define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_YES 0x00000000 7486ce2a71SBen Skeggs #define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_NO 0x00000001 7586ce2a71SBen Skeggs u32 flags; 7686ce2a71SBen Skeggs u32 falcon_id; 7786ce2a71SBen Skeggs }; 7886ce2a71SBen Skeggs 7986ce2a71SBen Skeggs struct nv_sec2_acr_bootstrap_falcon_msg { 8086ce2a71SBen Skeggs struct nv_sec2_acr_msg msg; 8186ce2a71SBen Skeggs u32 error_code; 8286ce2a71SBen Skeggs u32 falcon_id; 8386ce2a71SBen Skeggs }; 843b330f08SBen Skeggs 853b330f08SBen Skeggs #define NV_SEC2_UNIT_V2_INIT 0x01 863b330f08SBen Skeggs #define NV_SEC2_UNIT_V2_UNLOAD 0x05 873b330f08SBen Skeggs #define NV_SEC2_UNIT_V2_ACR 0x07 88*4b569dedSBen Skeggs 89*4b569dedSBen Skeggs struct nv_sec2_acr_bootstrap_falcon_cmd_v1 { 90*4b569dedSBen Skeggs struct nv_sec2_acr_cmd cmd; 91*4b569dedSBen Skeggs #define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_YES 0x00000000 92*4b569dedSBen Skeggs #define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_NO 0x00000001 93*4b569dedSBen Skeggs u32 flags; 94*4b569dedSBen Skeggs u32 falcon_id; 95*4b569dedSBen Skeggs u32 unkn08; 96*4b569dedSBen Skeggs u32 unkn0c; 97*4b569dedSBen Skeggs }; 98*4b569dedSBen Skeggs 99*4b569dedSBen Skeggs struct nv_sec2_acr_bootstrap_falcon_msg_v1 { 100*4b569dedSBen Skeggs struct nv_sec2_acr_msg msg; 101*4b569dedSBen Skeggs u32 error_code; 102*4b569dedSBen Skeggs u32 falcon_id; 103*4b569dedSBen Skeggs u32 unkn08; 104*4b569dedSBen Skeggs }; 10586ce2a71SBen Skeggs #endif 106