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