10d5ec955Stony.xie /* 20d5ec955Stony.xie * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 30d5ec955Stony.xie * 4c3e70be1Sdp-arm * SPDX-License-Identifier: BSD-3-Clause 50d5ec955Stony.xie */ 60d5ec955Stony.xie 70d5ec955Stony.xie #ifndef __PLATFORM_DEF_H__ 80d5ec955Stony.xie #define __PLATFORM_DEF_H__ 90d5ec955Stony.xie 100d5ec955Stony.xie #include <arch.h> 110d5ec955Stony.xie #include <common_def.h> 120d5ec955Stony.xie #include <rk3328_def.h> 130d5ec955Stony.xie 140d5ec955Stony.xie #define DEBUG_XLAT_TABLE 0 150d5ec955Stony.xie 160d5ec955Stony.xie /******************************************************************************* 170d5ec955Stony.xie * Platform binary types for linking 180d5ec955Stony.xie ******************************************************************************/ 190d5ec955Stony.xie #define PLATFORM_LINKER_FORMAT "elf64-littleaarch64" 200d5ec955Stony.xie #define PLATFORM_LINKER_ARCH aarch64 210d5ec955Stony.xie 220d5ec955Stony.xie /******************************************************************************* 230d5ec955Stony.xie * Generic platform constants 240d5ec955Stony.xie ******************************************************************************/ 250d5ec955Stony.xie 260d5ec955Stony.xie /* Size of cacheable stacks */ 270d5ec955Stony.xie #if DEBUG_XLAT_TABLE 280d5ec955Stony.xie #define PLATFORM_STACK_SIZE 0x800 290d5ec955Stony.xie #elif IMAGE_BL1 300d5ec955Stony.xie #define PLATFORM_STACK_SIZE 0x440 310d5ec955Stony.xie #elif IMAGE_BL2 320d5ec955Stony.xie #define PLATFORM_STACK_SIZE 0x400 330d5ec955Stony.xie #elif IMAGE_BL31 340d5ec955Stony.xie #define PLATFORM_STACK_SIZE 0x800 350d5ec955Stony.xie #elif IMAGE_BL32 360d5ec955Stony.xie #define PLATFORM_STACK_SIZE 0x440 370d5ec955Stony.xie #endif 380d5ec955Stony.xie 390d5ec955Stony.xie #define FIRMWARE_WELCOME_STR "Booting Trusted Firmware\n" 400d5ec955Stony.xie 410d5ec955Stony.xie #define PLATFORM_MAX_AFFLVL MPIDR_AFFLVL2 420d5ec955Stony.xie #define PLATFORM_SYSTEM_COUNT 1 430d5ec955Stony.xie #define PLATFORM_CLUSTER_COUNT 1 440d5ec955Stony.xie #define PLATFORM_CLUSTER0_CORE_COUNT 4 450d5ec955Stony.xie #define PLATFORM_CLUSTER1_CORE_COUNT 0 460d5ec955Stony.xie #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER1_CORE_COUNT + \ 470d5ec955Stony.xie PLATFORM_CLUSTER0_CORE_COUNT) 480d5ec955Stony.xie 490d5ec955Stony.xie #define PLATFORM_NUM_AFFS (PLATFORM_SYSTEM_COUNT + \ 500d5ec955Stony.xie PLATFORM_CLUSTER_COUNT + \ 510d5ec955Stony.xie PLATFORM_CORE_COUNT) 520d5ec955Stony.xie 530d5ec955Stony.xie #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 540d5ec955Stony.xie 550d5ec955Stony.xie #define PLAT_RK_CLST_TO_CPUID_SHIFT 6 560d5ec955Stony.xie 570d5ec955Stony.xie /* 580d5ec955Stony.xie * This macro defines the deepest retention state possible. A higher state 590d5ec955Stony.xie * id will represent an invalid or a power down state. 600d5ec955Stony.xie */ 610d5ec955Stony.xie #define PLAT_MAX_RET_STATE 1 620d5ec955Stony.xie 630d5ec955Stony.xie /* 640d5ec955Stony.xie * This macro defines the deepest power down states possible. Any state ID 650d5ec955Stony.xie * higher than this is invalid. 660d5ec955Stony.xie */ 670d5ec955Stony.xie #define PLAT_MAX_OFF_STATE 2 680d5ec955Stony.xie 690d5ec955Stony.xie /******************************************************************************* 700d5ec955Stony.xie * Platform memory map related constants 710d5ec955Stony.xie ******************************************************************************/ 720d5ec955Stony.xie /* TF txet, ro, rw, Size: 512KB */ 730d5ec955Stony.xie #define TZRAM_BASE (0x0) 740d5ec955Stony.xie #define TZRAM_SIZE (0x80000) 750d5ec955Stony.xie 760d5ec955Stony.xie /******************************************************************************* 770d5ec955Stony.xie * BL31 specific defines. 780d5ec955Stony.xie ******************************************************************************/ 790d5ec955Stony.xie /* 800d5ec955Stony.xie * Put BL3-1 at the top of the Trusted RAM 810d5ec955Stony.xie */ 820d5ec955Stony.xie #define BL31_BASE (TZRAM_BASE + 0x10000) 830d5ec955Stony.xie #define BL31_LIMIT (TZRAM_BASE + TZRAM_SIZE) 840d5ec955Stony.xie 850d5ec955Stony.xie /******************************************************************************* 860d5ec955Stony.xie * Platform specific page table and MMU setup constants 870d5ec955Stony.xie ******************************************************************************/ 880d5ec955Stony.xie #define ADDR_SPACE_SIZE (1ull << 32) 890d5ec955Stony.xie #define MAX_XLAT_TABLES 9 900d5ec955Stony.xie #define MAX_MMAP_REGIONS 33 910d5ec955Stony.xie 920d5ec955Stony.xie /******************************************************************************* 930d5ec955Stony.xie * Declarations and constants to access the mailboxes safely. Each mailbox is 940d5ec955Stony.xie * aligned on the biggest cache line size in the platform. This is known only 950d5ec955Stony.xie * to the platform as it might have a combination of integrated and external 960d5ec955Stony.xie * caches. Such alignment ensures that two maiboxes do not sit on the same cache 970d5ec955Stony.xie * line at any cache level. They could belong to different cpus/clusters & 980d5ec955Stony.xie * get written while being protected by different locks causing corruption of 990d5ec955Stony.xie * a valid mailbox address. 1000d5ec955Stony.xie ******************************************************************************/ 1010d5ec955Stony.xie #define CACHE_WRITEBACK_SHIFT 6 1020d5ec955Stony.xie #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 1030d5ec955Stony.xie 1040d5ec955Stony.xie /* 1050d5ec955Stony.xie * Define GICD and GICC and GICR base 1060d5ec955Stony.xie */ 1070d5ec955Stony.xie #define PLAT_RK_GICD_BASE RK3328_GICD_BASE 1080d5ec955Stony.xie #define PLAT_RK_GICC_BASE RK3328_GICC_BASE 1090d5ec955Stony.xie 1100d5ec955Stony.xie /* 1110d5ec955Stony.xie * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 1120d5ec955Stony.xie * terminology. On a GICv2 system or mode, the lists will be merged and treated 1130d5ec955Stony.xie * as Group 0 interrupts. 1140d5ec955Stony.xie */ 1150d5ec955Stony.xie #define PLAT_RK_G1S_IRQS RK_G1S_IRQS 1160d5ec955Stony.xie 1170d5ec955Stony.xie #define PLAT_RK_UART_BASE RK3328_UART2_BASE 1180d5ec955Stony.xie #define PLAT_RK_UART_CLOCK RK3328_UART_CLOCK 1190d5ec955Stony.xie #define PLAT_RK_UART_BAUDRATE RK3328_BAUDRATE 1200d5ec955Stony.xie 1210d5ec955Stony.xie #define PLAT_RK_PRIMARY_CPU 0x0 1220d5ec955Stony.xie 123*bc5c3007SLin Huang #define PSRAM_DO_DDR_RESUME 0 124*bc5c3007SLin Huang 1250d5ec955Stony.xie #endif /* __PLATFORM_DEF_H__ */ 126