blob: b6a3c44d11e40757b9c1980aad4a7556ff7cb429 [file] [log] [blame]
Bo Lv092e8de2022-04-24 21:40:10 +08001/*
2 * Copyright (c) 2021-2022 Amlogic, Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#ifndef __SOC_H
8#define __SOC_H
benlong.zhoub408b352022-06-20 19:54:36 +08009#ifndef __ASM
10#include "FreeRTOSConfig.h"
11#include "riscv_const.h"
12#include "irq.h"
13#include "register.h"
Bo Lv092e8de2022-04-24 21:40:10 +080014#endif
15
bangzheng.liu68c01152022-09-29 16:57:22 +080016#define SOC_ECLIC_NUM_INTERRUPTS 32
benlong.zhoub408b352022-06-20 19:54:36 +080017#define SOC_TIMER_FREQ configCPU_CLOCK_HZ
18#define SOC_ECLIC_CTRL_ADDR 0x0C000000UL
19#define SOC_TIMER_CTRL_ADDR 0x02000000UL
20#define SOC_PMP_BASE 0xff100000UL
21#define SOC_LOCAL_SRAM_BASE 0x10000000UL
22#define SRAM_BEGIN SOC_LOCAL_SRAM_BASE
23#define SRAM_SIZE (0x20000)//(96*1024)
24#define SRAM_END (SRAM_BEGIN + SRAM_SIZE)
25#define IO_BASE 0xff000000UL
26#define IO_SIZE 0x00100000
27#define IO_BEGIN (IO_BASE)
28#define IO_END (IO_BASE + IO_SIZE)
29
bangzheng.liu873a8142024-10-18 14:06:18 +080030/* There're more than 255 interrupts in this chip, each interrupt
31 * mapping need at least 9 bits, so each register has only two
32 * regions to map the interrupt.
33 */
34#define AOCPU_IRQ_NUMS_ABOVE_255
bangzheng.liu4d71f922022-09-29 16:12:20 +080035
Bo Lv092e8de2022-04-24 21:40:10 +080036/*SoC/Shadow register mapping*/
benlong.zhoub408b352022-06-20 19:54:36 +080037#define VRTC_PARA_REG SYSCTRL_STATUS_REG2
38#define VRTC_STICKY_REG SYSCTRL_STICKY_REG2
Bo Lv092e8de2022-04-24 21:40:10 +080039
benlong.zhoub408b352022-06-20 19:54:36 +080040#define TIMERE_LOW_REG SYSCTRL_TIMERE
41#define TIMERE_HIG_REG SYSCTRL_TIMERE_HI
42#define WAKEUP_REASON_STICK_REG SYSCTRL_STICKY_REG7
43#define FSM_TRIGER_CTRL SYSCTRL_TIMERB_CTRL
44#define FSM_TRIGER_SRC SYSCTRL_TIMERB
Bo Lv092e8de2022-04-24 21:40:10 +080045
benlong.zhoub408b352022-06-20 19:54:36 +080046#define TIMER_CLK_SEL_SYS_CLK 0
47#define TIMER_CLK_SEL_1US 1
48#define TIMER_CLK_SEL_10US 2
49#define TIMER_CLK_SEL_100US 3
50#define TIMER_MODE_IRQ_PERIO (1 << 6)
51#define TIMER_EN (1 << 7)
52
53#define UART_PORT_CONS UART_A_WFIFO
54#define SYSCTRL_TIMER SYSCTRL_TIMERJ
55#define SYSTICK_TIMER_CTRL SYSCTRL_TIMERJ_CTRL
56#define SYSTICK_TIMER_CTRL_PARM (TIMER_MODE_IRQ_PERIO | TIMER_EN | TIMER_CLK_SEL_1US)
57#define DSP_FSM_TRIGER_CTRL SYSCTRL_TIMERI_CTRL
58#define DSP_FSM_TRIGER_SRC SYSCTRL_TIMERI
59
Bo Lv092e8de2022-04-24 21:40:10 +080060#endif