mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 01:54:22 +00:00

This consists of ensuring that the left operand of each shift is unsigned when the operation might overflow into the sign bit. Change-Id: I78f386f5ac171d6e52383a3e42003e6fb3e96b57 Signed-off-by: Justin Chadwell <justin.chadwell@arm.com>
194 lines
6.3 KiB
C
194 lines
6.3 KiB
C
/*
|
|
* Copyright (C) 2018 Marvell International Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
* https://spdx.org/licenses
|
|
*/
|
|
|
|
#ifndef A8K_PLAT_DEF_H
|
|
#define A8K_PLAT_DEF_H
|
|
|
|
#include <marvell_def.h>
|
|
|
|
#define MVEBU_PRIMARY_CPU 0x0
|
|
#define MVEBU_AP0 0x0
|
|
|
|
/* APN806 revision ID */
|
|
#define MVEBU_CSS_GWD_CTRL_IIDR2_REG (MVEBU_REGS_BASE + 0x610FCC)
|
|
#define GWD_IIDR2_REV_ID_OFFSET 12
|
|
#define GWD_IIDR2_REV_ID_MASK 0xF
|
|
#define GWD_IIDR2_CHIP_ID_OFFSET 20
|
|
#define GWD_IIDR2_CHIP_ID_MASK (0xFFFu << GWD_IIDR2_CHIP_ID_OFFSET)
|
|
|
|
#define CHIP_ID_AP806 0x806
|
|
#define CHIP_ID_AP807 0x807
|
|
|
|
#define COUNTER_FREQUENCY 25000000
|
|
|
|
#define MVEBU_REGS_BASE 0xF0000000
|
|
#define MVEBU_REGS_BASE_MASK 0xF0000000
|
|
#define MVEBU_REGS_BASE_AP(ap) MVEBU_REGS_BASE
|
|
#define MVEBU_AP_IO_BASE(ap) 0xF2000000
|
|
#define MVEBU_CP_OFFSET 0x2000000
|
|
#define MVEBU_CP_REGS_BASE(cp_index) (MVEBU_AP_IO_BASE(0) + \
|
|
(cp_index) * MVEBU_CP_OFFSET)
|
|
#define MVEBU_RFU_BASE (MVEBU_REGS_BASE + 0x6F0000)
|
|
#define MVEBU_IO_WIN_BASE(ap_index) (MVEBU_RFU_BASE)
|
|
#define MVEBU_IO_WIN_GCR_OFFSET (0x70)
|
|
#define MVEBU_IO_WIN_MAX_WINS (7)
|
|
|
|
/* Misc SoC configurations Base */
|
|
#define MVEBU_MISC_SOC_BASE (MVEBU_REGS_BASE + 0x6F4300)
|
|
|
|
#define MVEBU_CCU_BASE(ap_index) (MVEBU_REGS_BASE + 0x4000)
|
|
#define MVEBU_CCU_MAX_WINS (8)
|
|
|
|
#define MVEBU_LLC_BASE(ap_index) (MVEBU_REGS_BASE + 0x8000)
|
|
#define MVEBU_DRAM_MAC_BASE (MVEBU_REGS_BASE + 0x20000)
|
|
#define MVEBU_DRAM_PHY_BASE (MVEBU_REGS_BASE + 0x20000)
|
|
#define MVEBU_SMMU_BASE (MVEBU_REGS_BASE + 0x100000)
|
|
#define MVEBU_CP_MPP_REGS(cp_index, n) (MVEBU_CP_REGS_BASE(cp_index) + \
|
|
0x440000 + ((n) << 2))
|
|
#define MVEBU_PM_MPP_REGS(cp_index, n) (MVEBU_CP_REGS_BASE(cp_index) + \
|
|
0x440000 + ((n / 8) << 2))
|
|
#define MVEBU_CP_GPIO_DATA_OUT(cp_index, n) \
|
|
(MVEBU_CP_REGS_BASE(cp_index) + \
|
|
0x440100 + ((n > 31) ? 0x40 : 0x00))
|
|
#define MVEBU_CP_GPIO_DATA_OUT_EN(cp_index, n) \
|
|
(MVEBU_CP_REGS_BASE(cp_index) + \
|
|
0x440104 + ((n > 31) ? 0x40 : 0x00))
|
|
#define MVEBU_CP_GPIO_DATA_IN(cp_index, n) (MVEBU_CP_REGS_BASE(cp_index) + \
|
|
0x440110 + ((n > 31) ? 0x40 : 0x00))
|
|
#define MVEBU_AP_MPP_REGS(n) (MVEBU_RFU_BASE + 0x4000 + ((n) << 2))
|
|
#define MVEBU_AP_GPIO_REGS (MVEBU_RFU_BASE + 0x5040)
|
|
#define MVEBU_AP_GPIO_DATA_IN (MVEBU_AP_GPIO_REGS + 0x10)
|
|
#define MVEBU_AP_I2C_BASE (MVEBU_REGS_BASE + 0x511000)
|
|
#define MVEBU_CP0_I2C_BASE (MVEBU_CP_REGS_BASE(0) + 0x701000)
|
|
#define MVEBU_AP_EXT_TSEN_BASE (MVEBU_RFU_BASE + 0x8084)
|
|
|
|
#define MVEBU_AP_MC_TRUSTZONE_REG_LOW(ap, win) (MVEBU_REGS_BASE_AP(ap) + \
|
|
0x20080 + ((win) * 0x8))
|
|
#define MVEBU_AP_MC_TRUSTZONE_REG_HIGH(ap, win) (MVEBU_REGS_BASE_AP(ap) + \
|
|
0x20084 + ((win) * 0x8))
|
|
|
|
/* MCI indirect access definitions */
|
|
#define MCI_MAX_UNIT_ID 2
|
|
/* SoC RFU / IHBx4 Control */
|
|
#define MCIX4_REG_START_ADDRESS_REG(unit_id) (MVEBU_RFU_BASE + \
|
|
0x4218 + (unit_id * 0x20))
|
|
#define MCI_REMAP_OFF_SHIFT 8
|
|
|
|
#define MVEBU_MCI_REG_BASE_REMAP(index) (0xFD000000 + \
|
|
((index) * 0x1000000))
|
|
|
|
#define MVEBU_PCIE_X4_MAC_BASE(x) (MVEBU_CP_REGS_BASE(x) + 0x600000)
|
|
#define MVEBU_COMPHY_BASE(x) (MVEBU_CP_REGS_BASE(x) + 0x441000)
|
|
#define MVEBU_HPIPE_BASE(x) (MVEBU_CP_REGS_BASE(x) + 0x120000)
|
|
#define MVEBU_CP_DFX_OFFSET (0x400200)
|
|
|
|
/*****************************************************************************
|
|
* MVEBU memory map related constants
|
|
*****************************************************************************
|
|
*/
|
|
/* Aggregate of all devices in the first GB */
|
|
#define DEVICE0_BASE MVEBU_REGS_BASE
|
|
#define DEVICE0_SIZE 0x10000000
|
|
|
|
/*****************************************************************************
|
|
* GIC-400 & interrupt handling related constants
|
|
*****************************************************************************
|
|
*/
|
|
/* Base MVEBU compatible GIC memory map */
|
|
#define MVEBU_GICD_BASE 0x210000
|
|
#define MVEBU_GICC_BASE 0x220000
|
|
|
|
|
|
/*****************************************************************************
|
|
* AXI Configuration
|
|
*****************************************************************************
|
|
*/
|
|
#define MVEBU_AXI_ATTR_ARCACHE_OFFSET 4
|
|
#define MVEBU_AXI_ATTR_ARCACHE_MASK (0xF << \
|
|
MVEBU_AXI_ATTR_ARCACHE_OFFSET)
|
|
#define MVEBU_AXI_ATTR_ARDOMAIN_OFFSET 12
|
|
#define MVEBU_AXI_ATTR_ARDOMAIN_MASK (0x3 << \
|
|
MVEBU_AXI_ATTR_ARDOMAIN_OFFSET)
|
|
#define MVEBU_AXI_ATTR_AWCACHE_OFFSET 20
|
|
#define MVEBU_AXI_ATTR_AWCACHE_MASK (0xF << \
|
|
MVEBU_AXI_ATTR_AWCACHE_OFFSET)
|
|
#define MVEBU_AXI_ATTR_AWDOMAIN_OFFSET 28
|
|
#define MVEBU_AXI_ATTR_AWDOMAIN_MASK (0x3 << \
|
|
MVEBU_AXI_ATTR_AWDOMAIN_OFFSET)
|
|
|
|
/* SATA MBUS to AXI configuration */
|
|
#define MVEBU_SATA_M2A_AXI_ARCACHE_OFFSET 1
|
|
#define MVEBU_SATA_M2A_AXI_ARCACHE_MASK (0xF << \
|
|
MVEBU_SATA_M2A_AXI_ARCACHE_OFFSET)
|
|
#define MVEBU_SATA_M2A_AXI_AWCACHE_OFFSET 5
|
|
#define MVEBU_SATA_M2A_AXI_AWCACHE_MASK (0xF << \
|
|
MVEBU_SATA_M2A_AXI_AWCACHE_OFFSET)
|
|
|
|
/* ARM cache attributes */
|
|
#define CACHE_ATTR_BUFFERABLE 0x1
|
|
#define CACHE_ATTR_CACHEABLE 0x2
|
|
#define CACHE_ATTR_READ_ALLOC 0x4
|
|
#define CACHE_ATTR_WRITE_ALLOC 0x8
|
|
/* Domain */
|
|
#define DOMAIN_NON_SHAREABLE 0x0
|
|
#define DOMAIN_INNER_SHAREABLE 0x1
|
|
#define DOMAIN_OUTER_SHAREABLE 0x2
|
|
#define DOMAIN_SYSTEM_SHAREABLE 0x3
|
|
|
|
/************************************************************************
|
|
* Required platform porting definitions common to all
|
|
* Management Compute SubSystems (MSS)
|
|
************************************************************************
|
|
*/
|
|
/*
|
|
* Load address of SCP_BL2
|
|
* SCP_BL2 is loaded to the same place as BL31.
|
|
* Once SCP_BL2 is transferred to the SCP,
|
|
* it is discarded and BL31 is loaded over the top.
|
|
*/
|
|
#ifdef SCP_IMAGE
|
|
#define SCP_BL2_BASE BL31_BASE
|
|
#define SCP_BL2_SIZE BL31_LIMIT
|
|
#endif
|
|
|
|
#ifndef __ASSEMBLER__
|
|
enum ap806_sar_target_dev {
|
|
SAR_PIDI_MCIX2 = 0x0,
|
|
SAR_MCIX4 = 0x1,
|
|
SAR_SPI = 0x2,
|
|
SAR_SD = 0x3,
|
|
SAR_PIDI_MCIX2_BD = 0x4, /* BootRom disabled */
|
|
SAR_MCIX4_DB = 0x5, /* BootRom disabled */
|
|
SAR_SPI_DB = 0x6, /* BootRom disabled */
|
|
SAR_EMMC = 0x7
|
|
};
|
|
|
|
enum io_win_target_ids {
|
|
MCI_0_TID = 0x0,
|
|
MCI_1_TID = 0x1,
|
|
MCI_2_TID = 0x2,
|
|
PIDI_TID = 0x3,
|
|
SPI_TID = 0x4,
|
|
STM_TID = 0x5,
|
|
BOOTROM_TID = 0x6,
|
|
IO_WIN_MAX_TID
|
|
};
|
|
|
|
enum ccu_target_ids {
|
|
IO_0_TID = 0x00,
|
|
DRAM_0_TID = 0x03,
|
|
IO_1_TID = 0x0F,
|
|
CFG_REG_TID = 0x10,
|
|
RAR_TID = 0x20,
|
|
SRAM_TID = 0x40,
|
|
DRAM_1_TID = 0xC0,
|
|
CCU_MAX_TID,
|
|
INVALID_TID = 0xFF
|
|
};
|
|
#endif /* __ASSEMBLER__ */
|
|
|
|
#endif /* A8K_PLAT_DEF_H */
|