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