1e65e175bSOded Gabbay /* SPDX-License-Identifier: GPL-2.0 2e65e175bSOded Gabbay * 3e65e175bSOded Gabbay * Copyright 2019-2021 HabanaLabs, Ltd. 4e65e175bSOded Gabbay * All Rights Reserved. 5e65e175bSOded Gabbay * 6e65e175bSOded Gabbay */ 7e65e175bSOded Gabbay 8e65e175bSOded Gabbay #ifndef GAUDI2_FW_IF_H 9e65e175bSOded Gabbay #define GAUDI2_FW_IF_H 10e65e175bSOded Gabbay 11e65e175bSOded Gabbay #define GAUDI2_EVENT_QUEUE_MSIX_IDX 0 12e65e175bSOded Gabbay 13e65e175bSOded Gabbay #define UBOOT_FW_OFFSET 0x100000 /* 1MB in SRAM */ 14e65e175bSOded Gabbay #define LINUX_FW_OFFSET 0x800000 /* 8BM in DDR */ 15e65e175bSOded Gabbay 16e65e175bSOded Gabbay #define GAUDI2_PLL_FREQ_LOW 200000000 /* 200 MHz */ 17e65e175bSOded Gabbay 18e65e175bSOded Gabbay #define GAUDI2_SP_SRAM_BASE_ADDR 0x27FE0000 19e65e175bSOded Gabbay #define GAUDI2_MAILBOX_BASE_ADDR 0x27FE1800 20e65e175bSOded Gabbay 21e65e175bSOded Gabbay #define GAUDI2_NUM_MME 4 22e65e175bSOded Gabbay 23bcace6f0SOded Gabbay #define NUM_OF_GPIOS_PER_PORT 16 24bcace6f0SOded Gabbay #define GAUDI2_WD_GPIO (62 % NUM_OF_GPIOS_PER_PORT) 25bcace6f0SOded Gabbay 26e65e175bSOded Gabbay #define GAUDI2_ARCPID_TX_MB_SIZE 0x1000 27e65e175bSOded Gabbay #define GAUDI2_ARCPID_RX_MB_SIZE 0x400 28e65e175bSOded Gabbay #define GAUDI2_ARM_TX_MB_SIZE 0x400 29e65e175bSOded Gabbay #define GAUDI2_ARM_RX_MB_SIZE 0x1800 30e65e175bSOded Gabbay 31e65e175bSOded Gabbay #define GAUDI2_DCCM_BASE_ADDR 0x27020000 32e65e175bSOded Gabbay 33e65e175bSOded Gabbay #define GAUDI2_ARM_TX_MB_ADDR GAUDI2_MAILBOX_BASE_ADDR 34e65e175bSOded Gabbay 35e65e175bSOded Gabbay #define GAUDI2_ARM_RX_MB_ADDR (GAUDI2_ARM_TX_MB_ADDR + \ 36e65e175bSOded Gabbay GAUDI2_ARM_TX_MB_SIZE) 37e65e175bSOded Gabbay 38bcace6f0SOded Gabbay #define GAUDI2_ARCPID_TX_MB_ADDR (GAUDI2_ARM_RX_MB_ADDR + GAUDI2_ARM_RX_MB_SIZE) 39bcace6f0SOded Gabbay 40bcace6f0SOded Gabbay #define GAUDI2_ARCPID_RX_MB_ADDR (GAUDI2_ARCPID_TX_MB_ADDR + GAUDI2_ARCPID_TX_MB_SIZE) 41bcace6f0SOded Gabbay 42e65e175bSOded Gabbay #define GAUDI2_ARM_TX_MB_OFFSET (GAUDI2_ARM_TX_MB_ADDR - \ 43e65e175bSOded Gabbay GAUDI2_SP_SRAM_BASE_ADDR) 44e65e175bSOded Gabbay 45e65e175bSOded Gabbay #define GAUDI2_ARM_RX_MB_OFFSET (GAUDI2_ARM_RX_MB_ADDR - \ 46e65e175bSOded Gabbay GAUDI2_SP_SRAM_BASE_ADDR) 47e65e175bSOded Gabbay 48e65e175bSOded Gabbay enum gaudi2_fw_status { 49e65e175bSOded Gabbay GAUDI2_PID_STATUS_UP = 0x1, /* PID on ARC0 is up */ 50e65e175bSOded Gabbay GAUDI2_ARM_STATUS_UP = 0x2, /* ARM Linux Boot complete */ 51e65e175bSOded Gabbay GAUDI2_MGMT_STATUS_UP = 0x3, /* ARC1 Mgmt is up */ 52e65e175bSOded Gabbay GAUDI2_STATUS_LAST = 0xFF 53e65e175bSOded Gabbay }; 54e65e175bSOded Gabbay 55e65e175bSOded Gabbay struct gaudi2_cold_rst_data { 56e65e175bSOded Gabbay union { 57e65e175bSOded Gabbay struct { 58e65e175bSOded Gabbay u32 recovery_flag: 1; 59e65e175bSOded Gabbay u32 validation_flag: 1; 60e65e175bSOded Gabbay u32 efuse_read_flag: 1; 61e65e175bSOded Gabbay u32 spsram_init_done : 1; 62e65e175bSOded Gabbay u32 fake_security_enable : 1; 63e65e175bSOded Gabbay u32 fake_sig_validation_en : 1; 64bcace6f0SOded Gabbay u32 bist_skip_enable : 1; 65bcace6f0SOded Gabbay u32 reserved1 : 1; 66*336b78c6SOded Gabbay u32 fake_bis_compliant : 1; 67*336b78c6SOded Gabbay u32 wd_rst_cause_arm : 1; 68*336b78c6SOded Gabbay u32 wd_rst_cause_arcpid : 1; 69*336b78c6SOded Gabbay u32 reserved : 21; 70e65e175bSOded Gabbay }; 71e65e175bSOded Gabbay __le32 data; 72e65e175bSOded Gabbay }; 73e65e175bSOded Gabbay }; 74e65e175bSOded Gabbay 75e65e175bSOded Gabbay enum gaudi2_rst_src { 76e65e175bSOded Gabbay HL_COLD_RST = 1, 77e65e175bSOded Gabbay HL_MANUAL_RST = 2, 78e65e175bSOded Gabbay HL_PRSTN_RST = 4, 79e65e175bSOded Gabbay HL_SOFT_RST = 8, 80e65e175bSOded Gabbay HL_WD_RST = 16, 81e65e175bSOded Gabbay HL_FW_ALL_RST = 32, 82e65e175bSOded Gabbay HL_SW_ALL_RST = 64, 83e65e175bSOded Gabbay HL_FLR_RST = 128, 84e65e175bSOded Gabbay HL_ECC_DERR_RST = 256 85e65e175bSOded Gabbay }; 86e65e175bSOded Gabbay 87e65e175bSOded Gabbay struct gaudi2_redundancy_ctx { 88bcace6f0SOded Gabbay __le32 redundant_hbm; 89bcace6f0SOded Gabbay __le32 redundant_edma; 90bcace6f0SOded Gabbay __le32 redundant_tpc; 91bcace6f0SOded Gabbay __le32 redundant_vdec; 92e65e175bSOded Gabbay __le64 hbm_mask; 93e65e175bSOded Gabbay __le64 edma_mask; 94e65e175bSOded Gabbay __le64 tpc_mask; 95e65e175bSOded Gabbay __le64 vdec_mask; 96e65e175bSOded Gabbay __le64 mme_mask; 97e65e175bSOded Gabbay __le64 nic_mask; 98e65e175bSOded Gabbay __le64 rtr_mask; 99e65e175bSOded Gabbay __le64 hmmu_hif_iso; 100e65e175bSOded Gabbay __le64 xbar_edge_iso; 101e65e175bSOded Gabbay __le64 hmmu_hif_mask; 102e65e175bSOded Gabbay __le64 xbar_edge_mask; 103e65e175bSOded Gabbay __u8 mme_pe_iso[GAUDI2_NUM_MME]; 104e65e175bSOded Gabbay __le32 full_hbm_mode; /* true on full (non binning hbm)*/ 105e65e175bSOded Gabbay } __packed; 106e65e175bSOded Gabbay 107e65e175bSOded Gabbay #endif /* GAUDI2_FW_IF_H */ 108