1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef HI3798CV200_H 8*91f16700Schasinglulu #define HI3798CV200_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <lib/utils_def.h> 11*91f16700Schasinglulu 12*91f16700Schasinglulu /* PL011 */ 13*91f16700Schasinglulu #define PL011_UART0_BASE (0xF8B00000) 14*91f16700Schasinglulu #define PL011_BAUDRATE (115200) 15*91f16700Schasinglulu #define PL011_UART0_CLK_IN_HZ (75000000) 16*91f16700Schasinglulu 17*91f16700Schasinglulu /* Sys Counter */ 18*91f16700Schasinglulu #define SYS_COUNTER_FREQ_IN_TICKS (24000000) 19*91f16700Schasinglulu #define SYS_COUNTER_FREQ_IN_MHZ (24) 20*91f16700Schasinglulu 21*91f16700Schasinglulu /* Timer */ 22*91f16700Schasinglulu #define SEC_TIMER0_BASE (0xF8008000) 23*91f16700Schasinglulu #define TIMER00_LOAD (SEC_TIMER0_BASE + 0x000) 24*91f16700Schasinglulu #define TIMER00_VALUE (SEC_TIMER0_BASE + 0x004) 25*91f16700Schasinglulu #define TIMER00_CONTROL (SEC_TIMER0_BASE + 0x008) 26*91f16700Schasinglulu #define TIMER00_BGLOAD (SEC_TIMER0_BASE + 0x018) 27*91f16700Schasinglulu 28*91f16700Schasinglulu #define SEC_TIMER2_BASE (0xF8009000) 29*91f16700Schasinglulu #define TIMER20_LOAD (SEC_TIMER2_BASE + 0x000) 30*91f16700Schasinglulu #define TIMER20_VALUE (SEC_TIMER2_BASE + 0x004) 31*91f16700Schasinglulu #define TIMER20_CONTROL (SEC_TIMER2_BASE + 0x008) 32*91f16700Schasinglulu #define TIMER20_BGLOAD (SEC_TIMER2_BASE + 0x018) 33*91f16700Schasinglulu 34*91f16700Schasinglulu /* GPIO */ 35*91f16700Schasinglulu #define GPIO_MAX (13) 36*91f16700Schasinglulu #define GPIO_BASE(x) (x != 5 ? \ 37*91f16700Schasinglulu 0xf820000 + x * 0x1000 : 0xf8004000) 38*91f16700Schasinglulu 39*91f16700Schasinglulu /* SCTL */ 40*91f16700Schasinglulu #define REG_BASE_SCTL (0xF8000000) 41*91f16700Schasinglulu #define REG_SC_GEN12 (0x00B0) 42*91f16700Schasinglulu 43*91f16700Schasinglulu /* CRG */ 44*91f16700Schasinglulu #define REG_BASE_CRG (0xF8A22000) 45*91f16700Schasinglulu #define REG_CPU_LP (0x48) 46*91f16700Schasinglulu #define REG_CPU_RST (0x50) 47*91f16700Schasinglulu #define REG_PERI_CRG39 (0x9C) 48*91f16700Schasinglulu #define REG_PERI_CRG40 (0xA0) 49*91f16700Schasinglulu 50*91f16700Schasinglulu /* MCI */ 51*91f16700Schasinglulu #define REG_BASE_MCI (0xF9830000) 52*91f16700Schasinglulu #define MCI_CDETECT (0x50) 53*91f16700Schasinglulu #define MCI_VERID (0x6C) 54*91f16700Schasinglulu #define MCI_VERID_VALUE (0x5342250A) 55*91f16700Schasinglulu #define MCI_VERID_VALUE2 (0x5342270A) 56*91f16700Schasinglulu 57*91f16700Schasinglulu /* EMMC */ 58*91f16700Schasinglulu #define REG_EMMC_PERI_CRG REG_PERI_CRG40 59*91f16700Schasinglulu #define REG_SDCARD_PERI_CRG REG_PERI_CRG39 60*91f16700Schasinglulu #define EMMC_CLK_MASK (0x7 << 8) 61*91f16700Schasinglulu #define EMMC_SRST_REQ (0x1 << 4) 62*91f16700Schasinglulu #define EMMC_CKEN (0x1 << 1) 63*91f16700Schasinglulu #define EMMC_BUS_CKEN (0x1 << 0) 64*91f16700Schasinglulu #define EMMC_CLK_100M (0 << 8) 65*91f16700Schasinglulu #define EMMC_CLK_50M (1 << 8) 66*91f16700Schasinglulu #define EMMC_CLK_25M (2 << 8) 67*91f16700Schasinglulu 68*91f16700Schasinglulu #define EMMC_DESC_SIZE U(0x00100000) /* 1MB */ 69*91f16700Schasinglulu #define EMMC_INIT_PARAMS(base) \ 70*91f16700Schasinglulu { .bus_width = MMC_BUS_WIDTH_8, \ 71*91f16700Schasinglulu .clk_rate = 25 * 1000 * 1000, \ 72*91f16700Schasinglulu .desc_base = (base), \ 73*91f16700Schasinglulu .desc_size = EMMC_DESC_SIZE, \ 74*91f16700Schasinglulu .flags = MMC_FLAG_CMD23, \ 75*91f16700Schasinglulu .reg_base = REG_BASE_MCI, \ 76*91f16700Schasinglulu } 77*91f16700Schasinglulu 78*91f16700Schasinglulu /* GIC-400 */ 79*91f16700Schasinglulu #define GICD_BASE (0xF1001000) 80*91f16700Schasinglulu #define GICC_BASE (0xF1002000) 81*91f16700Schasinglulu #define GICR_BASE (0xF1000000) 82*91f16700Schasinglulu 83*91f16700Schasinglulu /* FIQ platform related define */ 84*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_0 8 85*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_1 9 86*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_2 10 87*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_3 11 88*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_4 12 89*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_5 13 90*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_6 14 91*91f16700Schasinglulu #define HISI_IRQ_SEC_SGI_7 15 92*91f16700Schasinglulu #define HISI_IRQ_SEC_PPI_0 29 93*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER0 60 94*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER1 50 95*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER2 52 96*91f16700Schasinglulu #define HISI_IRQ_SEC_TIMER3 88 97*91f16700Schasinglulu #define HISI_IRQ_SEC_AXI 110 98*91f16700Schasinglulu 99*91f16700Schasinglulu /* Watchdog */ 100*91f16700Schasinglulu #define HISI_WDG0_BASE (0xF8A2C000) 101*91f16700Schasinglulu 102*91f16700Schasinglulu #define HISI_TZPC_BASE (0xF8A80000) 103*91f16700Schasinglulu #define HISI_TZPC_SEC_ATTR_CTRL (HISI_TZPC_BASE + 0x10) 104*91f16700Schasinglulu 105*91f16700Schasinglulu #endif /* HI3798CV200_H */ 106