blob: 90096e942ce2df6ec758bd6f3ca3fe1d502f66e9 [file] [log] [blame]
Rex-BC Chen749b2112021-09-28 11:24:09 +08001/*
2 * Copyright (c) 2021, ARM Limited and Contributors. All rights reserved.
jason-ch chenfa82b9b2021-11-16 09:48:20 +08003 * Copyright (c) 2021, MediaTek Inc. All rights reserved.
Rex-BC Chen749b2112021-09-28 11:24:09 +08004 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef PLATFORM_DEF_H
9#define PLATFORM_DEF_H
10
jason-ch chenfa82b9b2021-11-16 09:48:20 +080011#define PLAT_PRIMARY_CPU (0x0)
Rex-BC Chen749b2112021-09-28 11:24:09 +080012
13#define MT_GIC_BASE (0x0C000000)
14#define MCUCFG_BASE (0x0C530000)
15#define IO_PHYS (0x10000000)
16
17/* Aggregate of all devices for MMU mapping */
18#define MTK_DEV_RNG0_BASE IO_PHYS
jason-ch chenfa82b9b2021-11-16 09:48:20 +080019#define MTK_DEV_RNG0_SIZE (0x10000000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080020#define MTK_DEV_RNG2_BASE MT_GIC_BASE
jason-ch chenfa82b9b2021-11-16 09:48:20 +080021#define MTK_DEV_RNG2_SIZE (0x600000)
22#define MTK_MCDI_SRAM_BASE (0x11B000)
23#define MTK_MCDI_SRAM_MAP_SIZE (0x1000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080024
jason-ch chenfa82b9b2021-11-16 09:48:20 +080025#define TOPCKGEN_BASE (IO_PHYS + 0x00000000)
26#define INFRACFG_AO_BASE (IO_PHYS + 0x00001000)
developerc3dabd82021-11-08 11:30:40 +080027#define SPM_BASE (IO_PHYS + 0x00006000)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080028#define APMIXEDSYS (IO_PHYS + 0x0000C000)
29#define SSPM_MBOX_BASE (IO_PHYS + 0x00480000)
30#define PERICFG_AO_BASE (IO_PHYS + 0x01003000)
31#define VPPSYS0_BASE (IO_PHYS + 0x04000000)
32#define VPPSYS1_BASE (IO_PHYS + 0x04f00000)
33#define VDOSYS0_BASE (IO_PHYS + 0x0C01A000)
34#define VDOSYS1_BASE (IO_PHYS + 0x0C100000)
developerc3dabd82021-11-08 11:30:40 +080035
Guodong Liu532016e2021-10-15 16:52:18 +080036/*******************************************************************************
37 * GPIO related constants
38 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080039#define TOPCKGEN_BASE (IO_PHYS + 0x00000000)
40#define INFRACFG_AO_BASE (IO_PHYS + 0x00001000)
Guodong Liu532016e2021-10-15 16:52:18 +080041#define GPIO_BASE (IO_PHYS + 0x00005000)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080042#define SPM_BASE (IO_PHYS + 0x00006000)
Guodong Liu532016e2021-10-15 16:52:18 +080043#define IOCFG_LT_BASE (IO_PHYS + 0x00002000)
44#define IOCFG_LM_BASE (IO_PHYS + 0x00002200)
45#define IOCFG_LB_BASE (IO_PHYS + 0x00002400)
46#define IOCFG_BL_BASE (IO_PHYS + 0x00002600)
47#define IOCFG_RB_BASE (IO_PHYS + 0x00002A00)
48#define IOCFG_RT_BASE (IO_PHYS + 0x00002C00)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080049#define APMIXEDSYS (IO_PHYS + 0x0000C000)
50#define MMSYS_BASE (IO_PHYS + 0x04000000)
51#define MDPSYS_BASE (IO_PHYS + 0x0B000000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080052
53/*******************************************************************************
54 * UART related constants
55 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080056#define UART0_BASE (IO_PHYS + 0x01002000)
57#define UART1_BASE (IO_PHYS + 0x01003000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080058
jason-ch chenfa82b9b2021-11-16 09:48:20 +080059#define UART_BAUDRATE (115200)
Rex-BC Chen749b2112021-09-28 11:24:09 +080060
61/*******************************************************************************
James Lo4ac7a412021-10-06 18:12:30 +080062 * PWRAP related constants
63 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080064#define PMIC_WRAP_BASE (IO_PHYS + 0x0000D000)
James Lo4ac7a412021-10-06 18:12:30 +080065
66/*******************************************************************************
Penny Janfb70fb42021-10-03 10:11:04 +080067 * EMI MPU related constants
68 ******************************************************************************/
69#define EMI_MPU_BASE (IO_PHYS + 0x0021B000)
70
71/*******************************************************************************
Christine Zhuccd26002021-10-11 21:29:58 +080072 * GIC-600 & interrupt handling related constants
73 ******************************************************************************/
74/* Base MTK_platform compatible GIC memory map */
jason-ch chenfa82b9b2021-11-16 09:48:20 +080075#define BASE_GICD_BASE MT_GIC_BASE
76#define MT_GIC_RDIST_BASE (MT_GIC_BASE + 0x40000)
Christine Zhuccd26002021-10-11 21:29:58 +080077
jason-ch chenfa82b9b2021-11-16 09:48:20 +080078#define SYS_CIRQ_BASE (IO_PHYS + 0x204000)
79#define CIRQ_REG_NUM (11)
80#define CIRQ_IRQ_NUM (326)
81#define CIRQ_SPI_START (64)
82#define MD_WDT_IRQ_BIT_ID (107)
Christine Zhuccd26002021-10-11 21:29:58 +080083/*******************************************************************************
Rex-BC Chen749b2112021-09-28 11:24:09 +080084 * System counter frequency related constants
85 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080086#define SYS_COUNTER_FREQ_IN_TICKS (13000000)
87#define SYS_COUNTER_FREQ_IN_MHZ (13)
Rex-BC Chen749b2112021-09-28 11:24:09 +080088
89/*******************************************************************************
90 * Platform binary types for linking
91 ******************************************************************************/
92#define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
93#define PLATFORM_LINKER_ARCH aarch64
94
95/*******************************************************************************
96 * Generic platform constants
97 ******************************************************************************/
98#define PLATFORM_STACK_SIZE 0x800
99
100#define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n"
101
102#define PLAT_MAX_PWR_LVL U(3)
103#define PLAT_MAX_RET_STATE U(1)
104#define PLAT_MAX_OFF_STATE U(9)
105
106#define PLATFORM_SYSTEM_COUNT U(1)
107#define PLATFORM_MCUSYS_COUNT U(1)
108#define PLATFORM_CLUSTER_COUNT U(1)
109#define PLATFORM_CLUSTER0_CORE_COUNT U(8)
110#define PLATFORM_CLUSTER1_CORE_COUNT U(0)
111
112#define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER0_CORE_COUNT)
113#define PLATFORM_MAX_CPUS_PER_CLUSTER U(8)
114
115#define SOC_CHIP_ID U(0x8186)
116
117/*******************************************************************************
118 * Platform memory map related constants
119 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800120#define TZRAM_BASE (0x54600000)
121#define TZRAM_SIZE (0x00030000)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800122
123/*******************************************************************************
124 * BL31 specific defines.
125 ******************************************************************************/
126/*
127 * Put BL3-1 at the top of the Trusted SRAM (just below the shared memory, if
128 * present). BL31_BASE is calculated using the current BL3-1 debug size plus a
129 * little space for growth.
130 */
131#define BL31_BASE (TZRAM_BASE + 0x1000)
132#define BL31_LIMIT (TZRAM_BASE + TZRAM_SIZE)
133
134/*******************************************************************************
135 * Platform specific page table and MMU setup constants
136 ******************************************************************************/
137#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
138#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800139#define MAX_XLAT_TABLES (16)
140#define MAX_MMAP_REGIONS (16)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800141
142/*******************************************************************************
143 * Declarations and constants to access the mailboxes safely. Each mailbox is
144 * aligned on the biggest cache line size in the platform. This is known only
145 * to the platform as it might have a combination of integrated and external
146 * caches. Such alignment ensures that two maiboxes do not sit on the same cache
147 * line at any cache level. They could belong to different cpus/clusters &
148 * get written while being protected by different locks causing corruption of
149 * a valid mailbox address.
150 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800151#define CACHE_WRITEBACK_SHIFT (6)
152#define CACHE_WRITEBACK_GRANULE BIT(CACHE_WRITEBACK_SHIFT)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800153#endif /* PLATFORM_DEF_H */