blob: fa0c0abfab2fd7731cadcc448c93b44852271419 [file] [log] [blame]
Samuel Hollandb8566642017-08-12 04:07:39 -05001/*
Samuel Hollandfde9e1c2020-12-13 21:26:36 -06002 * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
Samuel Hollandb8566642017-08-12 04:07:39 -05003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diaz6f3ccc52018-07-20 09:17:26 +01007#ifndef PLATFORM_DEF_H
8#define PLATFORM_DEF_H
Samuel Hollandb8566642017-08-12 04:07:39 -05009
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000010#include <common/tbbr/tbbr_img_def.h>
11#include <lib/utils_def.h>
12#include <plat/common/common_def.h>
13
Samuel Hollandb8566642017-08-12 04:07:39 -050014#include <sunxi_mmap.h>
Samuel Hollandb8566642017-08-12 04:07:39 -050015
Andre Przywaracd1c67e2020-11-28 01:38:15 +000016/* The SCP firmware is allocated the last 16KiB of SRAM A2. */
17#define SUNXI_SCP_SIZE 0x4000
18
19#ifdef SUNXI_BL31_IN_DRAM
Andre Przywara2d42e5f2020-11-28 01:39:17 +000020
21#define BL31_BASE SUNXI_DRAM_BASE
22#define BL31_LIMIT (SUNXI_DRAM_BASE + 0x40000)
23
24#define MAX_XLAT_TABLES 4
25#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
26
27#define SUNXI_BL33_VIRT_BASE PRELOADED_BL33_BASE
28
Andre Przywaracd1c67e2020-11-28 01:38:15 +000029#else /* !SUNXI_BL31_IN_DRAM */
30
Samuel Holland38d98de2019-02-17 15:10:36 -060031#define BL31_BASE (SUNXI_SRAM_A2_BASE + 0x4000)
Samuel Hollandd002f3b2019-12-29 12:22:55 -060032#define BL31_LIMIT (SUNXI_SRAM_A2_BASE + \
33 SUNXI_SRAM_A2_SIZE - SUNXI_SCP_SIZE)
Samuel Hollandd002f3b2019-12-29 12:22:55 -060034#define SUNXI_SCP_BASE BL31_LIMIT
Samuel Hollandb8566642017-08-12 04:07:39 -050035
Samuel Hollandd00eaa22019-10-27 14:07:52 -050036/* Overwrite U-Boot SPL, but reserve the first page for the SPL header. */
37#define BL31_NOBITS_BASE (SUNXI_SRAM_A1_BASE + 0x1000)
38#define BL31_NOBITS_LIMIT (SUNXI_SRAM_A1_BASE + SUNXI_SRAM_A1_SIZE)
39
Andre Przywaracd1c67e2020-11-28 01:38:15 +000040#define MAX_XLAT_TABLES 1
41#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 28)
42#define SUNXI_BL33_VIRT_BASE (SUNXI_DRAM_VIRT_BASE + SUNXI_DRAM_SEC_SIZE)
43
44#endif /* SUNXI_BL31_IN_DRAM */
45
Andre Przywarab3fddff2018-09-20 21:13:55 +010046/* How much memory to reserve as secure for BL32, if configured */
47#define SUNXI_DRAM_SEC_SIZE (32U << 20)
48
Andre Przywaraea5fa472018-09-16 02:08:06 +010049/* How much DRAM to map (to map BL33, for fetching the DTB from U-Boot) */
Andre Przywarab3fddff2018-09-20 21:13:55 +010050#define SUNXI_DRAM_MAP_SIZE (64U << 20)
51
Samuel Hollandb8566642017-08-12 04:07:39 -050052#define CACHE_WRITEBACK_SHIFT 6
53#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
54
Samuel Hollandfde9e1c2020-12-13 21:26:36 -060055#define MAX_STATIC_MMAP_REGIONS 5
56#define MAX_MMAP_REGIONS (3 + MAX_STATIC_MMAP_REGIONS)
Samuel Hollandb8566642017-08-12 04:07:39 -050057
Samuel Holland103ee9b2018-10-21 12:41:03 -050058#define PLAT_CSS_SCP_COM_SHARED_MEM_BASE \
59 (SUNXI_SRAM_A2_BASE + SUNXI_SRAM_A2_SIZE - 0x200)
60
Antonio Nino Diaz6f3ccc52018-07-20 09:17:26 +010061#define PLAT_MAX_PWR_LVL_STATES U(2)
62#define PLAT_MAX_RET_STATE U(1)
63#define PLAT_MAX_OFF_STATE U(2)
Samuel Hollandb8566642017-08-12 04:07:39 -050064
Antonio Nino Diaz6f3ccc52018-07-20 09:17:26 +010065#define PLAT_MAX_PWR_LVL U(2)
Deepika Bhavnanifa4e1d02019-12-13 10:48:27 -060066#define PLAT_NUM_PWR_DOMAINS (U(1) + \
Samuel Hollandb8566642017-08-12 04:07:39 -050067 PLATFORM_CLUSTER_COUNT + \
68 PLATFORM_CORE_COUNT)
69
70#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
Samuel Hollandb8566642017-08-12 04:07:39 -050071
Deepika Bhavnanifa4e1d02019-12-13 10:48:27 -060072#define PLATFORM_CLUSTER_COUNT U(1)
Samuel Hollandb8566642017-08-12 04:07:39 -050073#define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER_COUNT * \
74 PLATFORM_MAX_CPUS_PER_CLUSTER)
Deepika Bhavnanifa4e1d02019-12-13 10:48:27 -060075#define PLATFORM_MAX_CPUS_PER_CLUSTER U(4)
Samuel Hollandb8566642017-08-12 04:07:39 -050076#define PLATFORM_STACK_SIZE (0x1000 / PLATFORM_CORE_COUNT)
77
Amit Singh Tomar2f372242018-06-20 00:44:50 +053078#ifndef SPD_none
79#ifndef BL32_BASE
80#define BL32_BASE SUNXI_DRAM_BASE
81#endif
82#endif
83
Antonio Nino Diaz6f3ccc52018-07-20 09:17:26 +010084#endif /* PLATFORM_DEF_H */