162306a36Sopenharmony_ci#ifndef __NVFW_SEC2_H__
262306a36Sopenharmony_ci#define __NVFW_SEC2_H__
362306a36Sopenharmony_ci
462306a36Sopenharmony_cistruct nv_sec2_args {
562306a36Sopenharmony_ci	u32 freq_hz;
662306a36Sopenharmony_ci	u32 falc_trace_size;
762306a36Sopenharmony_ci	u32 falc_trace_dma_base;
862306a36Sopenharmony_ci	u32 falc_trace_dma_idx;
962306a36Sopenharmony_ci	bool secure_mode;
1062306a36Sopenharmony_ci};
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#define NV_SEC2_UNIT_INIT                                                  0x01
1362306a36Sopenharmony_ci#define NV_SEC2_UNIT_UNLOAD                                                0x06
1462306a36Sopenharmony_ci#define NV_SEC2_UNIT_ACR                                                   0x08
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct nv_sec2_init_msg {
1762306a36Sopenharmony_ci	struct nvfw_falcon_msg hdr;
1862306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_INIT                                              0x00
1962306a36Sopenharmony_ci	u8 msg_type;
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	u8 num_queues;
2262306a36Sopenharmony_ci	u16 os_debug_entry_point;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	struct {
2562306a36Sopenharmony_ci		u32 offset;
2662306a36Sopenharmony_ci		u16 size;
2762306a36Sopenharmony_ci		u8 index;
2862306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_QUEUE_ID_CMDQ                                     0x00
2962306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_QUEUE_ID_MSGQ                                     0x01
3062306a36Sopenharmony_ci		u8 id;
3162306a36Sopenharmony_ci	} queue_info[2];
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	u32 sw_managed_area_offset;
3462306a36Sopenharmony_ci	u16 sw_managed_area_size;
3562306a36Sopenharmony_ci};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistruct nv_sec2_init_msg_v1 {
3862306a36Sopenharmony_ci	struct nvfw_falcon_msg hdr;
3962306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_INIT                                              0x00
4062306a36Sopenharmony_ci	u8 msg_type;
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	u8 num_queues;
4362306a36Sopenharmony_ci	u16 os_debug_entry_point;
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	struct {
4662306a36Sopenharmony_ci		u32 offset;
4762306a36Sopenharmony_ci		u16 size;
4862306a36Sopenharmony_ci		u8 index;
4962306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_QUEUE_ID_CMDQ                                     0x00
5062306a36Sopenharmony_ci#define NV_SEC2_INIT_MSG_QUEUE_ID_MSGQ                                     0x01
5162306a36Sopenharmony_ci		u8 id;
5262306a36Sopenharmony_ci	} queue_info[2];
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	u32 sw_managed_area_offset;
5562306a36Sopenharmony_ci	u16 sw_managed_area_size;
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	u32 unkn[8];
5862306a36Sopenharmony_ci};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cistruct nv_sec2_acr_cmd {
6162306a36Sopenharmony_ci	struct nvfw_falcon_cmd hdr;
6262306a36Sopenharmony_ci#define NV_SEC2_ACR_CMD_BOOTSTRAP_FALCON                                   0x00
6362306a36Sopenharmony_ci	u8 cmd_type;
6462306a36Sopenharmony_ci};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_cistruct nv_sec2_acr_msg {
6762306a36Sopenharmony_ci	struct nvfw_falcon_cmd hdr;
6862306a36Sopenharmony_ci	u8 msg_type;
6962306a36Sopenharmony_ci};
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_cistruct nv_sec2_acr_bootstrap_falcon_cmd {
7262306a36Sopenharmony_ci	struct nv_sec2_acr_cmd cmd;
7362306a36Sopenharmony_ci#define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_YES                 0x00000000
7462306a36Sopenharmony_ci#define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_NO                  0x00000001
7562306a36Sopenharmony_ci	u32 flags;
7662306a36Sopenharmony_ci	u32 falcon_id;
7762306a36Sopenharmony_ci};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cistruct nv_sec2_acr_bootstrap_falcon_msg {
8062306a36Sopenharmony_ci	struct nv_sec2_acr_msg msg;
8162306a36Sopenharmony_ci	u32 error_code;
8262306a36Sopenharmony_ci	u32 falcon_id;
8362306a36Sopenharmony_ci};
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci#define NV_SEC2_UNIT_V2_INIT   0x01
8662306a36Sopenharmony_ci#define NV_SEC2_UNIT_V2_UNLOAD 0x05
8762306a36Sopenharmony_ci#define NV_SEC2_UNIT_V2_ACR    0x07
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_cistruct nv_sec2_acr_bootstrap_falcon_cmd_v1 {
9062306a36Sopenharmony_ci	struct nv_sec2_acr_cmd cmd;
9162306a36Sopenharmony_ci#define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_YES                 0x00000000
9262306a36Sopenharmony_ci#define NV_SEC2_ACR_BOOTSTRAP_FALCON_FLAGS_RESET_NO                  0x00000001
9362306a36Sopenharmony_ci	u32 flags;
9462306a36Sopenharmony_ci	u32 falcon_id;
9562306a36Sopenharmony_ci	u32 unkn08;
9662306a36Sopenharmony_ci	u32 unkn0c;
9762306a36Sopenharmony_ci};
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_cistruct nv_sec2_acr_bootstrap_falcon_msg_v1 {
10062306a36Sopenharmony_ci	struct nv_sec2_acr_msg msg;
10162306a36Sopenharmony_ci	u32 error_code;
10262306a36Sopenharmony_ci	u32 falcon_id;
10362306a36Sopenharmony_ci	u32 unkn08;
10462306a36Sopenharmony_ci};
10562306a36Sopenharmony_ci#endif
106