| /* SPDX-License-Identifier: GPL-2.0 |
| * |
| * Copyright 2019-2021 HabanaLabs, Ltd. |
| * All Rights Reserved. |
| * |
| */ |
| |
| #ifndef GAUDI2_FW_IF_H |
| #define GAUDI2_FW_IF_H |
| |
| #define GAUDI2_EVENT_QUEUE_MSIX_IDX 0 |
| |
| #define UBOOT_FW_OFFSET 0x100000 /* 1MB in SRAM */ |
| #define LINUX_FW_OFFSET 0x800000 /* 8BM in DDR */ |
| |
| #define GAUDI2_PLL_FREQ_LOW 200000000 /* 200 MHz */ |
| |
| #define GAUDI2_SP_SRAM_BASE_ADDR 0x27FE0000 |
| #define GAUDI2_MAILBOX_BASE_ADDR 0x27FE1800 |
| |
| #define GAUDI2_NUM_MME 4 |
| |
| #define GAUDI2_ARCPID_TX_MB_SIZE 0x1000 |
| #define GAUDI2_ARCPID_RX_MB_SIZE 0x400 |
| #define GAUDI2_ARM_TX_MB_SIZE 0x400 |
| #define GAUDI2_ARM_RX_MB_SIZE 0x1800 |
| |
| #define GAUDI2_DCCM_BASE_ADDR 0x27020000 |
| #define GAUDI2_ARCPID_TX_MB_ADDR GAUDI2_DCCM_BASE_ADDR |
| |
| #define GAUDI2_ARCPID_RX_MB_ADDR (GAUDI2_ARCPID_TX_MB_ADDR + \ |
| GAUDI2_ARCPID_TX_MB_SIZE) |
| |
| #define GAUDI2_ARM_TX_MB_ADDR GAUDI2_MAILBOX_BASE_ADDR |
| |
| #define GAUDI2_ARM_RX_MB_ADDR (GAUDI2_ARM_TX_MB_ADDR + \ |
| GAUDI2_ARM_TX_MB_SIZE) |
| |
| #define GAUDI2_ARM_TX_MB_OFFSET (GAUDI2_ARM_TX_MB_ADDR - \ |
| GAUDI2_SP_SRAM_BASE_ADDR) |
| |
| #define GAUDI2_ARM_RX_MB_OFFSET (GAUDI2_ARM_RX_MB_ADDR - \ |
| GAUDI2_SP_SRAM_BASE_ADDR) |
| |
| enum gaudi2_fw_status { |
| GAUDI2_PID_STATUS_UP = 0x1, /* PID on ARC0 is up */ |
| GAUDI2_ARM_STATUS_UP = 0x2, /* ARM Linux Boot complete */ |
| GAUDI2_MGMT_STATUS_UP = 0x3, /* ARC1 Mgmt is up */ |
| GAUDI2_STATUS_LAST = 0xFF |
| }; |
| |
| struct gaudi2_cold_rst_data { |
| union { |
| struct { |
| u32 recovery_flag: 1; |
| u32 validation_flag: 1; |
| u32 efuse_read_flag: 1; |
| u32 spsram_init_done : 1; |
| u32 fake_security_enable : 1; |
| u32 fake_sig_validation_en : 1; |
| u32 reserved : 26; |
| }; |
| __le32 data; |
| }; |
| }; |
| |
| enum gaudi2_rst_src { |
| HL_COLD_RST = 1, |
| HL_MANUAL_RST = 2, |
| HL_PRSTN_RST = 4, |
| HL_SOFT_RST = 8, |
| HL_WD_RST = 16, |
| HL_FW_ALL_RST = 32, |
| HL_SW_ALL_RST = 64, |
| HL_FLR_RST = 128, |
| HL_ECC_DERR_RST = 256 |
| }; |
| |
| struct gaudi2_redundancy_ctx { |
| int redundant_hbm; |
| int redundant_edma; |
| int redundant_tpc; |
| int redundant_vdec; |
| __le64 hbm_mask; |
| __le64 edma_mask; |
| __le64 tpc_mask; |
| __le64 vdec_mask; |
| __le64 mme_mask; |
| __le64 nic_mask; |
| __le64 rtr_mask; |
| __le64 hmmu_hif_iso; |
| __le64 xbar_edge_iso; |
| __le64 hmmu_hif_mask; |
| __le64 xbar_edge_mask; |
| __u8 mme_pe_iso[GAUDI2_NUM_MME]; |
| __le32 full_hbm_mode; /* true on full (non binning hbm)*/ |
| } __packed; |
| |
| #endif /* GAUDI2_FW_IF_H */ |