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