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 /******************************************************************************* 84e2a65959SJimmy Huang * WDT related constants 85e2a65959SJimmy Huang ******************************************************************************/ 86e2a65959SJimmy Huang #define MTK_WDT_BASE (RGU_BASE + 0) 87e2a65959SJimmy Huang #define MTK_WDT_SWRST (MTK_WDT_BASE + 0x0014) 88e2a65959SJimmy Huang 89e2a65959SJimmy Huang #define MTK_WDT_MODE_DUAL_MODE 0x0040 90e2a65959SJimmy Huang #define MTK_WDT_MODE_IRQ 0x0008 91e2a65959SJimmy Huang #define MTK_WDT_MODE_KEY 0x22000000 92e2a65959SJimmy Huang #define MTK_WDT_MODE_EXTEN 0x0004 93e2a65959SJimmy Huang #define MTK_WDT_SWRST_KEY 0x1209 94e2a65959SJimmy Huang 95e2a65959SJimmy Huang /* FIQ platform related define */ 96e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_0 8 97e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_1 9 98e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_2 10 99e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_3 11 100e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_4 12 101e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_5 13 102e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_6 14 103e2a65959SJimmy Huang #define MT_IRQ_SEC_SGI_7 15 104e2a65959SJimmy Huang 1053fc26aa0SKoan-Sin Tan /* 1063fc26aa0SKoan-Sin Tan * Macros for local power states in MTK platforms encoded by State-ID field 1073fc26aa0SKoan-Sin Tan * within the power-state parameter. 1083fc26aa0SKoan-Sin Tan */ 1093fc26aa0SKoan-Sin Tan /* Local power state for power domains in Run state. */ 1103fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RUN 0 1113fc26aa0SKoan-Sin Tan /* Local power state for retention. Valid only for CPU power domains */ 1123fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_RET 1 1133fc26aa0SKoan-Sin Tan /* Local power state for OFF/power-down. Valid for CPU and cluster power 1143fc26aa0SKoan-Sin Tan * domains 1153fc26aa0SKoan-Sin Tan */ 1163fc26aa0SKoan-Sin Tan #define MTK_LOCAL_STATE_OFF 2 1173fc26aa0SKoan-Sin Tan 1189cfd83e9SKoan-Sin Tan #if PSCI_EXTENDED_STATE_ID 1199cfd83e9SKoan-Sin Tan /* 1209cfd83e9SKoan-Sin Tan * Macros used to parse state information from State-ID if it is using the 1219cfd83e9SKoan-Sin Tan * recommended encoding for State-ID. 1229cfd83e9SKoan-Sin Tan */ 1239cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_WIDTH 4 1249cfd83e9SKoan-Sin Tan #define MTK_LOCAL_PSTATE_MASK ((1 << MTK_LOCAL_PSTATE_WIDTH) - 1) 1259cfd83e9SKoan-Sin Tan 1269cfd83e9SKoan-Sin Tan /* Macros to construct the composite power state */ 1279cfd83e9SKoan-Sin Tan 1289cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 0 */ 1299cfd83e9SKoan-Sin Tan 1309cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \ 1319cfd83e9SKoan-Sin Tan (((lvl0_state) << PSTATE_ID_SHIFT) | ((type) << PSTATE_TYPE_SHIFT)) 1329cfd83e9SKoan-Sin Tan #else 1339cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type) \ 1349cfd83e9SKoan-Sin Tan (((lvl0_state) << PSTATE_ID_SHIFT) | \ 1359cfd83e9SKoan-Sin Tan ((pwr_lvl) << PSTATE_PWR_LVL_SHIFT) | \ 1369cfd83e9SKoan-Sin Tan ((type) << PSTATE_TYPE_SHIFT)) 1379cfd83e9SKoan-Sin Tan 1389cfd83e9SKoan-Sin Tan #endif /* __PSCI_EXTENDED_STATE_ID__ */ 1399cfd83e9SKoan-Sin Tan 1409cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 1 */ 1419cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type) \ 1429cfd83e9SKoan-Sin Tan (((lvl1_state) << MTK_LOCAL_PSTATE_WIDTH) | \ 1439cfd83e9SKoan-Sin Tan mtk_make_pwrstate_lvl0(lvl0_state, pwr_lvl, type)) 1449cfd83e9SKoan-Sin Tan 1459cfd83e9SKoan-Sin Tan /* Make composite power state parameter till power level 2 */ 1469cfd83e9SKoan-Sin Tan #define mtk_make_pwrstate_lvl2( \ 1479cfd83e9SKoan-Sin Tan lvl2_state, lvl1_state, lvl0_state, pwr_lvl, type) \ 1489cfd83e9SKoan-Sin Tan (((lvl2_state) << (MTK_LOCAL_PSTATE_WIDTH * 2)) | \ 1499cfd83e9SKoan-Sin Tan mtk_make_pwrstate_lvl1(lvl1_state, lvl0_state, pwr_lvl, type)) 1509cfd83e9SKoan-Sin Tan 1519cfd83e9SKoan-Sin Tan 152*c3cf06f1SAntonio Nino Diaz #endif /* MT8173_DEF_H */ 153