1d6aed566Sopenharmony_ci/* 2d6aed566Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3d6aed566Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d6aed566Sopenharmony_ci * you may not use this file except in compliance with the License. 5d6aed566Sopenharmony_ci * You may obtain a copy of the License at 6d6aed566Sopenharmony_ci * 7d6aed566Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d6aed566Sopenharmony_ci * 9d6aed566Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d6aed566Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d6aed566Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d6aed566Sopenharmony_ci * See the License for the specific language governing permissions and 13d6aed566Sopenharmony_ci * limitations under the License. 14d6aed566Sopenharmony_ci */ 15d6aed566Sopenharmony_ci 16d6aed566Sopenharmony_ci#ifndef _TARGET_CONFIG_H 17d6aed566Sopenharmony_ci#define _TARGET_CONFIG_H 18d6aed566Sopenharmony_ci 19d6aed566Sopenharmony_ci 20d6aed566Sopenharmony_ci#ifdef __cplusplus 21d6aed566Sopenharmony_ci#if __cplusplus 22d6aed566Sopenharmony_ciextern "C" { 23d6aed566Sopenharmony_ci#endif /* __cplusplus */ 24d6aed566Sopenharmony_ci#endif /* __cplusplus */ 25d6aed566Sopenharmony_ci#define IRQ_SPI_BASE 32 26d6aed566Sopenharmony_ci 27d6aed566Sopenharmony_ci#define OS_SYS_CLOCK 50000000 28d6aed566Sopenharmony_ci#define SYS_CTRL_REG_BASE IO_DEVICE_ADDR(0x12020000) 29d6aed566Sopenharmony_ci#define REG_SC_CTRL 0 30d6aed566Sopenharmony_ci 31d6aed566Sopenharmony_ci/* memory */ 32d6aed566Sopenharmony_ci#define CACHE_ALIGNED_SIZE 64 33d6aed566Sopenharmony_ci 34d6aed566Sopenharmony_ci/* physical memory base and size */ 35d6aed566Sopenharmony_ci#define DDR_MEM_ADDR 0x40000000 36d6aed566Sopenharmony_ci#define DDR_MEM_SIZE 0x40000000 37d6aed566Sopenharmony_ci 38d6aed566Sopenharmony_ci/* Peripheral register address base and size */ 39d6aed566Sopenharmony_ci#define PERIPH_PMM_BASE 0x00000000 40d6aed566Sopenharmony_ci#define PERIPH_PMM_SIZE 0x0F000000 41d6aed566Sopenharmony_ci 42d6aed566Sopenharmony_ci#define SYS_MEM_SIZE_DEFAULT 0x4000000 43d6aed566Sopenharmony_ci 44d6aed566Sopenharmony_ci 45d6aed566Sopenharmony_ci/* hwi */ 46d6aed566Sopenharmony_ci/** 47d6aed566Sopenharmony_ci * Maximum number of supported hardware devices that generate hardware interrupts. 48d6aed566Sopenharmony_ci * The maximum number of hardware devices that generate hardware interrupts is 128. 49d6aed566Sopenharmony_ci */ 50d6aed566Sopenharmony_ci#define OS_HWI_MAX_NUM 96 51d6aed566Sopenharmony_ci 52d6aed566Sopenharmony_ci/** 53d6aed566Sopenharmony_ci * Maximum interrupt number. 54d6aed566Sopenharmony_ci */ 55d6aed566Sopenharmony_ci#define OS_HWI_MAX ((OS_HWI_MAX_NUM) - 1) 56d6aed566Sopenharmony_ci 57d6aed566Sopenharmony_ci/** 58d6aed566Sopenharmony_ci * Minimum interrupt number. 59d6aed566Sopenharmony_ci */ 60d6aed566Sopenharmony_ci#define OS_HWI_MIN 0 61d6aed566Sopenharmony_ci/** 62d6aed566Sopenharmony_ci * Maximum usable interrupt number. 63d6aed566Sopenharmony_ci */ 64d6aed566Sopenharmony_ci#define OS_USER_HWI_MAX OS_HWI_MAX 65d6aed566Sopenharmony_ci/** 66d6aed566Sopenharmony_ci * Minimum usable interrupt number. 67d6aed566Sopenharmony_ci */ 68d6aed566Sopenharmony_ci#define OS_USER_HWI_MIN OS_HWI_MIN 69d6aed566Sopenharmony_ci 70d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_CNTPSIRQ (IRQ_PPI_BASE + 13) 71d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_CNTPNSIRQ (IRQ_PPI_BASE + 14) 72d6aed566Sopenharmony_ci#define OS_TICK_INT_NUM NUM_HAL_INTERRUPT_CNTPSIRQ // use secure physical timer for now 73d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_TIMER0 37 74d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_TIMER3 38 75d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_UART0 (IRQ_SPI_BASE + 1) 76d6aed566Sopenharmony_ci 77d6aed566Sopenharmony_ci/* gic config */ 78d6aed566Sopenharmony_ci#define IRQ_PPI_BASE 16 79d6aed566Sopenharmony_ci#define GIC_BASE_ADDR IO_DEVICE_ADDR(0x08000000) 80d6aed566Sopenharmony_ci#define GICD_OFFSET 0x00000 /* interrupt distributor offset */ 81d6aed566Sopenharmony_ci#define GICC_OFFSET 0x10000 /* CPU interface register offset */ 82d6aed566Sopenharmony_ci 83d6aed566Sopenharmony_ci/* timer config */ 84d6aed566Sopenharmony_ci#define BIT(n) (1U << (n)) 85d6aed566Sopenharmony_ci#define TIMER0_ENABLE BIT(16) 86d6aed566Sopenharmony_ci#define TIMER1_ENABLE BIT(17) 87d6aed566Sopenharmony_ci#define TIMER2_ENABLE BIT(18) 88d6aed566Sopenharmony_ci#define TIMER3_ENABLE BIT(19) 89d6aed566Sopenharmony_ci 90d6aed566Sopenharmony_ci#define TIMER0_REG_BASE IO_DEVICE_ADDR(0x12000000) 91d6aed566Sopenharmony_ci#define TIMER1_REG_BASE IO_DEVICE_ADDR(0x12000020) 92d6aed566Sopenharmony_ci#define TIMER2_REG_BASE IO_DEVICE_ADDR(0x12001000) 93d6aed566Sopenharmony_ci#define TIMER3_REG_BASE IO_DEVICE_ADDR(0x12001020) 94d6aed566Sopenharmony_ci 95d6aed566Sopenharmony_ci#define TIMER_TICK_REG_BASE TIMER0_REG_BASE /* timer for tick */ 96d6aed566Sopenharmony_ci#define TIMER_TICK_ENABLE TIMER0_ENABLE 97d6aed566Sopenharmony_ci#define TIMER_TIME_REG_BASE TIMER1_REG_BASE /* timer for time */ 98d6aed566Sopenharmony_ci#define TIMER_TIME_ENABLE TIMER1_ENABLE 99d6aed566Sopenharmony_ci#define HRTIMER_TIMER_REG_BASE TIMER3_REG_BASE /* timer for hrtimer */ 100d6aed566Sopenharmony_ci#define HRTIMER_TIMER_ENABLE TIMER3_ENABLE 101d6aed566Sopenharmony_ci 102d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_TIMER NUM_HAL_INTERRUPT_TIMER0 103d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_HRTIMER NUM_HAL_INTERRUPT_TIMER3 104d6aed566Sopenharmony_ci 105d6aed566Sopenharmony_ci#define TIMER_LOAD 0x0 106d6aed566Sopenharmony_ci#define TIMER_VALUE 0x4 107d6aed566Sopenharmony_ci#define TIMER_CONTROL 0x8 108d6aed566Sopenharmony_ci#define TIMER_INT_CLR 0xc 109d6aed566Sopenharmony_ci#define TIMER_RIS 0x10 110d6aed566Sopenharmony_ci#define TIMER_MIS 0x14 111d6aed566Sopenharmony_ci#define TIMER_BGLOAD 0x18 112d6aed566Sopenharmony_ci 113d6aed566Sopenharmony_ci/* uart config */ 114d6aed566Sopenharmony_ci#define UART0_REG_BASE IO_DEVICE_ADDR(0x09000000) 115d6aed566Sopenharmony_ci#define TTY_DEVICE "/dev/uartdev-0" 116d6aed566Sopenharmony_ci#define UART_REG_BASE UART0_REG_BASE 117d6aed566Sopenharmony_ci#define NUM_HAL_INTERRUPT_UART NUM_HAL_INTERRUPT_UART0 118d6aed566Sopenharmony_ci 119d6aed566Sopenharmony_ci#ifdef __cplusplus 120d6aed566Sopenharmony_ci#if __cplusplus 121d6aed566Sopenharmony_ci} 122d6aed566Sopenharmony_ci#endif /* __cplusplus */ 123d6aed566Sopenharmony_ci#endif /* __cplusplus */ 124d6aed566Sopenharmony_ci 125d6aed566Sopenharmony_ci#endif 126