platform_def.h 5.06 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
 * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#ifndef PLATFORM_DEF_H
#define PLATFORM_DEF_H


#define PLAT_PRIMARY_CPU   0x0

#define MT_GIC_BASE        0x0c000000
#define PLAT_MT_CCI_BASE   0x0c500000
#define MCUCFG_BASE        0x0c530000

#define IO_PHYS            0x10000000

/* Aggregate of all devices for MMU mapping */
#define MTK_DEV_RNG0_BASE    IO_PHYS
#define MTK_DEV_RNG0_SIZE    0x10000000
#define MTK_DEV_RNG1_BASE    (IO_PHYS + 0x10000000)
#define MTK_DEV_RNG1_SIZE    0x10000000
#define MTK_DEV_RNG2_BASE    0x0c000000
#define MTK_DEV_RNG2_SIZE    0x600000
26
27
#define MTK_MCDI_SRAM_BASE      0x11B000
#define MTK_MCDI_SRAM_MAP_SIZE  0x1000
28

29
#define GPIO_BASE        (IO_PHYS + 0x00005000)
James Liao's avatar
James Liao committed
30
#define SPM_BASE         (IO_PHYS + 0x00006000)
31
#define PMIC_WRAP_BASE   (IO_PHYS + 0x00026000)
32
33
34
35
36
37
38
39
40
#define IOCFG_RM_BASE    (IO_PHYS + 0x01C20000)
#define IOCFG_BM_BASE    (IO_PHYS + 0x01D10000)
#define IOCFG_BL_BASE    (IO_PHYS + 0x01D30000)
#define IOCFG_BR_BASE    (IO_PHYS + 0x01D40000)
#define IOCFG_LM_BASE    (IO_PHYS + 0x01E20000)
#define IOCFG_LB_BASE    (IO_PHYS + 0x01E70000)
#define IOCFG_RT_BASE    (IO_PHYS + 0x01EA0000)
#define IOCFG_LT_BASE    (IO_PHYS + 0x01F20000)
#define IOCFG_TL_BASE    (IO_PHYS + 0x01F30000)
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*******************************************************************************
 * UART related constants
 ******************************************************************************/
#define UART0_BASE    (IO_PHYS + 0x01002000)
#define UART1_BASE    (IO_PHYS + 0x01003000)

#define UART_BAUDRATE 115200

/*******************************************************************************
 * System counter frequency related constants
 ******************************************************************************/
#define SYS_COUNTER_FREQ_IN_TICKS    13000000
#define SYS_COUNTER_FREQ_IN_MHZ      13

55
56
57
58
59
60
61
62
/*******************************************************************************
 * GIC-400 & interrupt handling related constants
 ******************************************************************************/

/* Base MTK_platform compatible GIC memory map */
#define BASE_GICD_BASE        MT_GIC_BASE
#define MT_GIC_RDIST_BASE     (MT_GIC_BASE + 0x40000)

63
64
65
66
67
68
69
70
71
72
73
/*******************************************************************************
 * Platform binary types for linking
 ******************************************************************************/
#define PLATFORM_LINKER_FORMAT      "elf64-littleaarch64"
#define PLATFORM_LINKER_ARCH        aarch64

/*******************************************************************************
 * Generic platform constants
 ******************************************************************************/
#define PLATFORM_STACK_SIZE    0x800

74
#define PLAT_MAX_PWR_LVL        U(3)
75
#define PLAT_MAX_RET_STATE      U(1)
76
#define PLAT_MAX_OFF_STATE      U(9)
77
78

#define PLATFORM_SYSTEM_COUNT           U(1)
79
#define PLATFORM_MCUSYS_COUNT           U(1)
80
81
82
83
84
#define PLATFORM_CLUSTER_COUNT          U(1)
#define PLATFORM_CLUSTER0_CORE_COUNT    U(8)
#define PLATFORM_CORE_COUNT             (PLATFORM_CLUSTER0_CORE_COUNT)
#define PLATFORM_MAX_CPUS_PER_CLUSTER   U(8)

Hsin-Yi Wang's avatar
Hsin-Yi Wang committed
85
86
#define SOC_CHIP_ID			U(0x8192)

87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*******************************************************************************
 * Platform memory map related constants
 ******************************************************************************/
#define TZRAM_BASE          0x54600000
#define TZRAM_SIZE          0x00030000

/*******************************************************************************
 * BL31 specific defines.
 ******************************************************************************/
/*
 * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if
 * present). BL31_BASE is calculated using the current BL31 debug size plus a
 * little space for growth.
 */
#define BL31_BASE       (TZRAM_BASE + 0x1000)
#define BL31_LIMIT      (TZRAM_BASE + TZRAM_SIZE)

/*******************************************************************************
 * Platform specific page table and MMU setup constants
 ******************************************************************************/
#define PLAT_PHY_ADDR_SPACE_SIZE    (1ULL << 32)
#define PLAT_VIRT_ADDR_SPACE_SIZE   (1ULL << 32)
#define MAX_XLAT_TABLES             16
#define MAX_MMAP_REGIONS            16

/*******************************************************************************
 * Declarations and constants to access the mailboxes safely. Each mailbox is
 * aligned on the biggest cache line size in the platform. This is known only
 * to the platform as it might have a combination of integrated and external
 * caches. Such alignment ensures that two maiboxes do not sit on the same cache
 * line at any cache level. They could belong to different cpus/clusters &
 * get written while being protected by different locks causing corruption of
 * a valid mailbox address.
 ******************************************************************************/
#define CACHE_WRITEBACK_SHIFT    6
#define CACHE_WRITEBACK_GRANULE  (1 << CACHE_WRITEBACK_SHIFT)
#endif /* PLATFORM_DEF_H */