blob: ed38ca78cc83c119eda5e129d1e83154bb538f2f [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2017-2018, STMicroelectronics
*/
#ifndef PLATFORM_CONFIG_H
#define PLATFORM_CONFIG_H
#include <mm/generic_ram_layout.h>
/* Make stacks aligned to data cache line length */
#define STACK_ALIGNMENT 32
/* SoC interface registers base address */
#define BSEC_BASE 0x5c005000
#define ETZPC_BASE 0x5c007000
#define CRYP1_BASE 0x54001000
#define GIC_BASE 0xa0021000ul
#define GPIOA_BASE 0x50002000
#define GPIOB_BASE 0x50003000
#define GPIOC_BASE 0x50004000
#define GPIOD_BASE 0x50005000
#define GPIOE_BASE 0x50006000
#define GPIOF_BASE 0x50007000
#define GPIOG_BASE 0x50008000
#define GPIOH_BASE 0x50009000
#define GPIOI_BASE 0x5000a000
#define GPIOJ_BASE 0x5000b000
#define GPIOK_BASE 0x5000c000
#define GPIOZ_BASE 0x54004000
#define HASH1_BASE 0x54002000
#define I2C4_BASE 0x5c002000
#define I2C6_BASE 0x5c009000
#define IWDG1_BASE 0x5c003000
#define IWDG2_BASE 0x5a002000
#define PWR_BASE 0x50001000
#define RCC_BASE 0x50000000
#define RNG1_BASE 0x54003000
#define RTC_BASE 0x5c004000
#define SPI6_BASE 0x5c001000
#define TAMP_BASE 0x5c00a000
#define UART1_BASE 0x5c000000
#define UART2_BASE 0x4000e000
#define UART3_BASE 0x4000f000
#define UART4_BASE 0x40010000
#define UART5_BASE 0x40011000
#define UART6_BASE 0x44003000
#define UART7_BASE 0x40018000
#define UART8_BASE 0x40019000
/* Console configuration */
#define STM32MP1_DEBUG_USART_BASE UART4_BASE
#define GIC_SPI_UART4 84
#define CONSOLE_UART_BASE STM32MP1_DEBUG_USART_BASE
#define CONSOLE_UART_SIZE 1024
/* BSEC OTP resources */
#define STM32MP1_OTP_MAX_ID 0x5FU
#define STM32MP1_UPPER_OTP_START 0x20U
#define OTP_MAX_SIZE (STM32MP1_OTP_MAX_ID + 1U)
#define DATA0_OTP 0
#define PART_NUMBER_OTP 1
#define MONOTONIC_OTP 4
#define NAND_OTP 9
#define UID0_OTP 13
#define UID1_OTP 14
#define UID2_OTP 15
#define HW2_OTP 18
#define DATA0_OTP_SECURED_POS 6
/* GIC resources */
#define GIC_SIZE 0x2000
#define GICC_OFFSET 0x1000
#define GICD_OFFSET 0x0000
#define GIC_NON_SEC_SGI_0 0
#define GIC_SEC_SGI_0 8
#define GIC_SEC_SGI_1 9
#define TARGET_CPU0_GIC_MASK BIT(0)
#define TARGET_CPU1_GIC_MASK BIT(1)
#define TARGET_CPUS_GIC_MASK GENMASK_32(CFG_TEE_CORE_NB_CORE - 1, 0)
/*
* GPIO banks: 11 non secure banks (A to K) and 1 secure bank (Z)
* Bank register's base address is computed from the bank ID listed here.
*/
#define GPIOS_NSEC_COUNT 11
#define GPIOS_NSEC_BASE GPIOA_BASE
#define GPIOS_NSEC_SIZE (GPIOS_NSEC_COUNT * SMALL_PAGE_SIZE)
#define STM32MP1_GPIOZ_MAX_COUNT 1
#define STM32MP1_GPIOZ_PIN_MAX_COUNT 8
#define GPIO_BANK_OFFSET 0x1000U
/* Bank IDs used in GPIO driver API */
#define GPIO_BANK_A 0U
#define GPIO_BANK_B 1U
#define GPIO_BANK_C 2U
#define GPIO_BANK_D 3U
#define GPIO_BANK_E 4U
#define GPIO_BANK_F 5U
#define GPIO_BANK_G 6U
#define GPIO_BANK_H 7U
#define GPIO_BANK_I 8U
#define GPIO_BANK_J 9U
#define GPIO_BANK_K 10U
#define GPIO_BANK_Z 25U
/* TAMP resources */
#define TAMP_BKP_REGISTER_OFF 0x100
/* USART/UART resources */
#define USART1_BASE UART1_BASE
#define USART2_BASE UART2_BASE
#define USART3_BASE UART3_BASE
#define USART6_BASE UART6_BASE
#endif /*PLATFORM_CONFIG_H*/