162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci *
362306a36Sopenharmony_ci * Copyright 2020-2022 HabanaLabs, Ltd.
462306a36Sopenharmony_ci * All Rights Reserved.
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef GAUDI2_H
962306a36Sopenharmony_ci#define GAUDI2_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define SRAM_CFG_BAR_ID		0
1262306a36Sopenharmony_ci#define MSIX_BAR_ID		2
1362306a36Sopenharmony_ci#define DRAM_BAR_ID		4
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/* Refers to CFG_REGION_SIZE, BAR0_RSRVD_SIZE and SRAM_SIZE */
1662306a36Sopenharmony_ci#define CFG_BAR_SIZE		0x10000000ull		/* 256MB */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define MSIX_BAR_SIZE		0x4000ull		/* 16KB */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#define CFG_BASE		0x1000007FF8000000ull
2162306a36Sopenharmony_ci#define CFG_SIZE		0x8000000ull		/* 96MB CFG + 32MB DBG*/
2262306a36Sopenharmony_ci#define CFG_REGION_SIZE		0xC000000ull		/* 192MB */
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define STM_FLASH_BASE_ADDR	0x1000007FF4000000ull	/* Not 256MB aligned */
2562306a36Sopenharmony_ci#define STM_FLASH_ALIGNED_OFF	0x4000000ull		/* 256 MB alignment */
2662306a36Sopenharmony_ci#define STM_FLASH_SIZE		0x2000000ull		/* 32MB */
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#define SPI_FLASH_BASE_ADDR	0x1000007FF6000000ull
2962306a36Sopenharmony_ci#define SPI_FLASH_SIZE		0x1000000ull		/* 16MB */
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define SCRATCHPAD_SRAM_ADDR	0x1000007FF7FE0000ull
3262306a36Sopenharmony_ci#define SCRATCHPAD_SRAM_SIZE	0x10000ull		/* 64KB */
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#define PCIE_FW_SRAM_ADDR	0x1000007FF7FF0000ull
3562306a36Sopenharmony_ci#define PCIE_FW_SRAM_SIZE	0x8000			/* 32KB */
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#define BAR0_RSRVD_BASE_ADDR	0x1000FFFFFC000000ull
3862306a36Sopenharmony_ci#define BAR0_RSRVD_SIZE		0x1000000ull		/* 16MB */
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci#define SRAM_BASE_ADDR		0x1000FFFFFD000000ull
4162306a36Sopenharmony_ci#define SRAM_SIZE		0x3000000ull		/* 48MB */
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci#define DRAM_PHYS_BASE		0x1001000000000000ull
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/* every hint address is masked accordingly */
4662306a36Sopenharmony_ci#define DRAM_VA_HINT_MASK	0xFFFFFFFFFFFFull	/* 48bit mask */
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci#define HOST_PHYS_BASE_0	0x0000000000000000ull
4962306a36Sopenharmony_ci#define HOST_PHYS_SIZE_0	0x0100000000000000ull	/* 64PB (56 bits) */
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci#define HOST_PHYS_BASE_1	0xFF00000000000000ull
5262306a36Sopenharmony_ci#define HOST_PHYS_SIZE_1	0x0100000000000000ull	/* 64PB (56 bits) */
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HBM_START	0x1001500000000000ull
5562306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HBM_END	0x10016FFFFFFFFFFFull
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define RESERVED_VA_FOR_VIRTUAL_MSIX_DOORBELL_START	0xFFF077FFFFFF0000ull
5862306a36Sopenharmony_ci#define RESERVED_VA_FOR_VIRTUAL_MSIX_DOORBELL_END	0xFFF077FFFFFFFFFFull
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HOST_START	0xFFF0780000000000ull
6162306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HOST_END	0xFFF07FFFFFFFFFFFull
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HOST_HPAGE_START	0xFFF0F80000000000ull
6462306a36Sopenharmony_ci#define RESERVED_VA_RANGE_FOR_ARC_ON_HOST_HPAGE_END	0xFFF0FFFFFFFFFFFFull
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci#define RESERVED_MSIX_UNEXPECTED_USER_ERROR_INTERRUPT	256
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#define GAUDI2_MSIX_ENTRIES	512
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define QMAN_PQ_ENTRY_SIZE	16			/* Bytes */
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#define MAX_ASID		2
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci#define NUM_ARC_CPUS			69
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci/* Every ARC cpu in the system contains a single DCCM block
7762306a36Sopenharmony_ci * except MME and Scheduler ARCs which contain 2 DCCM blocks
7862306a36Sopenharmony_ci */
7962306a36Sopenharmony_ci#define ARC_DCCM_BLOCK_SIZE		0x8000
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci#define NUM_OF_DCORES			4
8262306a36Sopenharmony_ci#define NUM_OF_SFT			4
8362306a36Sopenharmony_ci#define NUM_OF_PSOC_ARC			2
8462306a36Sopenharmony_ci#define NUM_OF_SCHEDULER_ARC		6
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci#define NUM_OF_PQ_PER_QMAN		4
8762306a36Sopenharmony_ci#define NUM_OF_CQ_PER_QMAN		5
8862306a36Sopenharmony_ci#define NUM_OF_CP_PER_QMAN		5
8962306a36Sopenharmony_ci#define NUM_OF_EDMA_PER_DCORE		2
9062306a36Sopenharmony_ci#define NUM_OF_HIF_PER_DCORE		4
9162306a36Sopenharmony_ci#define NUM_OF_PDMA			2
9262306a36Sopenharmony_ci#define NUM_OF_TPC_PER_DCORE		6
9362306a36Sopenharmony_ci#define NUM_DCORE0_TPC			7
9462306a36Sopenharmony_ci#define NUM_DCORE1_TPC			NUM_OF_TPC_PER_DCORE
9562306a36Sopenharmony_ci#define NUM_DCORE2_TPC			NUM_OF_TPC_PER_DCORE
9662306a36Sopenharmony_ci#define NUM_DCORE3_TPC			NUM_OF_TPC_PER_DCORE
9762306a36Sopenharmony_ci#define NUM_OF_DEC_PER_DCORE		2
9862306a36Sopenharmony_ci#define NUM_OF_ROT			2
9962306a36Sopenharmony_ci#define NUM_OF_HMMU_PER_DCORE		4
10062306a36Sopenharmony_ci#define NUM_OF_MME_PER_DCORE		1
10162306a36Sopenharmony_ci#define NUM_OF_MME_SBTE_PER_DCORE	5
10262306a36Sopenharmony_ci#define NUM_OF_MME_WB_PER_DCORE		2
10362306a36Sopenharmony_ci#define NUM_OF_RTR_PER_DCORE		8
10462306a36Sopenharmony_ci#define NUM_OF_VDEC_PER_DCORE		2
10562306a36Sopenharmony_ci#define NUM_OF_IF_RTR_PER_SFT		3
10662306a36Sopenharmony_ci#define NUM_OF_PCIE_VDEC		2
10762306a36Sopenharmony_ci#define NUM_OF_ARC_FARMS_ARC		4
10862306a36Sopenharmony_ci#define NUM_OF_XBAR			4
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define TPC_NUM_OF_KERNEL_TENSORS	16
11162306a36Sopenharmony_ci#define TPC_NUM_OF_QM_TENSORS		16
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci#define MME_NUM_OF_LFSR_SEEDS		256
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci#define NIC_NUMBER_OF_MACROS		12
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define NIC_NUMBER_OF_QM_PER_MACRO	2
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci#define NIC_NUMBER_OF_ENGINES		(NIC_NUMBER_OF_MACROS * 2)
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci#define NIC_MAX_NUMBER_OF_PORTS		(NIC_NUMBER_OF_ENGINES * 2)
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci#define DEVICE_CACHE_LINE_SIZE		128
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci#endif /* GAUDI2_H */
126