1e2a65959SJimmy Huang /* 2e2a65959SJimmy Huang * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. 3e2a65959SJimmy Huang * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 5e2a65959SJimmy Huang */ 6e2a65959SJimmy Huang 7*c3cf06f1SAntonio Nino Diaz #ifndef MT8173_DEF_H 8*c3cf06f1SAntonio Nino Diaz #define MT8173_DEF_H 9e2a65959SJimmy Huang 10e2a65959SJimmy Huang #if RESET_TO_BL31 11e2a65959SJimmy Huang #error "MT8173 is incompatible with RESET_TO_BL31!" 12e2a65959SJimmy Huang #endif 13e2a65959SJimmy Huang 14e2a65959SJimmy Huang #define MT8173_PRIMARY_CPU 0x0 15e2a65959SJimmy Huang 16e2a65959SJimmy Huang /* Register base address */ 17e2a65959SJimmy Huang #define IO_PHYS (0x10000000) 18e2a65959SJimmy Huang #define INFRACFG_AO_BASE (IO_PHYS + 0x1000) 19a1e0c01fSJimmy Huang #define SRAMROM_SEC_BASE (IO_PHYS + 0x1800) 20e2a65959SJimmy Huang #define PERI_CON_BASE (IO_PHYS + 0x3000) 21e2a65959SJimmy Huang #define GPIO_BASE (IO_PHYS + 0x5000) 22e2a65959SJimmy Huang #define SPM_BASE (IO_PHYS + 0x6000) 23e2a65959SJimmy Huang #define RGU_BASE (IO_PHYS + 0x7000) 24e2a65959SJimmy Huang #define PMIC_WRAP_BASE (IO_PHYS + 0xD000) 25a1e0c01fSJimmy Huang #define DEVAPC0_BASE (IO_PHYS + 0xE000) 26e2a65959SJimmy Huang #define MCUCFG_BASE (IO_PHYS + 0x200000) 27b99d961cSJimmy Huang #define APMIXED_BASE (IO_PHYS + 0x209000) 28e2a65959SJimmy Huang #define TRNG_BASE (IO_PHYS + 0x20F000) 297ace1cc0SYi Zheng #define CRYPT_BASE (IO_PHYS + 0x210000) 30e2a65959SJimmy Huang #define MT_GIC_BASE (IO_PHYS + 0x220000) 31e2a65959SJimmy Huang #define PLAT_MT_CCI_BASE (IO_PHYS + 0x390000) 32e2a65959SJimmy Huang 33e2a65959SJimmy Huang /* Aggregate of all devices in the first GB */ 34e2a65959SJimmy Huang #define MTK_DEV_RNG0_BASE IO_PHYS 35e2a65959SJimmy Huang #define MTK_DEV_RNG0_SIZE 0x400000 36e2a65959SJimmy Huang #define MTK_DEV_RNG1_BASE (IO_PHYS + 0x1000000) 37e2a65959SJimmy Huang #define MTK_DEV_RNG1_SIZE 0x4000000 38e2a65959SJimmy Huang 39a1e0c01fSJimmy Huang /* SRAMROM related registers */ 40a1e0c01fSJimmy Huang #define SRAMROM_SEC_CTRL (SRAMROM_SEC_BASE + 0x4) 41a1e0c01fSJimmy Huang #define SRAMROM_SEC_ADDR (SRAMROM_SEC_BASE + 0x8) 42a1e0c01fSJimmy Huang 43a1e0c01fSJimmy Huang /* DEVAPC0 related registers */ 44a1e0c01fSJimmy Huang #define DEVAPC0_MAS_SEC_0 (DEVAPC0_BASE + 0x500) 45a1e0c01fSJimmy Huang #define DEVAPC0_APC_CON (DEVAPC0_BASE + 0xF00) 46a1e0c01fSJimmy Huang 47e2a65959SJimmy Huang /******************************************************************************* 48e2a65959SJimmy Huang * UART related constants 49e2a65959SJimmy Huang ******************************************************************************/ 50e2a65959SJimmy Huang #define MT8173_UART0_BASE (IO_PHYS + 0x01002000) 51e2a65959SJimmy Huang #define MT8173_UART1_BASE (IO_PHYS + 0x01003000) 52e2a65959SJimmy Huang #define MT8173_UART2_BASE (IO_PHYS + 0x01004000) 53e2a65959SJimmy Huang #define MT8173_UART3_BASE (IO_PHYS + 0x01005000) 54e2a65959SJimmy Huang 55e2a65959SJimmy Huang #define MT8173_BAUDRATE (115200) 56e2a65959SJimmy Huang #define MT8173_UART_CLOCK (26000000) 57e2a65959SJimmy Huang 58e2a65959SJimmy Huang /******************************************************************************* 59e2a65959SJimmy Huang * System counter frequency related constants 60e2a65959SJimmy Huang ******************************************************************************/ 61e2a65959SJimmy Huang #define SYS_COUNTER_FREQ_IN_TICKS 13000000 62e2a65959SJimmy Huang 63e2a65959SJimmy Huang /******************************************************************************* 64e2a65959SJimmy Huang * GIC-400 & interrupt handling related constants 65e2a65959SJimmy Huang ******************************************************************************/ 66e2a65959SJimmy Huang 67e2a65959SJimmy Huang /* Base MTK_platform compatible GIC memory map */ 68e2a65959SJimmy Huang #define BASE_GICD_BASE (MT_GIC_BASE + 0x1000) 69e2a65959SJimmy Huang #define BASE_GICC_BASE (MT_GIC_BASE + 0x2000) 70e2a65959SJimmy Huang #define BASE_GICR_BASE 0 /* no GICR in GIC-400 */ 71e2a65959SJimmy Huang #define BASE_GICH_BASE (MT_GIC_BASE + 0x4000) 72e2a65959SJimmy Huang #define BASE_GICV_BASE (MT_GIC_BASE + 0x6000) 73e2a65959SJimmy Huang #define INT_POL_CTL0 0x10200620 74e2a65959SJimmy Huang 75e2a65959SJimmy Huang #define GIC_PRIVATE_SIGNALS (32) 76e2a65959SJimmy Huang 77e2a65959SJimmy Huang /******************************************************************************* 78e2a65959SJimmy Huang * CCI-400 related constants 79e2a65959SJimmy Huang ******************************************************************************/ 80e2a65959SJimmy Huang #define PLAT_MT_CCI_CLUSTER0_SL_IFACE_IX 4 81e2a65959SJimmy Huang #define PLAT_MT_CCI_CLUSTER1_SL_IFACE_IX 3 82e2a65959SJimmy Huang 83e2a65959SJimmy Huang /* FIQ platform related define */ 84e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_0 8 85e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_1 9 86e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_2 10 87e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_3 11 88e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_4 12 89e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_5 13 90e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_6 14 91e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_7 15 92e2a65959SJimmy Huang 933fc26aa0SKoan-Sin Tan /* 943fc26aa0SKoan-Sin Tan * Macros for local power states in MTK platforms encoded by State-ID field 953fc26aa0SKoan-Sin Tan * within the power-state parameter. 963fc26aa0SKoan-Sin Tan */ 973fc26aa0SKoan-Sin Tan /* Local power state for power domains in Run state. */ 983fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RUN 0 993fc26aa0SKoan-Sin Tan /* Local power state for retention. Valid only for CPU power domains */ 1003fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RET 1 1013fc26aa0SKoan-Sin Tan /* Local power state for OFF/power-down. Valid for CPU and cluster power 1023fc26aa0SKoan-Sin Tan * domains 1033fc26aa0SKoan-Sin Tan */ 1043fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_OFF 2 1053fc26aa0SKoan-Sin Tan 1069cfd83e9SKoan-Sin Tan #if PSCI_EXTENDED_STATE_ID 1079cfd83e9SKoan-Sin Tan /* 1089cfd83e9SKoan-Sin Tan * Macros used to parse state information from State-ID if it is using the 1099cfd83e9SKoan-Sin Tan * recommended encoding for State-ID. 1109cfd83e9SKoan-Sin Tan */ 1119cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_WIDTH 4 1129cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_MASK ((1 << MTK_LOCAL_PSTATE_WIDTH) - 1) 1139cfd83e9SKoan-Sin Tan 1149cfd83e9SKoan-Sin Tan /* Macros to construct the composite power state */ 1159cfd83e9SKoan-Sin Tan 1169cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 0 */ 1179cfd83e9SKoan-Sin Tan 1189cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \ 1199cfd83e9SKoan-Sin Tan (((lvl0_state) << PSTATE_ID_SHIFT) | ((type) << PSTATE_TYPE_SHIFT)) 1209cfd83e9SKoan-Sin Tan #else 1219cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \ 1229cfd83e9SKoan-Sin Tan (((lvl0_state) << PSTATE_ID_SHIFT) | \ 1239cfd83e9SKoan-Sin Tan ((pwr_lvl) << PSTATE_PWR_LVL_SHIFT) | \ 1249cfd83e9SKoan-Sin Tan ((type) << PSTATE_TYPE_SHIFT)) 1259cfd83e9SKoan-Sin Tan 1269cfd83e9SKoan-Sin Tan #endif /* __PSCI_EXTENDED_STATE_ID__ */ 1279cfd83e9SKoan-Sin Tan 1289cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 1 */ 1299cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type) \ 1309cfd83e9SKoan-Sin Tan (((lvl1_state) << MTK_LOCAL_PSTATE_WIDTH) | \ 1319cfd83e9SKoan-Sin Tan mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type)) 1329cfd83e9SKoan-Sin Tan 1339cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 2 */ 1349cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl2( \ 1359cfd83e9SKoan-Sin Tan lvl2_state, lvl1_state, lvl0_state, pwr_lvl, type) \ 1369cfd83e9SKoan-Sin Tan (((lvl2_state) << (MTK_LOCAL_PSTATE_WIDTH * 2)) | \ 1379cfd83e9SKoan-Sin Tan mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type)) 1389cfd83e9SKoan-Sin Tan 1399cfd83e9SKoan-Sin Tan 140*c3cf06f1SAntonio Nino Diaz #endif /* MT8173_DEF_H */ 141