blob: f3d15f35abdf3dbb981da67f6ec30d9a99414bd0 [file] [log] [blame]
Rex-BC Chen749b2112021-09-28 11:24:09 +08001/*
Yidi Lin56ff58f2022-07-08 16:16:09 +08002 * Copyright (c) 2021-2022, ARM Limited and Contributors. All rights reserved.
3 * Copyright (c) 2021-2022, 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)
Yidi Lin56ff58f2022-07-08 16:16:09 +080029#define SSPM_MCDI_SHARE_SRAM (IO_PHYS + 0x00420000)
30#define SSPM_CFGREG_BASE (IO_PHYS + 0x00440000) /* SSPM view: 0x30040000 */
jason-ch chenfa82b9b2021-11-16 09:48:20 +080031#define SSPM_MBOX_BASE (IO_PHYS + 0x00480000)
32#define PERICFG_AO_BASE (IO_PHYS + 0x01003000)
33#define VPPSYS0_BASE (IO_PHYS + 0x04000000)
34#define VPPSYS1_BASE (IO_PHYS + 0x04f00000)
35#define VDOSYS0_BASE (IO_PHYS + 0x0C01A000)
36#define VDOSYS1_BASE (IO_PHYS + 0x0C100000)
developerc3dabd82021-11-08 11:30:40 +080037
Guodong Liu532016e2021-10-15 16:52:18 +080038/*******************************************************************************
39 * GPIO related constants
40 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080041#define TOPCKGEN_BASE (IO_PHYS + 0x00000000)
42#define INFRACFG_AO_BASE (IO_PHYS + 0x00001000)
Guodong Liu532016e2021-10-15 16:52:18 +080043#define GPIO_BASE (IO_PHYS + 0x00005000)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080044#define SPM_BASE (IO_PHYS + 0x00006000)
Guodong Liu532016e2021-10-15 16:52:18 +080045#define IOCFG_LT_BASE (IO_PHYS + 0x00002000)
46#define IOCFG_LM_BASE (IO_PHYS + 0x00002200)
47#define IOCFG_LB_BASE (IO_PHYS + 0x00002400)
48#define IOCFG_BL_BASE (IO_PHYS + 0x00002600)
49#define IOCFG_RB_BASE (IO_PHYS + 0x00002A00)
50#define IOCFG_RT_BASE (IO_PHYS + 0x00002C00)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080051#define APMIXEDSYS (IO_PHYS + 0x0000C000)
jason-ch chena07e3ea2021-11-16 10:18:46 +080052#define DVFSRC_BASE (IO_PHYS + 0x00012000)
jason-ch chenfa82b9b2021-11-16 09:48:20 +080053#define MMSYS_BASE (IO_PHYS + 0x04000000)
54#define MDPSYS_BASE (IO_PHYS + 0x0B000000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080055
56/*******************************************************************************
57 * UART related constants
58 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080059#define UART0_BASE (IO_PHYS + 0x01002000)
60#define UART1_BASE (IO_PHYS + 0x01003000)
Rex-BC Chen749b2112021-09-28 11:24:09 +080061
jason-ch chenfa82b9b2021-11-16 09:48:20 +080062#define UART_BAUDRATE (115200)
Rex-BC Chen749b2112021-09-28 11:24:09 +080063
64/*******************************************************************************
James Lo4ac7a412021-10-06 18:12:30 +080065 * PWRAP related constants
66 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080067#define PMIC_WRAP_BASE (IO_PHYS + 0x0000D000)
James Lo4ac7a412021-10-06 18:12:30 +080068
69/*******************************************************************************
Penny Janfb70fb42021-10-03 10:11:04 +080070 * EMI MPU related constants
71 ******************************************************************************/
72#define EMI_MPU_BASE (IO_PHYS + 0x0021B000)
73
74/*******************************************************************************
Christine Zhuccd26002021-10-11 21:29:58 +080075 * GIC-600 & interrupt handling related constants
76 ******************************************************************************/
77/* Base MTK_platform compatible GIC memory map */
jason-ch chenfa82b9b2021-11-16 09:48:20 +080078#define BASE_GICD_BASE MT_GIC_BASE
79#define MT_GIC_RDIST_BASE (MT_GIC_BASE + 0x40000)
Christine Zhuccd26002021-10-11 21:29:58 +080080
jason-ch chenfa82b9b2021-11-16 09:48:20 +080081#define SYS_CIRQ_BASE (IO_PHYS + 0x204000)
82#define CIRQ_REG_NUM (11)
83#define CIRQ_IRQ_NUM (326)
84#define CIRQ_SPI_START (64)
85#define MD_WDT_IRQ_BIT_ID (107)
Christine Zhuccd26002021-10-11 21:29:58 +080086/*******************************************************************************
Rex-BC Chen749b2112021-09-28 11:24:09 +080087 * System counter frequency related constants
88 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +080089#define SYS_COUNTER_FREQ_IN_TICKS (13000000)
90#define SYS_COUNTER_FREQ_IN_MHZ (13)
Rex-BC Chen749b2112021-09-28 11:24:09 +080091
92/*******************************************************************************
93 * Platform binary types for linking
94 ******************************************************************************/
95#define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
96#define PLATFORM_LINKER_ARCH aarch64
97
98/*******************************************************************************
99 * Generic platform constants
100 ******************************************************************************/
101#define PLATFORM_STACK_SIZE 0x800
102
103#define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n"
104
105#define PLAT_MAX_PWR_LVL U(3)
106#define PLAT_MAX_RET_STATE U(1)
107#define PLAT_MAX_OFF_STATE U(9)
108
109#define PLATFORM_SYSTEM_COUNT U(1)
110#define PLATFORM_MCUSYS_COUNT U(1)
111#define PLATFORM_CLUSTER_COUNT U(1)
112#define PLATFORM_CLUSTER0_CORE_COUNT U(8)
113#define PLATFORM_CLUSTER1_CORE_COUNT U(0)
114
115#define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER0_CORE_COUNT)
116#define PLATFORM_MAX_CPUS_PER_CLUSTER U(8)
117
118#define SOC_CHIP_ID U(0x8186)
119
120/*******************************************************************************
121 * Platform memory map related constants
122 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800123#define TZRAM_BASE (0x54600000)
124#define TZRAM_SIZE (0x00030000)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800125
126/*******************************************************************************
127 * BL31 specific defines.
128 ******************************************************************************/
129/*
130 * Put BL3-1 at the top of the Trusted SRAM (just below the shared memory, if
131 * present). BL31_BASE is calculated using the current BL3-1 debug size plus a
132 * little space for growth.
133 */
134#define BL31_BASE (TZRAM_BASE + 0x1000)
135#define BL31_LIMIT (TZRAM_BASE + TZRAM_SIZE)
136
137/*******************************************************************************
138 * Platform specific page table and MMU setup constants
139 ******************************************************************************/
140#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
141#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800142#define MAX_XLAT_TABLES (16)
143#define MAX_MMAP_REGIONS (16)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800144
145/*******************************************************************************
146 * Declarations and constants to access the mailboxes safely. Each mailbox is
147 * aligned on the biggest cache line size in the platform. This is known only
148 * to the platform as it might have a combination of integrated and external
149 * caches. Such alignment ensures that two maiboxes do not sit on the same cache
150 * line at any cache level. They could belong to different cpus/clusters &
151 * get written while being protected by different locks causing corruption of
152 * a valid mailbox address.
153 ******************************************************************************/
jason-ch chenfa82b9b2021-11-16 09:48:20 +0800154#define CACHE_WRITEBACK_SHIFT (6)
155#define CACHE_WRITEBACK_GRANULE BIT(CACHE_WRITEBACK_SHIFT)
Rex-BC Chen749b2112021-09-28 11:24:09 +0800156#endif /* PLATFORM_DEF_H */