blob: 62b6d49e7e7a6da8d1cb16c97613060540ecda01 [file] [log] [blame] [edit]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) 2018 Amlogic, Inc. All rights reserved.
*/
#ifndef __PLATFORM_DEF_H__
#define __PLATFORM_DEF_H__
#include <arch.h>
/*******************************************************************************
* Platform binary types for linking
******************************************************************************/
#define PLATFORM_LINKER_FORMAT "elf64-littleaarch64"
#define PLATFORM_LINKER_ARCH aarch64
#define CONFIG_DEBUG_BL33Z 1
#define CONFIG_ENABLE_CACHE 0
#define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
/********************************************************************************
* For ramdump section map
********************************************************************************/
/*
* Full Memory lay out for RAM compress:
*
* MEM_EXTEND end -> +--------+
* | |
* | |
* | 7 |
* | |
* | |
* | |
* REG_SPACE end -> +--------+ -- IGNORE_SIZE
* ||||||||||
* ||||6||||| <- reg space(3.5g ~ 4.0g)
* ||||||||||
* DDR_TOP -> +--------+
* | |
* | |
* | 5 |
* | |
* | |
* |~~~~~~~~| <- store compressing data
* |~~~~~~~~|
* |~~~~~~~~|
* |~~~~~~~~|
* |~~~~~~~~|
* COMPRESSED_DATA start -> +--------+
* | |
* | 4 |
* | |
* BL32_LOAD_ADDR end -> +--------+ -- IGNORE_SIZE
* ||||||||||
* ||||3||||| <- load bl31 bl32(3+48 MB)
* ||||||||||
* BL31_LOAD_ADDR start -> +--------+
* | |
* | 2 |
* | |
* BL2E_LOAD_ADDR end -> +--------+
* ||||||||||
* ||||1||||| <- load bl2x bl2e
* ||||||||||
* BL2X_LOAD_ADDR start -> + +
* | |
* | 1 |
* | |
* COMPRESS_START_ADDR -> +--------+
*
*/
/********************************************************************************
* For ramdump section info
********************************************************************************/
#define CONFIG_DDR_TOTAL_SIZE (1UL << 32) /* get from cpu reg */
#define CONFIG_DDR_SIZE_RANGE1 ((1UL << 32) - 0x20000000) /* RANGE 1: 0.0G - 3.5G */
#define CONFIG_DDR_SIZE_RANGE2 (1UL << 32) /* RANGE 2: 4.0G - 7.0G */
#define CONFIG_DDR_SIZE_RANGE3 ((1UL << 32) + 0xC0000000) /* RANGE 3: 7.0G - end */
#define CONFIG_SMALL_COMPRESS_ADDR (0x0c000000)
#define CONFIG_BIG_COMPRESS_ADDR (1UL << 32)
#if (CONFIG_DDR_TOTAL_SIZE <= CONFIG_DDR_SIZE_RANGE3)
#define CONFIG_COMPRESSED_DATA_ADDR (CONFIG_SMALL_COMPRESS_ADDR)/* section6 start addr */
#else
#define CONFIG_COMPRESSED_DATA_ADDR (CONFIG_BIG_COMPRESS_ADDR) /* section6 start addr */
#endif
#define CONFIG_COMPRESS_START_ADDR (0x00000000) /* ddr start addr */
#define CONFIG_BL2X_LOAD_ADDR (0x007ffe00) /* bl2x start addr */
//#define CONFIG_BL2X_LOAD_ADDR (0x00800000) /* bl2x start addr */
#define CONFIG_BL2E_END_ADDR (0x01280000) /* bl2x end addr */
#define CONFIG_BL33Z_RSVMEM (0x01800000) /* reserved memory 24MB */
#define CONFIG_BL31_LOAD_ADDR (0x05000000) /* bl31 start addr */
#define CONFIG_BL31_LOAD_SIZE (0x00300000) /* bl31 size: 3MB */
#define CONFIG_BL32_LOAD_ADDR (CONFIG_BL31_LOAD_ADDR + CONFIG_BL31_LOAD_SIZE)
#define CONFIG_BL32_LOAD_SIZE (0x03000000) /* bl32 size: 48MB(rsvmem dump)*/
#define CONFIG_ACS_DDR_LOAD_ADDR (0x05200000)
#define CONFIG_ACS_DDR_LOAD_SIZE (0x00000200) /* 512 Bytes */
#define CONFIG_DDR_REG_SPACE_ADDR (0xE0000000) /* ADDR: 3.5G */
#define CONFIG_DDR_REG_SPACE_END (1UL << 32) /* ADDR: 4.0G */
#define CONFIG_DDR_EXTEND_FLAG ((0X1C0000000)UL) /* ADDR: 7.0G */
#define CONFIG_COMPRESSED_2_DATA_ADDR (1UL << 32) /* ADDR: 4.0G, (4.0G ~ end) */
//#define CONFIG_SECTION0_ADDR (CONFIG_COMPRESSED_DATA_ADDR) /* compress begin here */
//#define CONFIG_SECTION0_SIZE (CONFIG_DDR_TOTAL_SIZE - CONFIG_COMPRESSED_DATA_ADDR)
#define CONFIG_SECTION1_ADDR (CONFIG_COMPRESS_START_ADDR) /* 0 */
#define CONFIG_SECTION1_SIZE (CONFIG_SECTION2_ADDR - CONFIG_SECTION1_ADDR) /* 24MB */
#define CONFIG_SECTION2_ADDR (CONFIG_BL33Z_RSVMEM) /* new kernel loadaddr */
#define CONFIG_SECTION2_SIZE (CONFIG_BL31_LOAD_ADDR - CONFIG_SECTION2_ADDR)
#define CONFIG_SECTION3_ADDR (CONFIG_BL31_LOAD_ADDR)
#define CONFIG_SECTION3_SIZE (CONFIG_SECTION4_ADDR - CONFIG_SECTION3_ADDR)
#define CONFIG_SECTION4_ADDR (CONFIG_BL32_LOAD_ADDR + CONFIG_BL32_LOAD_SIZE)
#define CONFIG_SECTION4_SIZE (CONFIG_SECTION5_ADDR - CONFIG_SECTION4_ADDR)
#define CONFIG_SECTION5_ADDR (CONFIG_SMALL_COMPRESS_ADDR)
#define CONFIG_SECTION6_ADDR (CONFIG_DDR_REG_SPACE_ADDR)
#define CONFIG_SECTION7_ADDR (CONFIG_BIG_COMPRESS_ADDR)
#if (CONFIG_DDR_TOTAL_SIZE <= CONFIG_DDR_REG_SPACE_ADDR)
/* For ddr <= 3.5GB */
#define CONFIG_SECTION5_SIZE (CONFIG_DDR_TOTAL_SIZE - CONFIG_SECTION5_ADDR)
#define CONFIG_SECTION6_SIZE (0)
#define CONFIG_SECTION7_SIZE (0)
#else
/* For ddr > 3.5GB */
#define CONFIG_SECTION5_SIZE (CONFIG_SECTION6_ADDR - CONFIG_SECTION5_ADDR)
#define CONFIG_SECTION6_SIZE (CONFIG_SECTION7_ADDR - CONFIG_SECTION6_ADDR)
#define CONFIG_SECTION7_SIZE (CONFIG_DDR_TOTAL_SIZE - CONFIG_SECTION6_ADDR) /* +512M */
#endif
/********************************************************************************
* For mmu calculate ddr size
********************************************************************************/
#define REG_SPACE_START_ADDR (0xE0000000) /* reg space: 3.5g ~ 4.0g */
#define REG_SPACE_RANGE_SIZE (0x20000000) /* reg space: 3.5g ~ 4.0g */
#define REG_SPACE_END_ADDR (1UL << 32)
#define REG_BIG_ADDR_FLAG (0x00000080)
#define REG_BIG_ADDR_MASE (0xFFFFFF00)
#define REG_BIG_SIZE_MASK (0x0000007F)
/********************************************************************************
* For MDUMP STORE
********************************************************************************/
#ifndef CONFIG_MDUMP_MESSAGE_SIZE
#define CONFIG_MDUMP_MESSAGE_SIZE 65536
#endif
#define MDUMP_STORE_BLOCK 0x0100000
#define MDUMP_BLOCK_SIZE 4096
#define MDUMP_BUFFER_SIG 0x4842444dU /* MDBH */
/********************************************************************************
* For memory layout for runtime
********************************************************************************/
/*
* Memory layout:
* --> 0x00000000 --> code start
* --> 0x00004000 --> code end
* --> 0x013F0000 --> stack bottom
* --> 0x01400000 --> stack top / mmu base
* --> 0x01420000 --> mmu end / compress scrach buffer
* --> 0x01480000 --> compress scrach end / first compress out buffer
* --> 0x014E0000 --> first compress out end
*/
/* CODE space */
#define BL33Z_LOAD_ADDR 0x00400000 /* code start */
#define BL33Z_LOAD_SIZE 0x00004000 /* 16KB code */
#define BL33Z_LIMIT (BL33Z_LOAD_ADDR + BL33Z_LOAD_SIZE) //16KB
/* STACK space */
#define PLATFORM_STACK_BOTTOM (PLATFORM_STACK_POSI - PLATFORM_STACK_SIZE)
#define PLATFORM_STACK_SIZE 0x00010000 /* 64KB stack size */
#define PLATFORM_STACK_POSI 0x00800000 /* stack top addr */
/* MMU space */
#define CONFIG_AML_MMU_ADDR (PLATFORM_STACK_POSI)
#define COMFIG_AML_MMU_SIZE (128 << 10) /* 128KB mmu */
#define BL33Z_LIMIT_MMU (CONFIG_AML_MMU_ADDR + COMFIG_AML_MMU_SIZE)
/* TMPWORK IN space */
#define CONFIG_RAMDUMP_TMPWORK_ADDR (CONFIG_AML_MMU_ADDR + \
COMFIG_AML_MMU_SIZE)
#define CONFIG_RAMDUMP_TMPWORK_SIZE (384 << 10)
/* TMPWORK OUT space */
#define CONFIG_RAMDUMP_TMPOUT_ADDR (CONFIG_RAMDUMP_TMPWORK_ADDR + \
CONFIG_RAMDUMP_TMPWORK_SIZE)
#define CONFIG_RAMDUMP_TMPOUT_SIZE (384 << 10)
#endif /* __PLATFORM_DEF_H__ */