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