1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//! SG2002 / CV181x SoC 外设 MMIO **物理基址** 一览。
//!
//! 常量按物理地址升序排列。各驱动模块通过 `pub use crate::soc::…` 保持原有路径的兼容性;
//! 新代码请优先使用本模块中的常量。
// =============================================================================
// 0x020B_xxxx — 多核 / 安全子系统
// =============================================================================
/// 安全子系统(协处理器启动控制)
pub const SEC_SYS_BASE: usize = 0x020B_0000;
// =============================================================================
// 0x0300_xxxx — 系统 / 时钟 / 复位 / 引脚复用 / IOBLK / USB PHY
// =============================================================================
/// TOP 模块(系统顶层控制寄存器)
pub const TOP_BASE: usize = 0x0300_0000;
/// FMUX(引脚功能复用)
pub const FMUX_BASE: usize = 0x0300_1000;
/// IOBLK(Active Domain:G1 / G7 / G10 / G12 共用基址,组内见 [`IOBLK_G*_OFFSET`])
pub const IOBLK_BASE: usize = 0x0300_1800;
/// IOBLK G1 组偏移(相对 [`IOBLK_BASE`])
pub const IOBLK_G1_OFFSET: usize = 0x000;
/// IOBLK G7 组偏移
pub const IOBLK_G7_OFFSET: usize = 0x100;
/// IOBLK G10 组偏移
pub const IOBLK_G10_OFFSET: usize = 0x200;
/// IOBLK G12 组偏移
pub const IOBLK_G12_OFFSET: usize = 0x400;
/// 时钟发生器(`clock-controller`,`cvitek,cv181x-clk`)
pub const CLKGEN_BASE: usize = 0x0300_2000;
/// 复位控制器(含 SOFT_RSTN_0~3、SOFT_CPU_RSTN 等)
pub const RSTC_BASE: usize = 0x0300_3000;
/// `RSTC` 内 `SOFT_CPU_RSTN` 寄存器偏移
pub const RSTC_SOFT_CPU_RSTN_OFFSET: usize = 0x024;
/// CPU 软复位寄存器绝对地址([`RSTC_BASE`] + [`RSTC_SOFT_CPU_RSTN_OFFSET`])
pub const SOFT_CPU_RSTN_ADDR: usize = RSTC_BASE + RSTC_SOFT_CPU_RSTN_OFFSET;
/// CV182x 片内 USB2 PHY(DTS `usb@04340000` 第二段 `reg`,物理基址见本常量)
pub const CV182X_USB2_PHY_BASE: usize = 0x0300_6000;
// =============================================================================
// 0x0302_xxxx — GPIO
// =============================================================================
/// GPIO0 (GPIOA),Active Domain
pub const GPIO0_BASE: usize = 0x0302_0000;
/// GPIO1 (GPIOB),Active Domain
pub const GPIO1_BASE: usize = 0x0302_1000;
/// GPIO2 (GPIOC),Active Domain
pub const GPIO2_BASE: usize = 0x0302_2000;
/// GPIO3 (GPIOD),Active Domain
pub const GPIO3_BASE: usize = 0x0302_3000;
// =============================================================================
// 0x0306_xxxx — PWM
// =============================================================================
/// PWM0 控制器
pub const PWM0_BASE: usize = 0x0306_0000;
/// PWM1 控制器
pub const PWM1_BASE: usize = 0x0306_1000;
/// PWM2 控制器
pub const PWM2_BASE: usize = 0x0306_2000;
/// PWM3 控制器
pub const PWM3_BASE: usize = 0x0306_3000;
// =============================================================================
// 0x0400_xxxx — I2C / 以太网
// =============================================================================
/// I2C0,Active Domain
pub const I2C0_BASE: usize = 0x0400_0000;
/// I2C1,Active Domain
pub const I2C1_BASE: usize = 0x0401_0000;
/// I2C2,Active Domain
pub const I2C2_BASE: usize = 0x0402_0000;
/// I2C3,Active Domain
pub const I2C3_BASE: usize = 0x0403_0000;
/// I2C4,Active Domain
pub const I2C4_BASE: usize = 0x0404_0000;
/// 板载 GMAC(DTS `ethernet@4070000`,物理基址见本常量)
pub const ETH_BASE: usize = 0x0407_0000;
// =============================================================================
// 0x043x_xxxx — SD/MMC / USB (DWC2)
// =============================================================================
/// SDIO0 控制器
pub const SD_DRIVER_BASE: usize = 0x0431_0000;
/// DWC2 USB OTG 控制器物理基址(DTS `usb@04340000` 第一段 `reg`)
pub const DWC2_BASE: usize = 0x0434_0000;
// =============================================================================
// 0x0502_xxxx — No-die / RTC 域
// =============================================================================
/// RTCSYS_GPIO,No-die Domain
pub const RTCSYS_GPIO_BASE: usize = 0x0502_1000;
/// IOBLK GRTC 组(No-die / RTC 域)
pub const IOBLK_GRTC_BASE: usize = 0x0502_7000;
/// RTCSYS_I2C,No-die Domain
pub const RTCSYS_I2C_BASE: usize = 0x0502_B000;