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 7*c3cf06f1SAntonio Nino Diaz #ifndef HI3798CV200_H 8*c3cf06f1SAntonio Nino Diaz #define HI3798CV200_H 9e35d0edbSJorge Ramirez-Ortiz 1059149bbeSVictor Chong #include <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) 41e35d0edbSJorge Ramirez-Ortiz #define REG_SC_GEN12 (0x00B0) 42e35d0edbSJorge Ramirez-Ortiz 43e35d0edbSJorge Ramirez-Ortiz /* CRG */ 44e35d0edbSJorge Ramirez-Ortiz #define REG_BASE_CRG (0xF8A22000) 45e35d0edbSJorge Ramirez-Ortiz #define REG_CPU_LP (0x48) 46e35d0edbSJorge Ramirez-Ortiz #define REG_CPU_RST (0x50) 47e35d0edbSJorge Ramirez-Ortiz #define REG_PERI_CRG39 (0x9C) 48e35d0edbSJorge Ramirez-Ortiz #define REG_PERI_CRG40 (0xA0) 49e35d0edbSJorge Ramirez-Ortiz 50e35d0edbSJorge Ramirez-Ortiz /* MCI */ 51e35d0edbSJorge Ramirez-Ortiz #define REG_BASE_MCI (0xF9830000) 52e35d0edbSJorge Ramirez-Ortiz #define MCI_CDETECT (0x50) 53e35d0edbSJorge Ramirez-Ortiz #define MCI_VERID (0x6C) 54e35d0edbSJorge Ramirez-Ortiz #define MCI_VERID_VALUE (0x5342250A) 55e35d0edbSJorge Ramirez-Ortiz #define MCI_VERID_VALUE2 (0x5342270A) 56e35d0edbSJorge Ramirez-Ortiz 57e35d0edbSJorge Ramirez-Ortiz /* EMMC */ 58e35d0edbSJorge Ramirez-Ortiz #define REG_EMMC_PERI_CRG REG_PERI_CRG40 59e35d0edbSJorge Ramirez-Ortiz #define REG_SDCARD_PERI_CRG REG_PERI_CRG39 60e35d0edbSJorge Ramirez-Ortiz #define EMMC_CLK_MASK (0x7 << 8) 61e35d0edbSJorge Ramirez-Ortiz #define EMMC_SRST_REQ (0x1 << 4) 62e35d0edbSJorge Ramirez-Ortiz #define EMMC_CKEN (0x1 << 1) 63e35d0edbSJorge Ramirez-Ortiz #define EMMC_BUS_CKEN (0x1 << 0) 64e35d0edbSJorge Ramirez-Ortiz #define EMMC_CLK_100M (0 << 8) 65e35d0edbSJorge Ramirez-Ortiz #define EMMC_CLK_50M (1 << 8) 66e35d0edbSJorge Ramirez-Ortiz #define EMMC_CLK_25M (2 << 8) 67e35d0edbSJorge Ramirez-Ortiz 6859149bbeSVictor Chong #define EMMC_DESC_SIZE U(0x00100000) /* 1MB */ 69e35d0edbSJorge Ramirez-Ortiz #define EMMC_INIT_PARAMS(base) \ 70eba1b6b3SHaojian Zhuang { .bus_width = MMC_BUS_WIDTH_8, \ 71e35d0edbSJorge Ramirez-Ortiz .clk_rate = 25 * 1000 * 1000, \ 7259149bbeSVictor Chong .desc_base = (base), \ 73e35d0edbSJorge Ramirez-Ortiz .desc_size = EMMC_DESC_SIZE, \ 74eba1b6b3SHaojian Zhuang .flags = MMC_FLAG_CMD23, \ 75e35d0edbSJorge Ramirez-Ortiz .reg_base = REG_BASE_MCI, \ 76e35d0edbSJorge Ramirez-Ortiz } 77e35d0edbSJorge Ramirez-Ortiz 78e35d0edbSJorge Ramirez-Ortiz /* GIC-400 */ 79e35d0edbSJorge Ramirez-Ortiz #define GICD_BASE (0xF1001000) 80e35d0edbSJorge Ramirez-Ortiz #define GICC_BASE (0xF1002000) 81e35d0edbSJorge Ramirez-Ortiz #define GICR_BASE (0xF1000000) 82e35d0edbSJorge Ramirez-Ortiz 83e35d0edbSJorge Ramirez-Ortiz /* FIQ platform related define */ 84e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_0 8 85e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_1 9 86e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_2 10 87e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_3 11 88e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_4 12 89e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_5 13 90e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_6 14 91e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_SGI_7 15 92e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_PPI_0 29 93e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_TIMER0 60 94e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_TIMER1 50 95e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_TIMER2 52 96e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_TIMER3 88 97e35d0edbSJorge Ramirez-Ortiz #define HISI_IRQ_SEC_AXI 110 98e35d0edbSJorge Ramirez-Ortiz 99e35d0edbSJorge Ramirez-Ortiz /* Watchdog */ 100e35d0edbSJorge Ramirez-Ortiz #define HISI_WDG0_BASE (0xF8A2C000) 101e35d0edbSJorge Ramirez-Ortiz 102d45a1c30SJiancheng Xue #define HISI_TZPC_BASE (0xF8A80000) 103d45a1c30SJiancheng Xue #define HISI_TZPC_SEC_ATTR_CTRL (HISI_TZPC_BASE + 0x10) 104d45a1c30SJiancheng Xue 105*c3cf06f1SAntonio Nino Diaz #endif /* HI3798CV200_H */ 106